On Wednesday 17 April 2013 11:03:09 Benjamin Tissoires wrote: > +static void appleir_remove(struct hid_device *hid) > +{ > + struct appleir *appleir = hid_get_drvdata(hid); > + del_timer_sync(&appleir->key_up_timer); > + hid_hw_stop(hid); > + kfree(appleir); > +} Hi, this looks like a race condition. If you get input between del_timer_sync() and hid_hw_stop() the timer may be restarted. You need to stop the hw first. Regards Oliver -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html