[lkml]   [2014]   [Feb]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Patch in this message
Subject[PATCH] ACPI / hotplug / PCI: Execute _EJ0 under the ACPI scan lock
From: Rafael J. Wysocki <>

Since acpi_device_hotplug() assumes that ACPI handles of device
objects passed to it will not become invalid while acpi_scan_lock
is being held, make acpiphp_disable_slot() acquire acpi_scan_lock,
because it generally causes _EJ0 to be executed for one of the
devices in the slot and that may cause its ACPI handle to become

Signed-off-by: Rafael J. Wysocki <>

Hi All,

This change is not necessary in 3.14-rc (it wouldn't hurt, though), but it
closes a (mostly theoretical) race on top of the changes I've queued up for
3.15 in linux-next.


drivers/pci/hotplug/acpiphp_glue.c | 6 ++++++
1 file changed, 6 insertions(+)

Index: linux-pm/drivers/pci/hotplug/acpiphp_glue.c
--- linux-pm.orig/drivers/pci/hotplug/acpiphp_glue.c
+++ linux-pm/drivers/pci/hotplug/acpiphp_glue.c
@@ -1007,9 +1007,15 @@ int acpiphp_disable_slot(struct acpiphp_
int ret;

+ /*
+ * Acquire acpi_scan_lock to ensure that the execution of _EJ0 in
+ * acpiphp_disable_and_eject_slot() will be synchronized properly.
+ */
+ acpi_scan_lock_acquire();
ret = acpiphp_disable_and_eject_slot(slot);
+ acpi_scan_lock_release();
return ret;

 \ /
  Last update: 2014-02-08 17:01    [W:0.021 / U:0.188 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site