lib/libnetlink: ensure a minimum of 32KB for the buffer used in rtnl_recvmsg()
In the past, we tried to increase the buffer size up to 32 KB in order to reduce number of syscalls per dump. Commit2d34851cd3("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:2d34851cd3("lib/libnetlink: re malloc buff if size is not enough") Signed-off-by: Eric Dumazet <edumazet@google.com> Cc: Hangbin Liu <liuhangbin@gmail.com> Cc: Phil Sutter <phil@nwl.cc> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
This commit is contained in:
parent
9e46c5c206
commit
bb5ae621d0
|
|
@ -718,6 +718,8 @@ static int rtnl_recvmsg(int fd, struct msghdr *msg, char **answer)
|
||||||
if (len < 0)
|
if (len < 0)
|
||||||
return len;
|
return len;
|
||||||
|
|
||||||
|
if (len < 32768)
|
||||||
|
len = 32768;
|
||||||
buf = malloc(len);
|
buf = malloc(len);
|
||||||
if (!buf) {
|
if (!buf) {
|
||||||
fprintf(stderr, "malloc error: not enough buffer\n");
|
fprintf(stderr, "malloc error: not enough buffer\n");
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue