[lustre-devel] [PATCH 17/20] lnet: fix uninitialize var in choose_ipv4_src()

James Simmons jsimmons at infradead.org
Sat Jun 13 09:27:13 PDT 2020

From: Mr NeilBrown <neilb at suse.de>

choose_ip4_src() test "*ret" without initializing it - and callers do
not (and should not) initialize the var.

Instead of testing "*ret", test "err" - if this is non-zero (it will
be -ENOENT) we want to use the address.  If it is zero, then we only
use the address if it is on the right subnet.

Reported-by: Amir Shehata <ashehata at whamcloud.com>
Fixes: 382731148e24 ("lnet: socklnd: use interface index to track local addr")
WC-bug-id: https://jira.whamcloud.com/browse/LU-10391
Lustre-commit: 8ea895389a92d ("LU-10391 lnet: fix uninitialize var in choose_ipv4_src()")
Signed-off-by: Mr NeilBrown <neilb at suse.de>
Reviewed-on: https://review.whamcloud.com/38823
Reviewed-by: Aurelien Degremont <degremoa at amazon.com>
Reviewed-by: James Simmons <jsimmons at infradead.org>
Reviewed-by: Amir Shehata <ashehata at whamcloud.com>
Reviewed-by: Oleg Drokin <green at whamcloud.com>
Signed-off-by: James Simmons <jsimmons at infradead.org>
 net/lnet/lnet/lib-socket.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/lnet/lnet/lib-socket.c b/net/lnet/lnet/lib-socket.c
index a4db830..e082b52 100644
--- a/net/lnet/lnet/lib-socket.c
+++ b/net/lnet/lnet/lib-socket.c
@@ -158,7 +158,7 @@ int choose_ipv4_src(__u32 *ret, int interface, __u32 dst_ipaddr, struct net *ns)
 		goto out;
 	err = -ENOENT;
 	in_dev_for_each_ifa_rcu(ifa, in_dev) {
-		if (*ret == 0 ||
+		if (err == 0 ||
 		    ((dst_ipaddr ^ ntohl(ifa->ifa_local)) &
 		     ntohl(ifa->ifa_mask)) == 0) {
 			/* This address at least as good as what we

More information about the lustre-devel mailing list