Skip to content

Commit

Permalink
lib/libnetlink: ensure a minimum of 32KB for the buffer used in rtnl_…
Browse files Browse the repository at this point in the history
…recvmsg()

In the past, we tried to increase the buffer size up to 32 KB in order
to reduce number of syscalls per dump.

Commit 2d34851 ("lib/libnetlink: re malloc buff if size is not enough")
brought the size back to 4KB because the kernel can not know the application
is ready to receive bigger requests.

See kernel commits 9063e21fb026 ("netlink: autosize skb lengthes") and
d35c99ff77ec ("netlink: do not enter direct reclaim from netlink_dump()")
for more details.

Fixes: 2d34851 ("lib/libnetlink: re malloc buff if size is not enough")
Signed-off-by: Eric Dumazet <[email protected]>
Cc: Hangbin Liu <[email protected]>
Cc: Phil Sutter <[email protected]>
Signed-off-by: Stephen Hemminger <[email protected]>
  • Loading branch information
Eric Dumazet authored and shemminger committed Feb 13, 2019
1 parent 9e46c5c commit bb5ae62
Showing 1 changed file with 2 additions and 0 deletions.
2 changes: 2 additions & 0 deletions lib/libnetlink.c
Original file line number Diff line number Diff line change
Expand Up @@ -718,6 +718,8 @@ static int rtnl_recvmsg(int fd, struct msghdr *msg, char **answer)
if (len < 0)
return len;

if (len < 32768)
len = 32768;
buf = malloc(len);
if (!buf) {
fprintf(stderr, "malloc error: not enough buffer\n");
Expand Down

0 comments on commit bb5ae62

Please sign in to comment.