[SCSI] fix oops in scsi_release_buffers()
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>
This commit is contained in:
parent
1832a5862f
commit
b95be99d52
|
@ -118,7 +118,6 @@ static void scsi_unprep_request(struct request *req)
|
||||||
req->flags &= ~REQ_DONTPREP;
|
req->flags &= ~REQ_DONTPREP;
|
||||||
req->special = (req->flags & REQ_SPECIAL) ? cmd->sc_request : NULL;
|
req->special = (req->flags & REQ_SPECIAL) ? cmd->sc_request : NULL;
|
||||||
|
|
||||||
scsi_release_buffers(cmd);
|
|
||||||
scsi_put_command(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
|
* cases (host limits or settings) should run the queue at some
|
||||||
* later time.
|
* later time.
|
||||||
*/
|
*/
|
||||||
scsi_unprep_request(req);
|
|
||||||
spin_lock_irq(q->queue_lock);
|
spin_lock_irq(q->queue_lock);
|
||||||
blk_requeue_request(q, req);
|
blk_requeue_request(q, req);
|
||||||
sdev->device_busy--;
|
sdev->device_busy--;
|
||||||
|
|
Loading…
Reference in New Issue