--- l/drivers/base/firmware_loader/fallback.c +++ f/drivers/base/firmware_loader/fallback.c @@ -64,6 +64,7 @@ void kill_pending_fw_fallback_reqs(bool mutex_unlock(&fw_lock); } +static DEFINE_MUTEX(fw_load_sysfs_mutex); /** * fw_load_sysfs_fallback() - load a firmware via the sysfs fallback mechanism * @fw_sysfs: firmware sysfs information for the firmware to load @@ -82,6 +83,7 @@ static int fw_load_sysfs_fallback(struct fw_priv->is_paged_buf = true; dev_set_uevent_suppress(f_dev, true); + mutex_lock(&fw_load_sysfs_mutex); retval = device_add(f_dev); if (retval) { @@ -124,6 +126,7 @@ out: device_del(f_dev); err_put_dev: put_device(f_dev); + mutex_unlock(&fw_load_sysfs_mutex); return retval; }