diff options
Diffstat (limited to 'drivers/scsi/sg.c')
-rw-r--r-- | drivers/scsi/sg.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c index 9d7b7db75e4b..503ab8b46c0b 100644 --- a/drivers/scsi/sg.c +++ b/drivers/scsi/sg.c | |||
@@ -787,8 +787,14 @@ sg_common_write(Sg_fd * sfp, Sg_request * srp, | |||
787 | return k; /* probably out of space --> ENOMEM */ | 787 | return k; /* probably out of space --> ENOMEM */ |
788 | } | 788 | } |
789 | if (atomic_read(&sdp->detaching)) { | 789 | if (atomic_read(&sdp->detaching)) { |
790 | if (srp->bio) | 790 | if (srp->bio) { |
791 | if (srp->rq->cmd != srp->rq->__cmd) | ||
792 | kfree(srp->rq->cmd); | ||
793 | |||
791 | blk_end_request_all(srp->rq, -EIO); | 794 | blk_end_request_all(srp->rq, -EIO); |
795 | srp->rq = NULL; | ||
796 | } | ||
797 | |||
792 | sg_finish_rem_req(srp); | 798 | sg_finish_rem_req(srp); |
793 | return -ENODEV; | 799 | return -ENODEV; |
794 | } | 800 | } |