On Wednesday, April 22, 2015 12:25:36 AM Chris Bainbridge wrote: > 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 <chris.bainbridge@xxxxxxxxx> Applied (with a modified subject), thanks! > --- > drivers/acpi/ec.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c > index 220d640..5e8fed4 100644 > --- a/drivers/acpi/ec.c > +++ b/drivers/acpi/ec.c > @@ -861,7 +861,7 @@ void acpi_ec_remove_query_handler(struct acpi_ec *ec, u8 query_bit) > } > } > mutex_unlock(&ec->mutex); > - list_for_each_entry(handler, &free_list, node) > + list_for_each_entry_safe(handler, tmp, &free_list, node) > acpi_ec_put_query_handler(handler); > } > EXPORT_SYMBOL_GPL(acpi_ec_remove_query_handler); > -- I speak only for myself. Rafael J. Wysocki, Intel Open Source Technology Center. -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html