From: Tony Krowiak <akrowiak@xxxxxxxxxxxxx> commit 2f23256c0ea20627c91ea2d468cda945f68c3395 upstream. The AP bus's __verify_queue_reservations function increments the ref count for the device driver passed in as a parameter, but fails to decrement it before returning control to the caller. This will prevents any subsequent removal of the module. Signed-off-by: Tony Krowiak <akrowiak@xxxxxxxxxxxxx> Reported-by: Tony Krowiak <akrowiak@xxxxxxxxxxxxx> Reviewed-by: Harald Freudenberger <freude@xxxxxxxxxxxxx> Fixes: 4f8206b88286 ("s390/ap: driver callback to indicate resource in use") Link: https://lore.kernel.org/r/20220706222619.602094-1-akrowiak@xxxxxxxxxxxxx Cc: stable@xxxxxxxxxxxxxxx [agordeev@xxxxxxxxxxxxx fixed description, added Fixes and Link] Signed-off-by: Alexander Gordeev <agordeev@xxxxxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- drivers/s390/crypto/ap_bus.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- a/drivers/s390/crypto/ap_bus.c +++ b/drivers/s390/crypto/ap_bus.c @@ -1410,7 +1410,7 @@ static int __verify_queue_reservations(s if (ap_drv->in_use) { rc = ap_drv->in_use(ap_perms.apm, newaqm); if (rc) - return -EBUSY; + rc = -EBUSY; } /* release the driver's module */