]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
nbd: Improve the documentation of the locking assumptions
authorBart Van Assche <bvanassche@acm.org>
Fri, 10 May 2024 20:23:11 +0000 (13:23 -0700)
committerRoxana Nicolescu <roxana.nicolescu@canonical.com>
Fri, 2 Aug 2024 14:27:23 +0000 (16:27 +0200)
BugLink: https://bugs.launchpad.net/bugs/2075154
[ Upstream commit 2a6751e052ab4789630bc889c814037068723bc1 ]

Document locking assumptions with lockdep_assert_held() instead of source
code comments. The advantage of lockdep_assert_held() is that it is
verified at runtime if lockdep is enabled in the kernel config.

Cc: Christoph Hellwig <hch@lst.de>
Cc: Josef Bacik <jbacik@fb.com>
Cc: Yu Kuai <yukuai3@huawei.com>
Cc: Markus Pargmann <mpa@pengutronix.de>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Link: https://lore.kernel.org/r/20240510202313.25209-4-bvanassche@acm.org
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Stable-dep-of: e56d4b633fff ("nbd: Fix signal handling")
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Manuel Diewald <manuel.diewald@canonical.com>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
drivers/block/nbd.c

index b7c332528ed7a7cd548fa4678bff210f354925ab..ff3de0ef9f53d182af71980b3141a8fa2d09cbb1 100644 (file)
@@ -567,7 +567,6 @@ static inline int was_interrupted(int result)
        return result == -ERESTARTSYS || result == -EINTR;
 }
 
-/* always call with the tx_lock held */
 static int nbd_send_cmd(struct nbd_device *nbd, struct nbd_cmd *cmd, int index)
 {
        struct request *req = blk_mq_rq_from_pdu(cmd);
@@ -584,6 +583,9 @@ static int nbd_send_cmd(struct nbd_device *nbd, struct nbd_cmd *cmd, int index)
        u32 nbd_cmd_flags = 0;
        int sent = nsock->sent, skip = 0;
 
+       lockdep_assert_held(&cmd->lock);
+       lockdep_assert_held(&nsock->tx_lock);
+
        iov_iter_kvec(&from, ITER_SOURCE, &iov, 1, sizeof(request));
 
        type = req_to_nbd_cmd_type(req);
@@ -994,6 +996,8 @@ static int nbd_handle_cmd(struct nbd_cmd *cmd, int index)
        struct nbd_sock *nsock;
        int ret;
 
+       lockdep_assert_held(&cmd->lock);
+
        config = nbd_get_config_unlocked(nbd);
        if (!config) {
                dev_err_ratelimited(disk_to_dev(nbd->disk),