Avoid dangling pointer in scsi_requeue_command()
authorBart Van Assche <bvanassche@acm.org>
Fri, 29 Jun 2012 15:34:26 +0000 (15:34 +0000)
committerPaul Gortmaker <paul.gortmaker@windriver.com>
Mon, 10 Feb 2014 21:11:36 +0000 (16:11 -0500)
commit425f11f628631c26ebc4dfe0dabb77e0eb4643af
tree8d4ec30a2cbbd89264588aec6c39f37b43ba119d
parent1f16241465b7dbe61a8abe70f732bf031c4f41c2
Avoid dangling pointer in scsi_requeue_command()

commit 940f5d47e2f2e1fa00443921a0abf4822335b54d upstream.

When we call scsi_unprep_request() the command associated with the request
gets destroyed and therefore drops its reference on the device.  If this was
the only reference, the device may get released and we end up with a NULL
pointer deref when we call blk_requeue_request.

Reported-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Mike Christie <michaelc@cs.wisc.edu>
Reviewed-by: Tejun Heo <tj@kernel.org>
[jejb: enhance commend and add commit log for stable]
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
drivers/scsi/scsi_lib.c