From: Hangbin Liu <hangbin.liu@linux.dev>
To: Taylor Bates <tmbates12@gmail.com>
Cc: Donald Hunter <donald.hunter@gmail.com>,
Jakub Kicinski <kuba@kernel.org>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>,
Jiri Pirko <jiri@resnulli.us>,
Stanislav Fomichev <sdf@fomichev.me>,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH net-next v2] netlink: specs: fix duplicate if/then keys in netlink-raw schema
Date: Tue, 15 Sep 2026 11:01:06 +0800 [thread overview]
Message-ID: <aqi08tn8GKxqJgVT@fedora> (raw)
In-Reply-To: <20260914-ynl-robustness-v2-1-c6125003b21e@gmail.com>
On Mon, Sep 14, 2026 at 09:53:15PM -0400, Taylor Bates wrote:
> Currently netlink-raw.yaml contains two if keys and two then keys in a
> single mapping that enforces a "len" for "pad" members and a "len" or
> "struct" for binary members.
>
> During validation PyYAML resolves duplicate keys last-wins, so only the
> binary rule survives. Pad has not been validated since commit
> bf08f32c8ced ("tools/net/ynl: Add support for nested structs") added
> the second if/then pair in January 2024.
>
> None of the current specs violate this rule, but this validation should
> not be parser dependent and unspecified. Strict YAML validators such as
> Red Hat's VS Code YAML extension and Adrien Verge's yamllint will
> reject the netlink-raw.yaml schema:
>
> Command:
> $ yamllint Documentation/netlink/netlink-raw.yaml
>
> Output:
> 185:13 error duplication of key "if" in mapping (key-duplicates)
> 189:13 error duplication of key "then" in mapping (key-duplicates)
>
> The following invalid netlink family spec will pass validation in the
> current ynl tooling:
>
> # SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
> ---
> name: minimal-raw
> doc: Minimal netlink-raw family for schema validation testing.
> protocol: netlink-raw
> protonum: 0
>
> definitions:
> -
> name: test-struct
> type: struct
> members:
> -
> name: reserved
> type: pad
> # len intentionally omitted
>
> attribute-sets: []
>
> operations:
> list: []
>
> Signed-off-by: Taylor Bates <tmbates12@gmail.com>
> ---
> This is a repost of patch 1 from the "netlink: fix ynl spec tooling
> robustness bugs" series, reduced to this single fix as requested.
>
> The netlink-raw spec for the Bridge VLAN family that motivated the
> original series will be sent separately once this has landed.
> ---
> Changes in v2:
> - Drop patches 2/4, 3/4 and 4/4 from the series; this schema fix stands
> on its own.
> - Drop the Fixes tag. This is developer tooling only and is not a bug
> that needs to reach stable. The offending commit is now cited in the
> commit message instead.
> - Link to v1: https://patch.msgid.link/20260908-ynl-robustness-v1-0-f255214c0f30@gmail.com
>
> To: Donald Hunter <donald.hunter@gmail.com>
> To: Jakub Kicinski <kuba@kernel.org>
> To: "David S. Miller" <davem@davemloft.net>
> To: Eric Dumazet <edumazet@google.com>
> To: Paolo Abeni <pabeni@redhat.com>
> To: Simon Horman <horms@kernel.org>
> Cc: netdev@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> ---
> Documentation/netlink/netlink-raw.yaml | 31 +++++++++++++++++--------------
> 1 file changed, 17 insertions(+), 14 deletions(-)
>
> diff --git a/Documentation/netlink/netlink-raw.yaml b/Documentation/netlink/netlink-raw.yaml
> index 4c436b59a34b..18ccfe05048a 100644
> --- a/Documentation/netlink/netlink-raw.yaml
> +++ b/Documentation/netlink/netlink-raw.yaml
> @@ -176,20 +176,23 @@ properties:
> struct:
> description: Name of the nested struct type.
> type: string
> - if:
> - properties:
> - type:
> - const: pad
> - then:
> - required: [ len ]
> - if:
> - properties:
> - type:
> - const: binary
> - then:
> - oneOf:
> - - required: [ len ]
> - - required: [ struct ]
> + allOf:
> + -
> + if:
> + properties:
> + type:
> + const: pad
> + then:
> + required: [ len ]
> + -
> + if:
> + properties:
> + type:
> + const: binary
> + then:
> + oneOf:
> + - required: [ len ]
> + - required: [ struct ]
> # End genetlink-legacy
>
> attribute-sets:
>
> ---
> base-commit: 043777e948807b5f335f58a0b9f5ed04bba681cf
> change-id: 20260907-ynl-robustness-d62d9693cc12
>
> Best regards,
> --
> Taylor Bates <tmbates12@gmail.com>
>
Reviewed-by: Hangbin Liu <liuhangbin@kylinos.cn>
next prev parent reply other threads:[~2026-09-15 3:01 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-15 1:53 [PATCH net-next v2] netlink: specs: fix duplicate if/then keys in netlink-raw schema Taylor Bates
2026-09-15 3:01 ` Hangbin Liu [this message]
2026-09-17 8:35 ` Donald Hunter
2026-09-17 22:05 ` tmbates12
2026-09-17 14:20 ` patchwork-bot+netdevbpf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aqi08tn8GKxqJgVT@fedora \
--to=hangbin.liu@linux.dev \
--cc=davem@davemloft.net \
--cc=donald.hunter@gmail.com \
--cc=edumazet@google.com \
--cc=horms@kernel.org \
--cc=jiri@resnulli.us \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=sdf@fomichev.me \
--cc=tmbates12@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.