From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754735Ab3EZP7b (ORCPT ); Sun, 26 May 2013 11:59:31 -0400 Received: from mail-pb0-f44.google.com ([209.85.160.44]:64340 "EHLO mail-pb0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754055Ab3EZP71 (ORCPT ); Sun, 26 May 2013 11:59:27 -0400 From: Jiang Liu To: Bjorn Helgaas , Yinghai Lu Cc: Jiang Liu , "Rafael J . Wysocki" , Greg Kroah-Hartman , Gu Zheng , Toshi Kani , Myron Stowe , Yijing Wang , Jiang Liu , linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, Corentin Chary , Matthew Garrett , acpi4asus-user@lists.sourceforge.net, platform-driver-x86@vger.kernel.org Subject: [PATCH v3, part2 19/20] PCI, asus-wmi: use hotplug-safe iterators to walk PCI buses Date: Sun, 26 May 2013 23:53:16 +0800 Message-Id: <1369583597-3801-20-git-send-email-jiang.liu@huawei.com> X-Mailer: git-send-email 1.8.1.2 In-Reply-To: <1369583597-3801-1-git-send-email-jiang.liu@huawei.com> References: <1369583597-3801-1-git-send-email-jiang.liu@huawei.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Enhance asus-wmi drvier to use hotplug-safe iterators to walk PCI buses. Signed-off-by: Jiang Liu Cc: Corentin Chary Cc: Matthew Garrett Cc: acpi4asus-user@lists.sourceforge.net Cc: platform-driver-x86@vger.kernel.org Cc: linux-kernel@vger.kernel.org --- drivers/platform/x86/asus-wmi.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c index c11b242..f92db4c 100644 --- a/drivers/platform/x86/asus-wmi.c +++ b/drivers/platform/x86/asus-wmi.c @@ -596,7 +596,7 @@ static bool asus_wlan_rfkill_blocked(struct asus_wmi *asus) static void asus_rfkill_hotplug(struct asus_wmi *asus) { struct pci_dev *dev; - struct pci_bus *bus; + struct pci_bus *bus = NULL; bool blocked; bool absent; u32 l; @@ -611,7 +611,7 @@ static void asus_rfkill_hotplug(struct asus_wmi *asus) rfkill_set_sw_state(asus->wlan.rfkill, blocked); if (asus->hotplug_slot) { - bus = pci_find_bus(0, 1); + bus = pci_get_bus(0, 1); if (!bus) { pr_warn("Unable to find PCI bus 1?\n"); goto out_unlock; @@ -657,6 +657,7 @@ static void asus_rfkill_hotplug(struct asus_wmi *asus) out_unlock: mutex_unlock(&asus->hotplug_lock); + pci_bus_put(bus); } static void asus_rfkill_notify(acpi_handle handle, u32 event, void *data) @@ -748,7 +749,7 @@ static void asus_hotplug_work(struct work_struct *work) static int asus_setup_pci_hotplug(struct asus_wmi *asus) { int ret = -ENOMEM; - struct pci_bus *bus = pci_find_bus(0, 1); + struct pci_bus *bus = pci_get_bus(0, 1); if (!bus) { pr_err("Unable to find wifi PCI bus\n"); @@ -782,6 +783,7 @@ static int asus_setup_pci_hotplug(struct asus_wmi *asus) pr_err("Unable to register hotplug slot - %d\n", ret); goto error_register; } + pci_bus_put(bus); return 0; @@ -793,6 +795,7 @@ error_info: error_slot: destroy_workqueue(asus->hotplug_workqueue); error_workqueue: + pci_bus_put(bus); return ret; } -- 1.8.1.2