block: fix bogus EFAULT error from SG_IO ioctl
Whenever blk_fill_sghdr_rq fails, its errno code is ignored and changed to EFAULT. This can cause very confusing errors: $ sg_persist -k /dev/sda persistent reservation in: pass through os error: Bad address The fix is trivial, just propagate the return value from blk_fill_sghdr_rq. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Acked-by: Jeff Moyer <jmoyer@redhat.com> Signed-off-by: Jens Axboe <axboe@fb.com>
This commit is contained in:
Родитель
3399a3f746
Коммит
2c4cffe851
|
@ -326,8 +326,8 @@ static int sg_io(struct request_queue *q, struct gendisk *bd_disk,
|
||||||
goto out_put_request;
|
goto out_put_request;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = -EFAULT;
|
ret = blk_fill_sghdr_rq(q, rq, hdr, mode);
|
||||||
if (blk_fill_sghdr_rq(q, rq, hdr, mode))
|
if (ret < 0)
|
||||||
goto out_free_cdb;
|
goto out_free_cdb;
|
||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче