diff options
author | Bjørn Mork <bjorn@mork.no> | 2012-01-15 08:35:28 +0100 |
---|---|---|
committer | Bjørn Mork <bjorn@mork.no> | 2012-01-15 08:35:28 +0100 |
commit | 6528209ba2c94f3a0ef946b7d808d9a15b30ec50 (patch) | |
tree | c3c1b8bcf8ae19f411c53c2f199f923742bcc256 /drivers/base/firmware_class.c | |
parent | a056fb3687c40b8a1123de1586f491285cb5fb1f (diff) | |
parent | f2ab2a127d480ee20caf8620440ccf13c014447a (diff) |
Merge remote branch 'stable/linux-2.6.32.y' into 2.6.32-mantismedia/2.6.32-mantis
Diffstat (limited to 'drivers/base/firmware_class.c')
-rw-r--r-- | drivers/base/firmware_class.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c index e0e6570ce6b..f6872f99491 100644 --- a/drivers/base/firmware_class.c +++ b/drivers/base/firmware_class.c @@ -161,13 +161,13 @@ static ssize_t firmware_loading_store(struct device *dev, int loading = simple_strtol(buf, NULL, 10); int i; + mutex_lock(&fw_lock); + + if (!fw_priv->fw) + goto out; + switch (loading) { case 1: - mutex_lock(&fw_lock); - if (!fw_priv->fw) { - mutex_unlock(&fw_lock); - break; - } firmware_free_data(fw_priv->fw); memset(fw_priv->fw, 0, sizeof(struct firmware)); /* If the pages are not owned by 'struct firmware' */ @@ -178,7 +178,6 @@ static ssize_t firmware_loading_store(struct device *dev, fw_priv->page_array_size = 0; fw_priv->nr_pages = 0; set_bit(FW_STATUS_LOADING, &fw_priv->status); - mutex_unlock(&fw_lock); break; case 0: if (test_bit(FW_STATUS_LOADING, &fw_priv->status)) { @@ -209,7 +208,8 @@ static ssize_t firmware_loading_store(struct device *dev, fw_load_abort(fw_priv); break; } - +out: + mutex_unlock(&fw_lock); return count; } |