]> git.ipfire.org Git - thirdparty/kernel/linux.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)
committerIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Tue, 10 Jun 2025 07:44:38 +0000 (10:44 +0300)
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>
drivers/platform/x86/dell/dell_rbu.c

index 7b019fb72e86fdd5b1b1f7306f665f3e9321a8d3..722979b19e0e4480bb50999751eed3e2f5cf127b 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);
 
                /*