linux/tools/net/ynl
Jakub Kicinski 0f893f5266 tools: ynl: c: correct reverse decode of empty attrs
[ Upstream commit 964417a5d4 ]

netlink reports which attribute was incorrect by sending back
an attribute offset. Offset points to the address of struct nlattr,
but to interpret the type we also need the nesting path.
Attribute IDs have different meaning in different nests
of the same message.

Correct the condition for "is the offset within current attribute".
ynl_attr_data_len() does not include the attribute header,
so the end offset was off by 4 bytes.

This means that we'd always skip over flags and empty nests.

The devmem tests, for example, issues an invalid request with
empty queue nests, resulting in the following error:

  YNL failed: Kernel error: missing attribute: .queues.ifindex

The message is incorrect, "queues" nest does not have an "ifindex"
attribute defined. With this fix we decend correctly into the nest:

  YNL failed: Kernel error: missing attribute: .queues.id

Fixes: 86878f14d7 ("tools: ynl: user space helpers")
Reviewed-by: Donald Hunter <donald.hunter@gmail.com>
Link: https://patch.msgid.link/20250124012130.1121227-1-kuba@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2025-02-08 09:58:05 +01:00
..
generated tools: ynl: rename make hardclean -> distclean 2024-03-06 12:05:10 +00:00
lib tools: ynl: c: correct reverse decode of empty attrs 2025-02-08 09:58:05 +01:00
samples tools: ynl: error check scanf() in a sample 2024-08-29 12:43:29 -07:00
cli.py tools: ynl: add --list-ops and --list-msgs to CLI 2024-05-03 15:13:21 -07:00
ethtool.py tools: ynl: ethtool.py: Output timestamping statistics from tsinfo-get operation 2024-04-05 22:27:57 -07:00
Makefile tools: net: package libynl for use in selftests 2024-07-02 18:59:33 -07:00
Makefile.deps tcp_metrics: add netlink protocol spec in YAML 2024-07-01 09:44:27 +01:00
requirements.txt tools: ynl: add the Python requirements.txt file 2023-03-24 19:11:02 -07:00
ynl-gen-c.py netdev: avoid CFI problems with sock priv helpers 2025-01-23 17:22:52 +01:00
ynl-gen-rst.py doc: netlink: Fix op pre and post fields in generated .rst 2024-05-29 18:10:26 -07:00
ynl-regen.sh tools: ynl: don't skip regeneration from make targets 2023-11-29 16:07:00 -08:00