Commit feffa5cc authored by Jens Axboe's avatar Jens Axboe
Browse files

nbd: fix setting of 'error' in NBD_DO_IT ioctl



Multiple paths don't set it properly, ensure that we do.

Fixes: 9561a7ad ("nbd: add multi-connection support")
Signed-off-by: default avatarJens Axboe <axboe@fb.com>
parent 63db89ea
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -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);