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.
Unified · Split
| @@ -1435,7 +1435,7 @@ static int __verify_queue_reservations(struct device_driver *drv, void *data) · 1434 unmodified lines | ||
| 1435 | 1435 | if (ap_drv->in_use) { |
| 1436 | 1436 | rc = ap_drv->in_use(ap_perms.apm, newaqm); |
| 1437 | 1437 | if (rc) |
| 1438 | − return -EBUSY; | |
| 1438 | + rc = -EBUSY; | |
| 1439 | 1439 | } |
| 1440 | 1440 | |
| 1441 | 1441 | /* release the driver's module */ |