From: Josef Bacik Date: Fri, 21 Jul 2017 14:48:14 +0000 (-0400) Subject: nbd: take tx_lock before disconnecting X-Git-Tag: v4.14-rc1~376^2~8 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b4b2aeccf0f0fa1fd356cc72eeda7a2c66c39904;p=platform%2Fkernel%2Flinux-rpi3.git nbd: take tx_lock before disconnecting We need to take the tx_lock so we don't interleave our disconnect request between real data going down the wire. Signed-off-by: Josef Bacik Signed-off-by: Jens Axboe --- diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c index f91e7ac..6aefe9f 100644 --- a/drivers/block/nbd.c +++ b/drivers/block/nbd.c @@ -978,11 +978,15 @@ static void send_disconnects(struct nbd_device *nbd) int i, ret; for (i = 0; i < config->num_connections; i++) { + struct nbd_sock *nsock = config->socks[i]; + iov_iter_kvec(&from, WRITE | ITER_KVEC, &iov, 1, sizeof(request)); + mutex_lock(&nsock->tx_lock); ret = sock_xmit(nbd, i, 1, &from, 0, NULL); if (ret <= 0) dev_err(disk_to_dev(nbd->disk), "Send disconnect failed %d\n", ret); + mutex_unlock(&nsock->tx_lock); } }