diff options
author | Jens Axboe <axboe@fb.com> | 2016-11-22 19:09:45 -0700 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2016-11-22 19:09:45 -0700 |
commit | feffa5cc7b47f38210d4997ceb3fe30881d6c337 (patch) | |
tree | d8c5028be43032e8dc15ff75ec72e0cd36576cdf /drivers/block/nbd.c | |
parent | 63db89eaf0b9bf856c5e079ed5eab5c3f13165c8 (diff) | |
download | linux-feffa5cc7b47f38210d4997ceb3fe30881d6c337.tar.gz linux-feffa5cc7b47f38210d4997ceb3fe30881d6c337.tar.xz |
nbd: fix setting of 'error' in NBD_DO_IT ioctl
Multiple paths don't set it properly, ensure that we do.
Fixes: 9561a7ade0c2 ("nbd: add multi-connection support")
Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'drivers/block/nbd.c')
-rw-r--r-- | drivers/block/nbd.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c index e683e2241cbd..dc722a7adf58 100644 --- a/drivers/block/nbd.c +++ b/drivers/block/nbd.c @@ -745,7 +745,7 @@ static int __nbd_ioctl(struct block_device *bdev, struct nbd_device *nbd, case NBD_DO_IT: { struct recv_thread_args *args; int num_connections = nbd->num_connections; - int error, i; + int error = 0, i; if (nbd->task_recv) return -EBUSY; @@ -754,14 +754,17 @@ static int __nbd_ioctl(struct block_device *bdev, struct nbd_device *nbd, if (num_connections > 1 && !(nbd->flags & NBD_FLAG_CAN_MULTI_CONN)) { dev_err(disk_to_dev(nbd->disk), "server does not support multiple connections per device.\n"); + error = -EINVAL; goto out_err; } set_bit(NBD_RUNNING, &nbd->runtime_flags); blk_mq_update_nr_hw_queues(&nbd->tag_set, nbd->num_connections); args = kcalloc(num_connections, sizeof(*args), GFP_KERNEL); - if (!args) + if (!args) { + error = -ENOMEM; goto out_err; + } nbd->task_recv = current; mutex_unlock(&nbd->config_lock); |