]> xenbits.xensource.com Git - people/aperard/linux.git/commitdiff
RDMA/rtrs-clt: Check strnlen return len in sysfs mpath_policy_store()
authorAlexey Kodanev <aleksei.kodanev@bell-sw.com>
Wed, 21 Feb 2024 11:32:04 +0000 (11:32 +0000)
committerSasha Levin <sashal@kernel.org>
Tue, 26 Mar 2024 22:20:55 +0000 (18:20 -0400)
[ Upstream commit 7a7b7f575a25aa68ee934ee8107294487efcb3fe ]

strnlen() may return 0 (e.g. for "\0\n" string), it's better to
check the result of strnlen() before using 'len - 1' expression
for the 'buf' array index.

Detected using the static analysis tool - Svace.

Fixes: dc3b66a0ce70 ("RDMA/rtrs-clt: Add a minimum latency multipath policy")
Signed-off-by: Alexey Kodanev <aleksei.kodanev@bell-sw.com>
Link: https://lore.kernel.org/r/20240221113204.147478-1-aleksei.kodanev@bell-sw.com
Acked-by: Jack Wang <jinpu.wang@ionos.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/infiniband/ulp/rtrs/rtrs-clt-sysfs.c

index d3c436ead69461a9965afd7590f3551dba2c624d..4aa80c9388f058b745fca05b86f532d6a2b3339a 100644 (file)
@@ -133,7 +133,7 @@ static ssize_t mpath_policy_store(struct device *dev,
 
        /* distinguish "mi" and "min-latency" with length */
        len = strnlen(buf, NAME_MAX);
-       if (buf[len - 1] == '\n')
+       if (len && buf[len - 1] == '\n')
                len--;
 
        if (!strncasecmp(buf, "round-robin", 11) ||