diff options
author | Tony Lindgren <tony@atomide.com> | 2013-04-01 11:55:04 -0400 |
---|---|---|
committer | Tony Lindgren <tony@atomide.com> | 2013-04-01 11:55:04 -0400 |
commit | d29778a01d5fc4b69ca1e7bc21121536e5c1c31d (patch) | |
tree | 0fb90068b5b19436723d55bc44350776588c2992 /drivers/acpi/pci_root.c | |
parent | ce9df0b00ac7f0a733d361c23bebdd79f32f8adc (diff) | |
parent | 469d633d20c774ecd34ac615c838193e1e150c62 (diff) |
Merge tag 'omap-devel-b-for-3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/pjw/omap-pending into omap-for-v3.10/fixes-non-critical
Some miscellaneous OMAP hwmod, powerdomain, and clock fixes for 3.10.
Basic test logs are here:
http://www.pwsan.com/omap/testlogs/prcm_fixes_a_3.10/20130331205716/
Diffstat (limited to 'drivers/acpi/pci_root.c')
-rw-r--r-- | drivers/acpi/pci_root.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c index 0ac546d5e53f..5ff173066127 100644 --- a/drivers/acpi/pci_root.c +++ b/drivers/acpi/pci_root.c | |||
@@ -646,6 +646,7 @@ static void handle_root_bridge_insertion(acpi_handle handle) | |||
646 | 646 | ||
647 | static void handle_root_bridge_removal(struct acpi_device *device) | 647 | static void handle_root_bridge_removal(struct acpi_device *device) |
648 | { | 648 | { |
649 | acpi_status status; | ||
649 | struct acpi_eject_event *ej_event; | 650 | struct acpi_eject_event *ej_event; |
650 | 651 | ||
651 | ej_event = kmalloc(sizeof(*ej_event), GFP_KERNEL); | 652 | ej_event = kmalloc(sizeof(*ej_event), GFP_KERNEL); |
@@ -661,7 +662,9 @@ static void handle_root_bridge_removal(struct acpi_device *device) | |||
661 | ej_event->device = device; | 662 | ej_event->device = device; |
662 | ej_event->event = ACPI_NOTIFY_EJECT_REQUEST; | 663 | ej_event->event = ACPI_NOTIFY_EJECT_REQUEST; |
663 | 664 | ||
664 | acpi_bus_hot_remove_device(ej_event); | 665 | status = acpi_os_hotplug_execute(acpi_bus_hot_remove_device, ej_event); |
666 | if (ACPI_FAILURE(status)) | ||
667 | kfree(ej_event); | ||
665 | } | 668 | } |
666 | 669 | ||
667 | static void _handle_hotplug_event_root(struct work_struct *work) | 670 | static void _handle_hotplug_event_root(struct work_struct *work) |
@@ -676,8 +679,9 @@ static void _handle_hotplug_event_root(struct work_struct *work) | |||
676 | handle = hp_work->handle; | 679 | handle = hp_work->handle; |
677 | type = hp_work->type; | 680 | type = hp_work->type; |
678 | 681 | ||
679 | root = acpi_pci_find_root(handle); | 682 | acpi_scan_lock_acquire(); |
680 | 683 | ||
684 | root = acpi_pci_find_root(handle); | ||
681 | acpi_get_name(handle, ACPI_FULL_PATHNAME, &buffer); | 685 | acpi_get_name(handle, ACPI_FULL_PATHNAME, &buffer); |
682 | 686 | ||
683 | switch (type) { | 687 | switch (type) { |
@@ -711,6 +715,7 @@ static void _handle_hotplug_event_root(struct work_struct *work) | |||
711 | break; | 715 | break; |
712 | } | 716 | } |
713 | 717 | ||
718 | acpi_scan_lock_release(); | ||
714 | kfree(hp_work); /* allocated in handle_hotplug_event_bridge */ | 719 | kfree(hp_work); /* allocated in handle_hotplug_event_bridge */ |
715 | kfree(buffer.pointer); | 720 | kfree(buffer.pointer); |
716 | } | 721 | } |