Revert revert of "[SCSI] fix usb storage oops"
authorLinus Torvalds <torvalds@g5.osdl.org>
Mon, 12 Dec 2005 19:25:04 +0000 (11:25 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Mon, 12 Dec 2005 19:25:04 +0000 (11:25 -0800)
commit49d7bc64283970ee83d2c954d04ba00d04e5943d
tree7011cfcf89a09a2ef4fdcd04cb835bfed4b6677a
parent5036805be7b815eb18dcce489d974f3aee4f3841
Revert revert of "[SCSI] fix usb storage oops"

This reverts commit 1b0997f561bf46689cc6e0903f342e9bf2506bf1, which in
turn reverted 34ea80ec6a02ad02e6b9c75c478c18e5880d6713 (which is thus
re-instated).

Quoth James Bottomley:

  "All it's doing is deferring the device_put() from the
   scsi_put_command() to after the scsi_run_queue(), which doesn't fix
   the sleep while atomic problem of the device release method.  In both
   cases we still get the semaphore in atomic context problem which is
   caused by scsi_reap_target() doing a device_del(), which I assumed
   (wrongly) was valid from atomic context."

who also promised to fix scsi_reap_target().

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
drivers/scsi/scsi_lib.c