[SCSI] SCSI core: fix leakage of scsi_cmnd's
authorJames Bottomley <jejb@mulgrave.(none)>
Fri, 9 Sep 2005 15:44:16 +0000 (10:44 -0500)
committerJames Bottomley <jejb@mulgrave.(none)>
Fri, 9 Sep 2005 15:44:16 +0000 (10:44 -0500)
commite91442b635be776ea205fba233bdd5bc74b62bc3
treec04066f8d17be121244d870ab9347ca6e8c7cda3
parent286f3e13a1dc7f32407629fbd7aabc8ea78c62b5
[SCSI] SCSI core: fix leakage of scsi_cmnd's

From:  Alan Stern <stern@rowland.harvard.edu>

This patch (as559b) adds a new routine, scsi_unprep_request, which
gets called every place a request is requeued.  (That includes
scsi_queue_insert as well as scsi_requeue_command.)  It also changes
scsi_kill_requests to make it call __scsi_done with result equal to
DID_NO_CONNECT << 16.  (I'm not sure if it's necessary to call
scsi_init_cmd_errh here; maybe you can check on that.)  Finally, the
patch changes the return value from scsi_end_request, to avoid
returning a stale pointer in the case where the request was requeued.
Fortunately the return value is used in only place, and the change
actually simplified it.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Rejections fixed up and
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
drivers/scsi/scsi_lib.c