)]}'
{
  "commit": "f436677262a5b524ac87675014c6d4e8ee153029",
  "tree": "c3ab2fb111163ac52eb4999b83d3063ca4fca718",
  "parents": [
    "53ab6709b4d35b1924240854d794482fd7d33d4a"
  ],
  "author": {
    "name": "Nicholas Bellinger",
    "email": "nab@linux-iscsi.org",
    "time": "Thu May 19 20:19:11 2011 -0700"
  },
  "committer": {
    "name": "James Bottomley",
    "email": "jbottomley@parallels.com",
    "time": "Tue May 24 13:00:10 2011 -0400"
  },
  "message": "[SCSI] target: Fix bug with task_sg chained transport_free_dev_tasks release\n\nThis patch addresses a bug in the target core release path for HW\noperation where transport_free_dev_tasks() was incorrectly being called\nfrom transport_lun_remove_cmd() while releasing a se_cmd reference and\ncalling struct target_core_fabric_ops-\u003equeue_data_in().\n\nThis would result in a OOPs with HW target mode when the release of\nse_task-\u003etask_sg[] would happen before pci_unmap_sg() can be called in\nHW target mode fabric module code.  This patch addresses the issue by\nmoving transport_free_dev_tasks() from transport_lun_remove_cmd() into\ntransport_generic_free_cmd(), and adding TRANSPORT_FREE_CMD_INTR and\ntransport_generic_free_cmd_intr() to allow se_cmd descriptor release\nto happen fromfrom within transport_processing_thread() process context\nwhen release of se_cmd is not possible from HW interrupt context.\n\nSigned-off-by: Nicholas Bellinger \u003cnab@linux-iscsi.org\u003e\nCc: stable@kernel.org\nSigned-off-by: James Bottomley \u003cjbottomley@parallels.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "833060e0de5e9aa4be70926c64769958db392c42",
      "old_mode": 33188,
      "old_path": "drivers/target/target_core_transport.c",
      "new_id": "7c87b042375adffb8e8a341a9b8fada639e4645c",
      "new_mode": 33188,
      "new_path": "drivers/target/target_core_transport.c"
    },
    {
      "type": "modify",
      "old_id": "1d3b5b2f0dbcfcb51199b52383bc9fdc07cde746",
      "old_mode": 33188,
      "old_path": "include/target/target_core_base.h",
      "new_id": "561ac99def5af8b51d9db422625dcf1712907267",
      "new_mode": 33188,
      "new_path": "include/target/target_core_base.h"
    },
    {
      "type": "modify",
      "old_id": "59aa464f6ee27b59a084061e22763a855d6341e6",
      "old_mode": 33188,
      "old_path": "include/target/target_core_transport.h",
      "new_id": "24a1c6cb83c348eeeb4e575e460b4e5ac7c36882",
      "new_mode": 33188,
      "new_path": "include/target/target_core_transport.h"
    }
  ]
}
