]> asedeno.scripts.mit.edu Git - linux.git/commit
PCI: shpchp: Manage SHPC unconditionally on non-ACPI systems
authorBjorn Helgaas <bhelgaas@google.com>
Mon, 25 Jun 2018 13:17:33 +0000 (08:17 -0500)
committerBjorn Helgaas <helgaas@kernel.org>
Tue, 26 Jun 2018 13:22:45 +0000 (08:22 -0500)
commit6f6f42466d902c92f21b46a45e6af22d1d663607
tree473b6e3aefa5dfaabcfac86f29dd075628fbef43
parentce397d215ccd07b8ae3f71db689aedb85d56ab40
PCI: shpchp: Manage SHPC unconditionally on non-ACPI systems

An SHPC can be operated either by platform firmware or by the OS.  The OS
uses a host bridge ACPI _OSC method to negotiate for control of SHPC.  If
firmware wants to prevent an OS from operating an SHPC, it must supply an
_OSC method that declines to grant SHPC ownership to the OS.

If acpi_pci_find_root() returns NULL, it means there's no ACPI host bridge
device (PNP0A03 or PNP0A08) and hence no _OSC method, so the OS is always
allowed to manage the SHPC.

Fix a NULL pointer dereference when CONFIG_ACPI=y but the current
hardware/firmware platform doesn't support ACPI.  In that case,
acpi_get_hp_hw_control_from_firmware() is implemented but
acpi_pci_find_root() returns NULL.

Fixes: 90cc0c3cc709 ("PCI: shpchp: Add shpchp_is_native()")
Link: https://lkml.kernel.org/r/20180621164715.28160-1-marc.zyngier@arm.com
Reported-by: Marc Zyngier <marc.zyngier@arm.com>
Tested-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
drivers/pci/hotplug/acpi_pcihp.c