bpftool: Fix truncated netlink dumps
authorJakub Kicinski <kuba@kernel.org>
Tue, 17 Feb 2026 19:41:50 +0000 (11:41 -0800)
committerAlexei Starovoitov <ast@kernel.org>
Wed, 18 Feb 2026 00:54:03 +0000 (16:54 -0800)
Netlink requires that the recv buffer used during dumps is at least
min(PAGE_SIZE, 8k) (see the man page). Otherwise the messages will
get truncated. Make sure bpftool follows this requirement, avoid
missing information on systems with large pages.

Acked-by: Quentin Monnet <qmo@kernel.org>
Fixes: 7084566a236f ("tools/bpftool: Remove libbpf_internal.h usage in bpftool")
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Link: https://lore.kernel.org/r/20260217194150.734701-1-kuba@kernel.org
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
tools/bpf/bpftool/net.c
tools/lib/bpf/netlink.c

index f25d66c..974189d 100644 (file)
@@ -156,7 +156,7 @@ static int netlink_recv(int sock, __u32 nl_pid, __u32 seq,
        bool multipart = true;
        struct nlmsgerr *err;
        struct nlmsghdr *nh;
-       char buf[4096];
+       char buf[8192];
        int len, ret;
 
        while (multipart) {
@@ -201,6 +201,9 @@ static int netlink_recv(int sock, __u32 nl_pid, __u32 seq,
                                        return ret;
                        }
                }
+
+               if (len)
+                       p_err("Invalid message or trailing data in Netlink response: %d bytes left", len);
        }
        ret = 0;
 done:
index c997e69..c9a78fb 100644 (file)
@@ -143,7 +143,7 @@ static int libbpf_netlink_recv(int sock, __u32 nl_pid, int seq,
        struct nlmsghdr *nh;
        int len, ret;
 
-       ret = alloc_iov(&iov, 4096);
+       ret = alloc_iov(&iov, 8192);
        if (ret)
                goto done;
 
@@ -212,6 +212,8 @@ start:
                                }
                        }
                }
+               if (len)
+                       pr_warn("Invalid message or trailing data in Netlink response: %d bytes left\n", len);
        }
        ret = 0;
 done: