Skip to content

Commit 6b5eab5

Browse files
chrisbainbridgerafaeljw
authored andcommitted
ACPI / EC: fix NULL pointer dereference in acpi_ec_remove_query_handler()
Use list_for_each_entry_safe for iterating because handler may be freed in the loop. BUG: unable to handle kernel NULL pointer dereference at 000000000000002c IP: [<ffffffff814d69c8>] acpi_ec_put_query_handler+0x7/0x1a Call Trace: acpi_ec_remove_query_handler+0x87/0x97 acpi_smbus_hc_remove+0x2a/0x44 [sbshc] acpi_device_remove+0x7b/0x9a __device_release_driver+0x7e/0x110 driver_detach+0xb0/0xc0 bus_remove_driver+0x54/0xe0 driver_unregister+0x2b/0x60 acpi_bus_unregister_driver+0x10/0x12 acpi_smb_hc_driver_exit+0x10/0x12 [sbshc] SyS_delete_module+0x1b8/0x210 system_call_fastpath+0x12/0x6a Signed-off-by: Chris Bainbridge <[email protected]> Signed-off-by: Rafael J. Wysocki <[email protected]>
1 parent 0f5abd4 commit 6b5eab5

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

drivers/acpi/ec.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -861,7 +861,7 @@ void acpi_ec_remove_query_handler(struct acpi_ec *ec, u8 query_bit)
861861
}
862862
}
863863
mutex_unlock(&ec->mutex);
864-
list_for_each_entry(handler, &free_list, node)
864+
list_for_each_entry_safe(handler, tmp, &free_list, node)
865865
acpi_ec_put_query_handler(handler);
866866
}
867867
EXPORT_SYMBOL_GPL(acpi_ec_remove_query_handler);

0 commit comments

Comments
 (0)