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>
prev parent reply other threads:[~2026-09-15 3:01 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-15 1:53 Taylor Bates
2026-09-15 3:01 ` Hangbin Liu [this message]
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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®