[SCSI] Fix race between starved list and device removal
authorJames Bottomley <JBottomley@Parallels.com>
Tue, 2 Jul 2013 13:05:26 +0000 (15:05 +0200)
committerJames Bottomley <JBottomley@Parallels.com>
Tue, 9 Jul 2013 11:14:08 +0000 (12:14 +0100)
commite2eb7244bc9e4fd130fc8a961224968e22ba48ee
treea1ba31c44721a9a106967e16b6065d4b98c0abeb
parentfec3c1b4575431e2020c5c6502d18b281925ca45
[SCSI] Fix race between starved list and device removal

scsi_run_queue() examines all SCSI devices that are present on
the starved list. Since scsi_run_queue() unlocks the SCSI host
lock a SCSI device can get removed after it has been removed
from the starved list and before its queue is run. Protect
against that race condition by holding a reference on the
queue while running it.

Reported-by: Chanho Min <chanho.min@lge.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/scsi_lib.c