From: David Ahern Date: Thu, 1 Mar 2018 22:43:08 +0000 (-0800) Subject: libnetlink: __rtnl_talk_iov should only loop max iovlen times X-Git-Tag: v4.16.0~36 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3dec72672f7b293ad773568c2c4a0d11fa8c4529;p=thirdparty%2Fiproute2.git libnetlink: __rtnl_talk_iov should only loop max iovlen times William reported ip hanging and bisected to a recent commit for batching allowing more than 1 command to be sent per message. The loop over recvmsg should never cycle more than iovlen times -- 1 response for each command in the message. Fixes: 72a2ff3916e5 ("lib/libnetlink: Add a new function rtnl_talk_iov") Signed-off-by: David Ahern --- diff --git a/lib/libnetlink.c b/lib/libnetlink.c index 8bb1c8d7d..928de1dd1 100644 --- a/lib/libnetlink.c +++ b/lib/libnetlink.c @@ -670,8 +670,9 @@ next: free(buf); if (h->nlmsg_seq == seq) return 0; - else + else if (i < iovlen) goto next; + return 0; } if (rtnl->proto != NETLINK_SOCK_DIAG &&