diff options
Diffstat (limited to 'block/scsi_ioctl.c')
-rw-r--r-- | block/scsi_ioctl.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/block/scsi_ioctl.c b/block/scsi_ioctl.c index 625e3e471d65..26487972ac54 100644 --- a/block/scsi_ioctl.c +++ b/block/scsi_ioctl.c | |||
@@ -323,12 +323,14 @@ static int sg_io(struct request_queue *q, struct gendisk *bd_disk, | |||
323 | 323 | ||
324 | if (hdr->iovec_count) { | 324 | if (hdr->iovec_count) { |
325 | size_t iov_data_len; | 325 | size_t iov_data_len; |
326 | struct iovec *iov; | 326 | struct iovec *iov = NULL; |
327 | 327 | ||
328 | ret = rw_copy_check_uvector(-1, hdr->dxferp, hdr->iovec_count, | 328 | ret = rw_copy_check_uvector(-1, hdr->dxferp, hdr->iovec_count, |
329 | 0, NULL, &iov); | 329 | 0, NULL, &iov); |
330 | if (ret < 0) | 330 | if (ret < 0) { |
331 | kfree(iov); | ||
331 | goto out; | 332 | goto out; |
333 | } | ||
332 | 334 | ||
333 | iov_data_len = ret; | 335 | iov_data_len = ret; |
334 | ret = 0; | 336 | ret = 0; |