Hi Matthew, On Dec 26, 2007 5:48 PM, Matthew Garrett <mjg59@xxxxxxxxxxxxx> wrote: > + } else > + printk (KERN_INFO "HP WMI: Unknown response received\n"); > + > + return; No need for empty returns. > +} > + > +static int __init hp_wmi_init(void) > +{ > + int err; > + const struct key_entry *key; > + > + if (!wmi_has_guid(HPWMI_GUID)) { > + printk ("Unable to locate guid\n"); > + return -ENODEV; > + } > + > + err = wmi_install_notify_handler (hp_wmi_notify, NULL); > + if (err) > + return err; > + > + hp_wmi_input_dev = input_allocate_device(); > + > + hp_wmi_input_dev->name = "HP WMI hotkeys"; > + hp_wmi_input_dev->phys = "wmi/input0"; > + hp_wmi_input_dev->id.bustype = BUS_HOST; > + hp_wmi_input_dev->getkeycode = hp_wmi_getkeycode; > + hp_wmi_input_dev->setkeycode = hp_wmi_setkeycode; > + There is no sysfs device to attach the input device to, by any chance? > + for (key = hp_wmi_keymap; key->type != KE_END; key++) { > + set_bit(EV_KEY, hp_wmi_input_dev->evbit); > + set_bit(key->keycode, hp_wmi_input_dev->keybit); > + } > + > + err = input_register_device (hp_wmi_input_dev); > + > + if (err) { > + input_free_device (hp_wmi_input_dev); > + return err; > + } > + > + return 0; > +} > + > +static void __exit hp_wmi_exit(void) > +{ > + wmi_remove_notify_handler(); > + input_unregister_device (hp_wmi_input_dev); > + input_free_device (hp_wmi_input_dev); Do not call input_free_device after input_unregister_device, it may cause freeing already freed memory. -- Dmitry - 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