[PATCH v2 3/5] nbd: remove redundant num_connections boundary checks
- To: josef@toxicpanda.com, axboe@kernel.dk, hch@lst.de, yukuai@kernel.org
- Cc: yi.zhang@huawei.com, chengzhihao1@huawei.com, echo.chenlin@huawei.com, leo.lilong@huaweicloud.com, wangkefeng.wang@huawei.com, linux-block@vger.kernel.org, nbd@other.debian.org
- Subject: [PATCH v2 3/5] nbd: remove redundant num_connections boundary checks
- From: Yang Erkun <yangerkun@huawei.com>
- Date: Thu, 25 Jun 2026 16:44:56 +0800
- Message-id: <[🔎] 20260625084458.4171890-4-yangerkun@huawei.com>
- In-reply-to: <[🔎] 20260625084458.4171890-1-yangerkun@huawei.com>
- References: <[🔎] 20260625084458.4171890-1-yangerkun@huawei.com>
From: Long Li <leo.lilong@huawei.com>
Now that config->socks uses xarray instead of a plain array, explicit
bounds checking against num_connections is no longer necessary.
xa_load() returns NULL for any out-of-range or missing index, and
xa_for_each() is a no-op on an empty xarray, making these guards
redundant.
Signed-off-by: Long Li <leo.lilong@huawei.com>
---
drivers/block/nbd.c | 16 ++++------------
1 file changed, 4 insertions(+), 12 deletions(-)
diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c
index d88bdc97f4d1..409a655c40f0 100644
--- a/drivers/block/nbd.c
+++ b/drivers/block/nbd.c
@@ -1094,7 +1094,7 @@ static int find_fallback(struct nbd_device *nbd, int index)
goto no_fallback;
fallback = nsock->fallback_index;
- if (fallback >= 0 && fallback < config->num_connections) {
+ if (fallback >= 0) {
fallback_nsock = xa_load(&config->socks, fallback);
if (fallback_nsock && !fallback_nsock->dead)
return fallback;
@@ -1149,12 +1149,6 @@ static blk_status_t nbd_handle_cmd(struct nbd_cmd *cmd, int index)
return BLK_STS_IOERR;
}
- if (index >= config->num_connections) {
- dev_err_ratelimited(disk_to_dev(nbd->disk),
- "Attempted send on invalid socket\n");
- nbd_config_put(nbd);
- return BLK_STS_IOERR;
- }
cmd->status = BLK_STS_OK;
again:
nsock = xa_load(&config->socks, index);
@@ -1512,11 +1506,9 @@ static void nbd_config_put(struct nbd_device *nbd)
}
nbd_clear_sock(nbd);
- if (config->num_connections) {
- xa_for_each(&config->socks, i, nsock) {
- sockfd_put(nsock->sock);
- kfree(nsock);
- }
+ xa_for_each(&config->socks, i, nsock) {
+ sockfd_put(nsock->sock);
+ kfree(nsock);
}
xa_destroy(&config->socks);
--
2.52.0
Reply to: