Author: Lars-Peter Clausen <lars@metafoo.de> The data parameters for request_irq and free_irq have to match, otherwise the IRQ wont be freed. The issue has been discovered using the following coccinelle patch: // @r1@ type T; T data; @@ ( request_irq(…, (void *)data) | request_irq(…, data) | request_threaded_irq(…, (void *)data) | request_threaded_irq(…, data) ) @r2@ type r1.T; …