idxd_dev(idxd_dev)) { alt_drv = driver_find("idxd", bus); @@ -54,13 +62,20 @@ static ssize_t bind_store(struct device_ alt_drv = driver_find("user", bus); } if (!alt_drv) - return -ENODEV; + goto err_put_dev; rc = device_driver_attach(alt_drv, dev); if (rc < 0) - return rc; + goto err_put_dev; + + put_device(dev); return count; + +err_put_dev: + put_device(dev); + + return rc; } static DRIVER_ATTR_IGNORE_LOCKDEP(bind, 0200, NULL, bind_store); [PATCH 6.6 082/254] dmaengine: idxd: fix device leaks on compat bind and unbindGreg Kroah-Hartman undefinedstable@vger.kernel.org undefined undefined undefined undefined undefined”