diff options
| author | Bart Van Assche <[email protected]> | 2012-06-29 15:33:22 +0000 |
|---|---|---|
| committer | James Bottomley <[email protected]> | 2012-07-20 08:58:40 +0100 |
| commit | 67bd94130015c507011af37858989b199c52e1de (patch) | |
| tree | 9b4bc8ef5c7180d920eae0f95158dc377c38df8c /tools/perf/scripts/python | |
| parent | e81ca6fe85b77109a32489a5db82f575d51dfc98 (diff) | |
[SCSI] Fix device removal NULL pointer dereference
Use blk_queue_dead() to test whether the queue is dead instead
of !sdev. Since scsi_prep_fn() may be invoked concurrently with
__scsi_remove_device(), keep the queuedata (sdev) pointer in
__scsi_remove_device(). This patch fixes a kernel oops that
can be triggered by USB device removal. See also
http://www.spinics.net/lists/linux-scsi/msg56254.html.
Other changes included in this patch:
- Swap the blk_cleanup_queue() and kfree() calls in
scsi_host_dev_release() to make that code easier to grasp.
- Remove the queue dead check from scsi_run_queue() since the
queue state can change anyway at any point in that function
where the queue lock is not held.
- Remove the queue dead check from the start of scsi_request_fn()
since it is redundant with the scsi_device_online() check.
Reported-by: Jun'ichi Nomura <[email protected]>
Signed-off-by: Bart Van Assche <[email protected]>
Reviewed-by: Mike Christie <[email protected]>
Reviewed-by: Tejun Heo <[email protected]>
Cc: <[email protected]>
Signed-off-by: James Bottomley <[email protected]>
Diffstat (limited to 'tools/perf/scripts/python')
0 files changed, 0 insertions, 0 deletions