Skip to content

Commit

Permalink
netdev-genl: fix error codes when outputting XDP features
Browse files Browse the repository at this point in the history
-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 <[email protected]>
Reviewed-by: Eric Dumazet <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Jakub Kicinski <[email protected]>
  • Loading branch information
kuba-moo committed Jun 15, 2024
1 parent c64da10 commit 7ed352d
Showing 1 changed file with 8 additions and 8 deletions.
16 changes: 8 additions & 8 deletions net/core/netdev-genl.c
Original file line number Diff line number Diff line change
Expand Up @@ -59,22 +59,22 @@ XDP_METADATA_KFUNC_xxx
nla_put_u64_64bit(rsp, NETDEV_A_DEV_XDP_RX_METADATA_FEATURES,
xdp_rx_meta, NETDEV_A_DEV_PAD) ||
nla_put_u64_64bit(rsp, NETDEV_A_DEV_XSK_FEATURES,
xsk_features, NETDEV_A_DEV_PAD)) {
genlmsg_cancel(rsp, hdr);
return -EINVAL;
}
xsk_features, NETDEV_A_DEV_PAD))
goto err_cancel_msg;

if (netdev->xdp_features & NETDEV_XDP_ACT_XSK_ZEROCOPY) {
if (nla_put_u32(rsp, NETDEV_A_DEV_XDP_ZC_MAX_SEGS,
netdev->xdp_zc_max_segs)) {
genlmsg_cancel(rsp, hdr);
return -EINVAL;
}
netdev->xdp_zc_max_segs))
goto err_cancel_msg;
}

genlmsg_end(rsp, hdr);

return 0;

err_cancel_msg:
genlmsg_cancel(rsp, hdr);
return -EMSGSIZE;
}

static void
Expand Down

0 comments on commit 7ed352d

Please sign in to comment.