]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - block/scsi_ioctl.c
block: fix SG_IO to return a proper error value
[net-next-2.6.git] / block / scsi_ioctl.c
index 626ee274c5c4fd7d9d989528ff897f3080f81fb1..84b7f8709f413adc294508f5e96eaa9e7a6c6d84 100644 (file)
@@ -217,7 +217,7 @@ static int blk_fill_sghdr_rq(struct request_queue *q, struct request *rq,
 static int blk_complete_sghdr_rq(struct request *rq, struct sg_io_hdr *hdr,
                                 struct bio *bio)
 {
-       int ret = 0;
+       int r, ret = 0;
 
        /*
         * fill in all the output members
@@ -242,7 +242,9 @@ static int blk_complete_sghdr_rq(struct request *rq, struct sg_io_hdr *hdr,
                        ret = -EFAULT;
        }
 
-       blk_rq_unmap_user(bio);
+       r = blk_rq_unmap_user(bio);
+       if (!ret)
+               ret = r;
        blk_put_request(rq);
 
        return ret;