linux_dsm_epyc7002/drivers/base
Bjorn Andersson 5d47ec02c3 firmware: Correct handling of fw_state_wait() return value
When request_firmware() finds an already open firmware object it will
wait for that object to become fully loaded and then check the status.
As __fw_state_wait_common() succeeds the timeout value returned will be
truncated in _request_firmware_prepare() and interpreted as -EPERM.

Prior to "firmware: do not use fw_lock for fw_state protection" the code
did test if we where in the "done" state before sleeping, causing this
particular code path to succeed, in some cases.

As the callers are interested in the result of the wait and not the
remaining timeout the return value of __fw_state_wait_common() is
changed to signal "done" or "error", which simplifies the logic in
_request_firmware_load() as well.

Fixes: 5b02962494 ("firmware: do not use fw_lock for fw_state protection")
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Reviewed-by: Daniel Wagner <daniel.wagner@bmw-carit.de>
Acked-by: Luis R. Rodriguez <mcgrof@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2016-12-08 21:05:54 +01:00
..
power PM / runtime: Optimize the use of device links 2016-10-31 11:42:51 -06:00
regmap Merge remote-tracking branches 'regmap/topic/core' and 'regmap/topic/debugfs' into regmap-next 2016-10-04 05:17:12 +02:00
test driver core: test_async: fix up typo found by 0-day 2016-11-29 22:06:42 +01:00
attribute_container.c attribute_container: Fix typo 2016-08-31 15:13:56 +02:00
base.h driver core: Add deferred_probe attribute to devices in sysfs 2016-11-10 17:22:23 +01:00
bus.c driver core: bus: use to_subsys_private and to_device_private_bus 2016-02-09 17:25:27 -08:00
cacheinfo.c drivers: base: cacheinfo: support DT overrides for cache properties 2016-11-10 17:30:53 +01:00
class.c driver core: class: add class_groups support 2016-11-29 21:12:12 +01:00
component.c Merge 4.5-rc4 into driver-core-next 2016-02-14 14:29:55 -08:00
container.c ACPI / hotplug / driver core: Handle containers in a special way 2013-12-29 15:25:48 +01:00
core.c driver core: Silence device links sphinx warning 2016-12-05 15:02:20 +01:00
cpu.c cpu: clean up register_cpu func 2016-08-31 15:19:55 +02:00
dd.c driver core: Add deferred_probe attribute to devices in sysfs 2016-11-10 17:22:23 +01:00
devcoredump.c driver core: devcoredump: convert to use class_groups 2016-11-29 21:12:12 +01:00
devres.c devm: make allocations numa aware by default 2015-10-09 17:00:33 -04:00
devtmpfs.c wrappers for ->i_mutex access 2016-01-22 18:04:28 -05:00
dma-coherent.c drivers: dma-coherent: Move spinlock in dma_alloc_from_coherent() 2016-09-28 17:53:16 +02:00
dma-contiguous.c driver core update for 4.4-rc1 2015-11-04 21:50:37 -08:00
dma-mapping.c drivers: base: dma-mapping: Fix typo in dmam_alloc_non_coherent comments 2016-11-30 13:04:53 +01:00
driver.c driver core: add missing blank line after declaration 2015-03-25 14:36:30 +01:00
firmware_class.c firmware: Correct handling of fw_state_wait() return value 2016-12-08 21:05:54 +01:00
firmware.c
hypervisor.c drivers/base: Add export.h for EXPORT_SYMBOL/THIS_MODULE as required. 2011-10-31 19:31:38 -04:00
init.c drivers: of/base: move of_init to driver_init 2015-05-26 19:55:56 -07:00
isa.c isa: Call isa_bus_init before dependent ISA bus drivers register 2016-06-17 20:47:11 -07:00
Kconfig driver-core: add test module for asynchronous probing 2016-11-10 17:28:16 +01:00
Makefile driver-core: add test module for asynchronous probing 2016-11-10 17:28:16 +01:00
map.c drivers: base: map: Use kmalloc_array instead of kmalloc 2015-03-25 14:35:08 +01:00
memory.c drivers/base/memory.c: Remove unused 'first_page' variable 2016-11-29 20:58:31 +01:00
module.c base: make module_create_drivers_dir race-free 2016-06-15 19:21:31 -07:00
node.c treewide: replace obsolete _refok by __ref 2016-08-02 17:31:41 -04:00
pinctrl.c driver: base: pinctrl: return error from pinctrl_bind_pins() 2016-09-13 23:02:59 +02:00
platform-msi.c genirq/msi: Add cpumask allocation to alloc_msi_entry 2016-09-14 22:11:08 +02:00
platform.c driver-core: platform: Catch errors from calls to irq_get_irq_data 2016-09-27 12:30:37 +02:00
property.c device property: Add function to search for named child of device 2016-06-26 12:39:03 +01:00
soc.c base: soc: make it explicitly non-modular 2016-08-31 15:13:56 +02:00
syscore.c genirq: Simplify wakeup mechanism 2014-09-01 13:48:59 +02:00
topology.c topology/sysfs: provide drawer id and siblings attributes 2016-06-13 15:58:27 +02:00
transport_class.c drivers/base: transport_class explicitly requires EXPORT_SYMBOL 2011-10-31 19:31:15 -04:00