Re: [PATCH net-next 4/6] netlink: specs: rt-route: describe lwtunnel IP options
Hangbin Liu <[email protected]>
| Newsgroups | org.kernel.vger.netdev,dev.linux.lists.sashiko-reviews |
|---|---|
| Message-ID | <aqzwEXWYBQqSfNUu@fedora> |
On Fri, Sep 18, 2026 at 06:36:58AM +0000, [email protected] wrote: > Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider: > - [Medium] netlink: specs: missing byte-order property for lwtunnel-ip-opt-erspan index > - [Low] netlink: specs: missing max-len validation for lwtunnel-ip-opt-geneve data Thanks, I will fix these. > -- > > commit 15d568f88486d1cb50af0dbb912eabab2c37d852 > Author: Hangbin Liu <[email protected]> > > netlink: specs: rt-route: describe lwtunnel IP options > > This commit replaces binary options in lwtunnel-ip and lwtunnel-ip6 with > a nested lwtunnel-ip-opts set. It also adds attribute sets for geneve, vxlan, > and erspan IP options to align with the kernel's definitions in lwtunnel.h. > > > diff --git a/Documentation/netlink/specs/rt-route.yaml b/Documentation/netlink/specs/rt-route.yaml > > index 0e236da140dc5..6030d7cb8d0d1 100644 > > --- a/Documentation/netlink/specs/rt-route.yaml > > +++ b/Documentation/netlink/specs/rt-route.yaml > [ ... ] > > @@ -555,6 +557,59 @@ attribute-sets: > > - > > name: link > > type: u32 > > + - > > + name: lwtunnel-ip-opts > > + name-prefix: lwtunnel-ip-opts- > > + attributes: > > + - > > + name: geneve > > + type: nest > > + nested-attributes: lwtunnel-ip-opt-geneve > > + - > > + name: vxlan > > + type: nest > > + nested-attributes: lwtunnel-ip-opt-vxlan > > + - > > + name: erspan > > + type: nest > > + nested-attributes: lwtunnel-ip-opt-erspan > > + - > > + name: lwtunnel-ip-opt-geneve > > + name-prefix: lwtunnel-ip-opt-geneve- > > + attributes: > > + - > > + name: class > > + type: u16 > > + byte-order: big-endian > > + - > > + name: type > > + type: u8 > > + - > > + name: data > > + type: binary > > [Severity: Low] > Does this binary attribute need a max-len validation check? > > The kernel explicitly enforces a maximum length of 127 bytes for this > attribute in its Netlink policy: > > net/ipv4/ip_tunnel_core.c:geneve_opt_policy[] { > [LWTUNNEL_IP_OPT_GENEVE_DATA] = { .type = NLA_BINARY, .len = 127 }, > } > > Without a corresponding max-len constraint in the spec, auto-generated > tools will not catch oversized attributes locally before transmitting > them to the kernel. > > > + - > > + name: lwtunnel-ip-opt-vxlan > > + name-prefix: lwtunnel-ip-opt-vxlan- > > + attributes: > > + - > > + name: gbp > > + type: u32 > > + - > > + name: lwtunnel-ip-opt-erspan > > + name-prefix: lwtunnel-ip-opt-erspan- > > + attributes: > > + - > > + name: ver > > + type: u8 > > + - > > + name: index > > + type: u32 > > [Severity: Medium] > Will this result in an incorrect ERSPAN index on little-endian architectures? > > The kernel parses this attribute using nla_get_be32(): > > net/ipv4/ip_tunnel_core.c:ip_tun_parse_opts_erspan() { > ... > attr = tb[LWTUNNEL_IP_OPT_ERSPAN_INDEX]; > md->u.index = nla_get_be32(attr); > ... > } > > Since the spec defines index as a u32 without the byte-order: big-endian > property, auto-generated tools will send the value in host byte order. > When run on a little-endian system, the kernel would then read a > byte-swapped, incorrect value, which would break the tunnel configuration. > > > + - > > + name: dir > > + type: u8 > > + - > > + name: hwid > > + type: u8 > > -- > Sashiko AI review · https://sashiko.dev/#/patchset/[email protected]?part=4