mirror of
https://github.com/torvalds/linux.git
synced 2024-11-01 13:03:25 +01:00
tools/net/ynl: Fix extack decoding for netlink-raw
Extack decoding was using a hard-coded msg header size of 20 but netlink-raw has a header size of 16. Use a protocol specific msghdr_size() when decoding the attr offssets. Signed-off-by: Donald Hunter <donald.hunter@gmail.com> Link: https://lore.kernel.org/r/20240306231046.97158-2-donald.hunter@gmail.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
62a1e41602
commit
cecbc52c46
1 changed files with 6 additions and 1 deletions
|
@ -353,6 +353,9 @@ class NetlinkProtocol:
|
|||
raise Exception(f'Multicast group "{mcast_name}" not present in the spec')
|
||||
return mcast_groups[mcast_name].value
|
||||
|
||||
def msghdr_size(self):
|
||||
return 16
|
||||
|
||||
|
||||
class GenlProtocol(NetlinkProtocol):
|
||||
def __init__(self, family_name):
|
||||
|
@ -378,6 +381,8 @@ class GenlProtocol(NetlinkProtocol):
|
|||
raise Exception(f'Multicast group "{mcast_name}" not present in the family')
|
||||
return self.genl_family['mcast'][mcast_name]
|
||||
|
||||
def msghdr_size(self):
|
||||
return super().msghdr_size() + 4
|
||||
|
||||
|
||||
class SpaceAttrs:
|
||||
|
@ -721,7 +726,7 @@ class YnlFamily(SpecFamily):
|
|||
return
|
||||
|
||||
msg = self.nlproto.decode(self, NlMsg(request, 0, op.attr_set))
|
||||
offset = 20 + self._struct_size(op.fixed_header)
|
||||
offset = self.nlproto.msghdr_size() + self._struct_size(op.fixed_header)
|
||||
path = self._decode_extack_path(msg.raw_attrs, op.attr_set, offset,
|
||||
extack['bad-attr-offs'])
|
||||
if path:
|
||||
|
|
Loading…
Reference in a new issue