[SCSI] fix oops in scsi_release_buffers()
authorAlan Stern <stern@rowland.harvard.edu>
Thu, 15 Sep 2005 17:52:51 +0000 (13:52 -0400)
committerJames Bottomley <jejb@mulgrave.(none)>
Sat, 17 Sep 2005 20:24:53 +0000 (15:24 -0500)
I found one other thing that needs to be fixed.  The call to
scsi_release_buffers in scsi_unprep_request causes an oops, because the
sgtable has already been freed in scsi_io_completion.  The following patch
is needed.

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

index 0c6924eecf59e6a34b34dd46479feb9ba7ed3aac..f065cbc1a6e54bcbe81649a201d75cb4707aa671 100644 (file)
@@ -118,7 +118,6 @@ static void scsi_unprep_request(struct request *req)
        req->flags &= ~REQ_DONTPREP;
        req->special = (req->flags & REQ_SPECIAL) ? cmd->sc_request : NULL;
 
-       scsi_release_buffers(cmd);
        scsi_put_command(cmd);
 }
 
@@ -1512,7 +1511,6 @@ static void scsi_request_fn(struct request_queue *q)
         * cases (host limits or settings) should run the queue at some
         * later time.
         */
-       scsi_unprep_request(req);
        spin_lock_irq(q->queue_lock);
        blk_requeue_request(q, req);
        sdev->device_busy--;