Skip to content

Commit 24deac5

Browse files
committed
Merge: dell_rbu: Fix list usage
MR: https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-9/-/merge_requests/7060 The primary goal of this patchset is to fix a panic which can occur during bios update. There other patches are included in order to bring the driver up to date. JIRA: https://issues.redhat.com/browse/RHEL-87406 Signed-off-by: David Arcari <[email protected]> Approved-by: Steve Best <[email protected]> Approved-by: Tony Camuso <[email protected]> Approved-by: CKI KWF Bot <[email protected]> Merged-by: Augusto Caringi <[email protected]>
2 parents 2ddda25 + f061efc commit 24deac5

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

drivers/platform/x86/dell/dell_rbu.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
MODULE_AUTHOR("Abhay Salunke <[email protected]>");
4646
MODULE_DESCRIPTION("Driver for updating BIOS image on DELL systems");
4747
MODULE_LICENSE("GPL");
48-
MODULE_VERSION("3.2");
48+
MODULE_VERSION("3.3");
4949

5050
#define BIOS_SCAN_LIMIT 0xffffffff
5151
#define MAX_IMAGE_LENGTH 16
@@ -91,7 +91,7 @@ static void init_packet_head(void)
9191
rbu_data.imagesize = 0;
9292
}
9393

94-
static int create_packet(void *data, size_t length)
94+
static int create_packet(void *data, size_t length) __must_hold(&rbu_data.lock)
9595
{
9696
struct packet_data *newpacket;
9797
int ordernum = 0;
@@ -292,7 +292,7 @@ static int packet_read_list(char *data, size_t * pread_length)
292292
remaining_bytes = *pread_length;
293293
bytes_read = rbu_data.packet_read_count;
294294

295-
list_for_each_entry(newpacket, (&packet_data_head.list)->next, list) {
295+
list_for_each_entry(newpacket, &packet_data_head.list, list) {
296296
bytes_copied = do_packet_read(pdest, newpacket,
297297
remaining_bytes, bytes_read, &temp_count);
298298
remaining_bytes -= bytes_copied;
@@ -315,14 +315,14 @@ static void packet_empty_list(void)
315315
{
316316
struct packet_data *newpacket, *tmp;
317317

318-
list_for_each_entry_safe(newpacket, tmp, (&packet_data_head.list)->next, list) {
318+
list_for_each_entry_safe(newpacket, tmp, &packet_data_head.list, list) {
319319
list_del(&newpacket->list);
320320

321321
/*
322322
* zero out the RBU packet memory before freeing
323323
* to make sure there are no stale RBU packets left in memory
324324
*/
325-
memset(newpacket->data, 0, rbu_data.packetsize);
325+
memset(newpacket->data, 0, newpacket->length);
326326
set_memory_wb((unsigned long)newpacket->data,
327327
1 << newpacket->ordernum);
328328
free_pages((unsigned long) newpacket->data,
@@ -645,7 +645,7 @@ static int __init dcdrbu_init(void)
645645
spin_lock_init(&rbu_data.lock);
646646

647647
init_packet_head();
648-
rbu_device = platform_device_register_simple("dell_rbu", -1, NULL, 0);
648+
rbu_device = platform_device_register_simple("dell_rbu", PLATFORM_DEVID_NONE, NULL, 0);
649649
if (IS_ERR(rbu_device)) {
650650
pr_err("platform_device_register_simple failed\n");
651651
return PTR_ERR(rbu_device);

0 commit comments

Comments
 (0)