Follow the lock pattern in the irq_bypass_unregister_*() --- virt/lib/irqbypass.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/virt/lib/irqbypass.c b/virt/lib/irqbypass.c index 6d2fcd6..bb24267 100644 --- a/virt/lib/irqbypass.c +++ b/virt/lib/irqbypass.c @@ -123,6 +123,8 @@ int irq_bypass_register_producer(struct irq_bypass_producer *producer) mutex_unlock(&lock); + module_put(THIS_MODULE); + return 0; } EXPORT_SYMBOL_GPL(irq_bypass_register_producer); @@ -218,6 +220,8 @@ int irq_bypass_register_consumer(struct irq_bypass_consumer *consumer) mutex_unlock(&lock); + module_put(THIS_MODULE); + return 0; } EXPORT_SYMBOL_GPL(irq_bypass_register_consumer); -- 2.7.4