Whamcloud - gitweb
LU-12678 lnet: lnet_startup_lndnet: avoid use-after-free 55/36855/2
authorMr NeilBrown <neilb@suse.de>
Wed, 6 Nov 2019 05:42:34 +0000 (16:42 +1100)
committerOleg Drokin <green@whamcloud.com>
Fri, 10 Jan 2020 07:42:19 +0000 (07:42 +0000)
If lnet_startup_lndni() fails it will free 'ni' (via lnet_ni_free()).
So we mustn't de-reference it in the LASSERT() in that case

Signed-off-by: Mr NeilBrown <neilb@suse.de>
Change-Id: I01e35013e028a8f95f169e25aeb0c344b2310380
Reviewed-on: https://review.whamcloud.com/36855
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Serguei Smirnov <ssmirnov@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lnet/lnet/api-ni.c

index a593597..16ed7b6 100644 (file)
@@ -2375,12 +2375,12 @@ lnet_startup_lndnet(struct lnet_net *net, struct lnet_lnd_tunables *tun)
 
                rc = lnet_startup_lndni(ni, tun);
 
-               LASSERT(ni->ni_net->net_tunables.lct_peer_timeout <= 0 ||
-                       ni->ni_net->net_lnd->lnd_query != NULL);
-
                if (rc < 0)
                        goto failed1;
 
+               LASSERT(ni->ni_net->net_tunables.lct_peer_timeout <= 0 ||
+                       ni->ni_net->net_lnd->lnd_query != NULL);
+
                lnet_ni_addref(ni);
                list_add_tail(&ni->ni_netlist, &local_ni_list);