]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
platform/x86: dell_rbu: Fix list usage
authorStuart Hayes <stuart.w.hayes@gmail.com>
Mon, 9 Jun 2025 18:46:56 +0000 (13:46 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 27 Jun 2025 10:05:33 +0000 (11:05 +0100)
[ Upstream commit 61ce04601e0d8265ec6d2ffa6df5a7e1bce64854 ]

Pass the correct list head to list_for_each_entry*() when looping through
the packet list.

Without this patch, reading the packet data via sysfs will show the data
incorrectly (because it starts at the wrong packet), and clearing the
packet list will result in a NULL pointer dereference.

Fixes: d19f359fbdc6 ("platform/x86: dell_rbu: don't open code list_for_each_entry*()")
Signed-off-by: Stuart Hayes <stuart.w.hayes@gmail.com>
Link: https://lore.kernel.org/r/20250609184659.7210-3-stuart.w.hayes@gmail.com
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/platform/x86/dell/dell_rbu.c

index e9f4b30dcafabffb58f618aec47a9c305c742e73..25a01c728c072b3be1ba90cd368ff48f1c161314 100644 (file)
@@ -292,7 +292,7 @@ static int packet_read_list(char *data, size_t * pread_length)
        remaining_bytes = *pread_length;
        bytes_read = rbu_data.packet_read_count;
 
-       list_for_each_entry(newpacket, (&packet_data_head.list)->next, list) {
+       list_for_each_entry(newpacket, &packet_data_head.list, list) {
                bytes_copied = do_packet_read(pdest, newpacket,
                        remaining_bytes, bytes_read, &temp_count);
                remaining_bytes -= bytes_copied;
@@ -315,7 +315,7 @@ static void packet_empty_list(void)
 {
        struct packet_data *newpacket, *tmp;
 
-       list_for_each_entry_safe(newpacket, tmp, (&packet_data_head.list)->next, list) {
+       list_for_each_entry_safe(newpacket, tmp, &packet_data_head.list, list) {
                list_del(&newpacket->list);
 
                /*