[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20080325033145.GE26434@ldl.fc.hp.com>
Date: Mon, 24 Mar 2008 21:31:45 -0600
From: Alex Chiang <achiang@...com>
To: Kenji Kaneshige <kaneshige.kenji@...fujitsu.com>
Cc: Greg KH <gregkh@...e.de>, Gary Hade <garyhade@...ibm.com>,
Kristen Carlson Accardi <kristen.c.accardi@...el.com>,
Matthew Wilcox <matthew@....cx>, warthog19@...lescrag.net,
rick.jones2@...com, linux-kernel@...r.kernel.org,
linux-pci@...ey.karlin.mff.cuni.cz, linux-acpi@...r.kernel.org
Subject: Re: [PATCH 16/16][BUG] PCI hotplug core: add missing lock for
hotplug slot list (Not for mainline!)
* Kenji Kaneshige <kaneshige.kenji@...fujitsu.com>:
> Add missing lock for manipulating pci_hotplug_slot_list.
Nice work, thanks. I've merged it.
/ac
>
> Signed-off-by: Kenji Kaneshige <kaneshige.kenji@...fujitsu.com>
>
> ---
> drivers/pci/hotplug/pci_hotplug_core.c | 13 +++++++++++--
> 1 file changed, 11 insertions(+), 2 deletions(-)
>
> Index: linux-2.6.25-rc6/drivers/pci/hotplug/pci_hotplug_core.c
> ===================================================================
> --- linux-2.6.25-rc6.orig/drivers/pci/hotplug/pci_hotplug_core.c
> +++ linux-2.6.25-rc6/drivers/pci/hotplug/pci_hotplug_core.c
> @@ -61,6 +61,7 @@ static int debug;
> //////////////////////////////////////////////////////////////////
>
> static LIST_HEAD(pci_hotplug_slot_list);
> +static DEFINE_SPINLOCK(pci_hotplug_slot_list_lock);
>
> /* these strings match up with the values in pci_bus_speed */
> static char *pci_bus_speed_strings[] = {
> @@ -529,12 +530,16 @@ static struct hotplug_slot *get_slot_fro
> struct hotplug_slot *slot;
> struct list_head *tmp;
>
> + spin_lock(&pci_hotplug_slot_list_lock);
> list_for_each (tmp, &pci_hotplug_slot_list) {
> slot = list_entry (tmp, struct hotplug_slot, slot_list);
> if (strcmp(slot->name, name) == 0)
> - return slot;
> + goto out;
> }
> - return NULL;
> + slot = NULL;
> +out:
> + spin_unlock(&pci_hotplug_slot_list_lock);
> + return slot;
> }
>
> /**
> @@ -584,7 +589,9 @@ int pci_hp_register(struct hotplug_slot
> }
> }
>
> + spin_lock(&pci_hotplug_slot_list_lock);
> list_add(&slot->slot_list, &pci_hotplug_slot_list);
> + spin_unlock(&pci_hotplug_slot_list_lock);
>
> result = fs_add_slot(pci_slot);
> kobject_uevent(&pci_slot->kobj, KOBJ_ADD);
> @@ -613,7 +620,9 @@ int pci_hp_deregister(struct hotplug_slo
> if (temp != hotplug)
> return -ENODEV;
>
> + spin_lock(&pci_hotplug_slot_list_lock);
> list_del(&hotplug->slot_list);
> + spin_unlock(&pci_hotplug_slot_list_lock);
>
> slot = hotplug->pci_slot;
> fs_remove_slot(slot);
>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists