Re: [PATCH net-next 4/6] netlink: specs: rt-route: describe lwtunnel IP options
From: Hangbin Liu <hidden>
Date: 2026-09-18 08:02:41
Also in:
sashiko-reviews
On Fri, Sep 18, 2026 at 06:36:58AM +0000, sashiko-bot@kernel.org 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 [off-list ref] 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.quoted
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[ ... ]quoted
@@ -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.quoted
+ - + 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.quoted
+ - + name: dir + type: u8 + - + name: hwid + type: u8-- Sashiko AI review · https://sashiko.dev/#/patchset/20260917-ynl_rt_encap-v1-0-fbbe6e680571@kylinos.cn?part=4