When no error is reported in the first iov, do not prematurely return, but process further iovs. This fixes batch processing.
Fixes: c60389e4f9ea ("libnetlink: fix leak and using unused memory on error") Signed-off-by: Petr Machata <pe...@mellanox.com> --- lib/libnetlink.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/libnetlink.c b/lib/libnetlink.c index c0b80ed..9545710 100644 --- a/lib/libnetlink.c +++ b/lib/libnetlink.c @@ -763,6 +763,7 @@ static int __rtnl_talk_iov(struct rtnl_handle *rtnl, struct iovec *iov, msg.msg_iovlen = 1; i = 0; while (1) { +next: status = rtnl_recvmsg(rtnl->fd, &msg, &buf); ++i; @@ -826,6 +827,8 @@ static int __rtnl_talk_iov(struct rtnl_handle *rtnl, struct iovec *iov, else free(buf); + if (i < iovlen) + goto next; return error ? -i : 0; } -- 2.4.11