From 48a9ea82eb30bbbf66cce527c1205d13fbd4eb58 Mon Sep 17 00:00:00 2001 From: Artem Blagodarenko Date: Tue, 25 Aug 2020 06:01:11 -0400 Subject: [PATCH] LU-13950 lnet: do not crash if lnet_sock_getaddr returns error Some issues with network lead to panic in ksocknal_accept rc = lnet_sock_getaddr(sock, true, &peer_ip, &peer_port); LASSERT(rc == 0); /* we succeeded before */ Let's pass this error to the caller. Change-Id: I34d43c19b4e75422db50e7abb02cac3510882b0d hpe-bug-id: LUS-9256 Signed-off-by: Artem Blagodarenko Reviewed-on: https://es-gerrit.dev.cray.com/157753 Reviewed-by: Andriy Skulysh Reviewed-by: Alexander Zarochentsev Tested-by: Alexander Lezhoev Reviewed-by: Chris Horn Reviewed-on: https://review.whamcloud.com/39834 Tested-by: jenkins Reviewed-by: Chris Horn Tested-by: Maloo Reviewed-by: Neil Brown Reviewed-by: Oleg Drokin --- lnet/klnds/socklnd/socklnd.c | 5 ++++- lnet/lnet/acceptor.c | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/lnet/klnds/socklnd/socklnd.c b/lnet/klnds/socklnd/socklnd.c index 35d12d9..e9053fb 100644 --- a/lnet/klnds/socklnd/socklnd.c +++ b/lnet/klnds/socklnd/socklnd.c @@ -743,7 +743,10 @@ ksocknal_accept(struct lnet_ni *ni, struct socket *sock) struct sockaddr_storage peer; rc = lnet_sock_getaddr(sock, true, &peer); - LASSERT(rc == 0); /* we succeeded before */ + if (rc != 0) { + CERROR("Can't determine new connection's address\n"); + return rc; + } LIBCFS_ALLOC(cr, sizeof(*cr)); if (cr == NULL) { diff --git a/lnet/lnet/acceptor.c b/lnet/lnet/acceptor.c index aa8d2e3..f287ae6 100644 --- a/lnet/lnet/acceptor.c +++ b/lnet/lnet/acceptor.c @@ -205,7 +205,10 @@ lnet_accept(struct socket *sock, __u32 magic) LASSERT(sizeof(cr) <= 16); /* not too big for the stack */ rc = lnet_sock_getaddr(sock, true, &peer); - LASSERT(rc == 0); /* we succeeded before */ + if (rc != 0) { + CERROR("Can't determine new connection's address\n"); + return rc; + } if (!lnet_accept_magic(magic, LNET_PROTO_ACCEPTOR_MAGIC)) { -- 1.8.3.1