Skip to content

Commit 7ed352d

Browse files
committed
netdev-genl: fix error codes when outputting XDP features
-EINVAL will interrupt the dump. The correct error to return if we have more data to dump is -EMSGSIZE. Discovered by doing: for i in `seq 80`; do ip link add type veth; done ./cli.py --dbg-small-recv 5300 --spec netdev.yaml --dump dev-get >> /dev/null [...] nl_len = 64 (48) nl_flags = 0x0 nl_type = 19 nl_len = 20 (4) nl_flags = 0x2 nl_type = 3 error: -22 Fixes: d3d854f ("netdev-genl: create a simple family for netdev stuff") Reviewed-by: Amritha Nambiar <amritha.nambiar@intel.com> Reviewed-by: Eric Dumazet <edumazet@google.com> Link: https://lore.kernel.org/r/20240613213044.3675745-1-kuba@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent c64da10 commit 7ed352d

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

net/core/netdev-genl.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -59,22 +59,22 @@ XDP_METADATA_KFUNC_xxx
5959
nla_put_u64_64bit(rsp, NETDEV_A_DEV_XDP_RX_METADATA_FEATURES,
6060
xdp_rx_meta, NETDEV_A_DEV_PAD) ||
6161
nla_put_u64_64bit(rsp, NETDEV_A_DEV_XSK_FEATURES,
62-
xsk_features, NETDEV_A_DEV_PAD)) {
63-
genlmsg_cancel(rsp, hdr);
64-
return -EINVAL;
65-
}
62+
xsk_features, NETDEV_A_DEV_PAD))
63+
goto err_cancel_msg;
6664

6765
if (netdev->xdp_features & NETDEV_XDP_ACT_XSK_ZEROCOPY) {
6866
if (nla_put_u32(rsp, NETDEV_A_DEV_XDP_ZC_MAX_SEGS,
69-
netdev->xdp_zc_max_segs)) {
70-
genlmsg_cancel(rsp, hdr);
71-
return -EINVAL;
72-
}
67+
netdev->xdp_zc_max_segs))
68+
goto err_cancel_msg;
7369
}
7470

7571
genlmsg_end(rsp, hdr);
7672

7773
return 0;
74+
75+
err_cancel_msg:
76+
genlmsg_cancel(rsp, hdr);
77+
return -EMSGSIZE;
7878
}
7979

8080
static void

0 commit comments

Comments
 (0)