diff options
Diffstat (limited to 'drivers/base/firmware_loader/sysfs_upload.c')
| -rw-r--r-- | drivers/base/firmware_loader/sysfs_upload.c | 12 | 
1 files changed, 11 insertions, 1 deletions
| diff --git a/drivers/base/firmware_loader/sysfs_upload.c b/drivers/base/firmware_loader/sysfs_upload.c index 87044d52322a..a0af8f5f13d8 100644 --- a/drivers/base/firmware_loader/sysfs_upload.c +++ b/drivers/base/firmware_loader/sysfs_upload.c @@ -264,6 +264,15 @@ int fw_upload_start(struct fw_sysfs *fw_sysfs)  	return 0;  } +void fw_upload_free(struct fw_sysfs *fw_sysfs) +{ +	struct fw_upload_priv *fw_upload_priv = fw_sysfs->fw_upload_priv; + +	free_fw_priv(fw_sysfs->fw_priv); +	kfree(fw_upload_priv->fw_upload); +	kfree(fw_upload_priv); +} +  /**   * firmware_upload_register() - register for the firmware upload sysfs API   * @module: kernel module of this device @@ -377,6 +386,7 @@ void firmware_upload_unregister(struct fw_upload *fw_upload)  {  	struct fw_sysfs *fw_sysfs = fw_upload->priv;  	struct fw_upload_priv *fw_upload_priv = fw_sysfs->fw_upload_priv; +	struct module *module = fw_upload_priv->module;  	mutex_lock(&fw_upload_priv->lock);  	if (fw_upload_priv->progress == FW_UPLOAD_PROG_IDLE) { @@ -392,6 +402,6 @@ void firmware_upload_unregister(struct fw_upload *fw_upload)  unregister:  	device_unregister(&fw_sysfs->dev); -	module_put(fw_upload_priv->module); +	module_put(module);  }  EXPORT_SYMBOL_GPL(firmware_upload_unregister); | 
