Patch "tools: ynl: c: correct reverse decode of empty attrs" has been added to the 6.13-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    tools: ynl: c: correct reverse decode of empty attrs

to the 6.13-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     tools-ynl-c-correct-reverse-decode-of-empty-attrs.patch
and it can be found in the queue-6.13 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit ea278ec7bbb85a0b7073845ffcd62d6593a87da6
Author: Jakub Kicinski <kuba@xxxxxxxxxx>
Date:   Thu Jan 23 17:21:30 2025 -0800

    tools: ynl: c: correct reverse decode of empty attrs
    
    [ Upstream commit 964417a5d4a06614ef7fb3ae69bb17c91a2dc016 ]
    
    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: 86878f14d71a ("tools: ynl: user space helpers")
    Reviewed-by: Donald Hunter <donald.hunter@xxxxxxxxx>
    Link: https://patch.msgid.link/20250124012130.1121227-1-kuba@xxxxxxxxxx
    Signed-off-by: Jakub Kicinski <kuba@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/tools/net/ynl/lib/ynl.c b/tools/net/ynl/lib/ynl.c
index e16cef160bc2c..ce32cb35007d6 100644
--- a/tools/net/ynl/lib/ynl.c
+++ b/tools/net/ynl/lib/ynl.c
@@ -95,7 +95,7 @@ ynl_err_walk(struct ynl_sock *ys, void *start, void *end, unsigned int off,
 
 	ynl_attr_for_each_payload(start, data_len, attr) {
 		astart_off = (char *)attr - (char *)start;
-		aend_off = astart_off + ynl_attr_data_len(attr);
+		aend_off = (char *)ynl_attr_data_end(attr) - (char *)start;
 		if (aend_off <= off)
 			continue;
 




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux