linux-hardened/drivers/pnp
Rafael J. Wysocki 0f1b414d19 ACPI / PNP: Avoid conflicting resource reservations
Commit b9a5e5e18f "ACPI / init: Fix the ordering of
acpi_reserve_resources()" overlooked the fact that the memory
and/or I/O regions reserved by acpi_reserve_resources() may
conflict with those reserved by the PNP "system" driver.

If that conflict actually takes place, it causes the reservations
made by the "system" driver to fail while before commit b9a5e5e18f
all reservations made by it and by acpi_reserve_resources() would be
successful.  In turn, that allows the resources that haven't been
reserved by the "system" driver to be used by others (e.g. PCI) which
sometimes leads to functional problems (up to and including boot
failures).

To fix that issue, introduce a common resource reservation routine,
acpi_reserve_region(), to be used by both acpi_reserve_resources()
and the "system" driver, that will track all resources reserved by
it and avoid making conflicting requests.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=99831
Link: http://marc.info/?t=143389402600001&r=1&w=2
Fixes: b9a5e5e18f "ACPI / init: Fix the ordering of acpi_reserve_resources()"
Reported-by: Roland Dreier <roland@purestorage.com>
Cc: All applicable <stable@vger.kernel.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-06-18 18:32:02 +02:00
..
isapnp isapnp: switch to fixed_size_llseek() 2013-06-29 12:57:48 +04:00
pnpacpi PNP / ACPI: Use ACPI_COMPANION_SET() during initialization 2015-03-16 15:19:07 +01:00
pnpbios pnpbios: bail out on strange errors 2015-01-25 09:17:59 -08:00
base.h PNP: Convert pnp_lock into a mutex 2015-03-18 22:39:55 +01:00
card.c PNP: Convert pnp_lock into a mutex 2015-03-18 22:39:55 +01:00
core.c PNP: Avoid leaving unregistered device objects in lists 2015-03-18 22:40:04 +01:00
driver.c PNP: Convert pnp_lock into a mutex 2015-03-18 22:39:55 +01:00
interface.c PNP: replace strnicmp with strncasecmp 2014-10-14 02:18:25 +02:00
Kconfig
Makefile PNP: Compile all pnp built-in stuff in one module namespace 2010-10-27 02:23:44 -04:00
manager.c pnp: restore automatic resolution of DMA conflicts 2013-05-22 00:21:02 +02:00
quirks.c PNP: Don't check for overlaps with unassigned PCI BARs 2015-03-12 12:30:00 -05:00
resource.c PNP: Switch from __check_region() to __request_region() 2015-01-22 01:14:50 +01:00
support.c PNPACPI: add bus number support 2010-03-14 20:08:38 -04:00
system.c ACPI / PNP: Avoid conflicting resource reservations 2015-06-18 18:32:02 +02:00