lkml.org 
[lkml]   [2008]   [Mar]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 16/16][BUG] PCI hotplug core: add missing lock for hotplug slot list (Not for mainline!)
    * Kenji Kaneshige <kaneshige.kenji@jp.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@jp.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);
    >
    >


    \
     
     \ /
      Last update: 2008-03-25 04:35    [W:0.023 / U:243.460 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site