diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-01-07 15:03:30 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-01-07 15:03:30 -0500 |
commit | 7affca3537d74365128e477b40c529d6f2fe86c8 (patch) | |
tree | 20be92bd240029182fc89c2c4f25401b7715dcae /drivers/base/firmware_class.c | |
parent | 356b95424cfb456e14a59eaa579422ce014c424b (diff) | |
parent | ff4b8a57f0aaa2882d444ca44b2b9b333d22a4df (diff) |
Merge branch 'driver-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core
* 'driver-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (73 commits)
arm: fix up some samsung merge sysdev conversion problems
firmware: Fix an oops on reading fw_priv->fw in sysfs loading file
Drivers:hv: Fix a bug in vmbus_driver_unregister()
driver core: remove __must_check from device_create_file
debugfs: add missing #ifdef HAS_IOMEM
arm: time.h: remove device.h #include
driver-core: remove sysdev.h usage.
clockevents: remove sysdev.h
arm: convert sysdev_class to a regular subsystem
arm: leds: convert sysdev_class to a regular subsystem
kobject: remove kset_find_obj_hinted()
m86k: gpio - convert sysdev_class to a regular subsystem
mips: txx9_sram - convert sysdev_class to a regular subsystem
mips: 7segled - convert sysdev_class to a regular subsystem
sh: dma - convert sysdev_class to a regular subsystem
sh: intc - convert sysdev_class to a regular subsystem
power: suspend - convert sysdev_class to a regular subsystem
power: qe_ic - convert sysdev_class to a regular subsystem
power: cmm - convert sysdev_class to a regular subsystem
s390: time - convert sysdev_class to a regular subsystem
...
Fix up conflicts with 'struct sysdev' removal from various platform
drivers that got changed:
- arch/arm/mach-exynos/cpu.c
- arch/arm/mach-exynos/irq-eint.c
- arch/arm/mach-s3c64xx/common.c
- arch/arm/mach-s3c64xx/cpu.c
- arch/arm/mach-s5p64x0/cpu.c
- arch/arm/mach-s5pv210/common.c
- arch/arm/plat-samsung/include/plat/cpu.h
- arch/powerpc/kernel/sysfs.c
and fix up cpu_is_hotpluggable() as per Greg in include/linux/cpu.h
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 06ed6b4e7df5..3719c94be19c 100644 --- a/drivers/base/firmware_class.c +++ b/drivers/base/firmware_class.c | |||
@@ -226,13 +226,13 @@ static ssize_t firmware_loading_store(struct device *dev, | |||
226 | int loading = simple_strtol(buf, NULL, 10); | 226 | int loading = simple_strtol(buf, NULL, 10); |
227 | int i; | 227 | int i; |
228 | 228 | ||
229 | mutex_lock(&fw_lock); | ||
230 | |||
231 | if (!fw_priv->fw) | ||
232 | goto out; | ||
233 | |||
229 | switch (loading) { | 234 | switch (loading) { |
230 | case 1: | 235 | case 1: |
231 | mutex_lock(&fw_lock); | ||
232 | if (!fw_priv->fw) { | ||
233 | mutex_unlock(&fw_lock); | ||
234 | break; | ||
235 | } | ||
236 | firmware_free_data(fw_priv->fw); | 236 | firmware_free_data(fw_priv->fw); |
237 | memset(fw_priv->fw, 0, sizeof(struct firmware)); | 237 | memset(fw_priv->fw, 0, sizeof(struct firmware)); |
238 | /* If the pages are not owned by 'struct firmware' */ | 238 | /* If the pages are not owned by 'struct firmware' */ |
@@ -243,7 +243,6 @@ static ssize_t firmware_loading_store(struct device *dev, | |||
243 | fw_priv->page_array_size = 0; | 243 | fw_priv->page_array_size = 0; |
244 | fw_priv->nr_pages = 0; | 244 | fw_priv->nr_pages = 0; |
245 | set_bit(FW_STATUS_LOADING, &fw_priv->status); | 245 | set_bit(FW_STATUS_LOADING, &fw_priv->status); |
246 | mutex_unlock(&fw_lock); | ||
247 | break; | 246 | break; |
248 | case 0: | 247 | case 0: |
249 | if (test_bit(FW_STATUS_LOADING, &fw_priv->status)) { | 248 | if (test_bit(FW_STATUS_LOADING, &fw_priv->status)) { |
@@ -274,7 +273,8 @@ static ssize_t firmware_loading_store(struct device *dev, | |||
274 | fw_load_abort(fw_priv); | 273 | fw_load_abort(fw_priv); |
275 | break; | 274 | break; |
276 | } | 275 | } |
277 | 276 | out: | |
277 | mutex_unlock(&fw_lock); | ||
278 | return count; | 278 | return count; |
279 | } | 279 | } |
280 | 280 | ||