diff options
| -rw-r--r-- | drivers/pcmcia/ds.c | 16 | ||||
| -rw-r--r-- | include/pcmcia/ds.h | 2 |
2 files changed, 9 insertions, 9 deletions
diff --git a/drivers/pcmcia/ds.c b/drivers/pcmcia/ds.c index 83b51ddd3da3..253d9aca5f77 100644 --- a/drivers/pcmcia/ds.c +++ b/drivers/pcmcia/ds.c | |||
| @@ -124,9 +124,9 @@ pcmcia_store_new_id(struct device_driver *driver, const char *buf, size_t count) | |||
| 124 | dynid->id.device_no = device_no; | 124 | dynid->id.device_no = device_no; |
| 125 | memcpy(dynid->id.prod_id_hash, prod_id_hash, sizeof(__u32) * 4); | 125 | memcpy(dynid->id.prod_id_hash, prod_id_hash, sizeof(__u32) * 4); |
| 126 | 126 | ||
| 127 | spin_lock(&pdrv->dynids.lock); | 127 | mutex_lock(&pdrv->dynids.lock); |
| 128 | list_add_tail(&dynid->node, &pdrv->dynids.list); | 128 | list_add_tail(&dynid->node, &pdrv->dynids.list); |
| 129 | spin_unlock(&pdrv->dynids.lock); | 129 | mutex_unlock(&pdrv->dynids.lock); |
| 130 | 130 | ||
| 131 | if (get_driver(&pdrv->drv)) { | 131 | if (get_driver(&pdrv->drv)) { |
| 132 | retval = driver_attach(&pdrv->drv); | 132 | retval = driver_attach(&pdrv->drv); |
| @@ -144,12 +144,12 @@ pcmcia_free_dynids(struct pcmcia_driver *drv) | |||
| 144 | { | 144 | { |
| 145 | struct pcmcia_dynid *dynid, *n; | 145 | struct pcmcia_dynid *dynid, *n; |
| 146 | 146 | ||
| 147 | spin_lock(&drv->dynids.lock); | 147 | mutex_lock(&drv->dynids.lock); |
| 148 | list_for_each_entry_safe(dynid, n, &drv->dynids.list, node) { | 148 | list_for_each_entry_safe(dynid, n, &drv->dynids.list, node) { |
| 149 | list_del(&dynid->node); | 149 | list_del(&dynid->node); |
| 150 | kfree(dynid); | 150 | kfree(dynid); |
| 151 | } | 151 | } |
| 152 | spin_unlock(&drv->dynids.lock); | 152 | mutex_unlock(&drv->dynids.lock); |
| 153 | } | 153 | } |
| 154 | 154 | ||
| 155 | static int | 155 | static int |
| @@ -180,7 +180,7 @@ int pcmcia_register_driver(struct pcmcia_driver *driver) | |||
| 180 | /* initialize common fields */ | 180 | /* initialize common fields */ |
| 181 | driver->drv.bus = &pcmcia_bus_type; | 181 | driver->drv.bus = &pcmcia_bus_type; |
| 182 | driver->drv.owner = driver->owner; | 182 | driver->drv.owner = driver->owner; |
| 183 | spin_lock_init(&driver->dynids.lock); | 183 | mutex_init(&driver->dynids.lock); |
| 184 | INIT_LIST_HEAD(&driver->dynids.list); | 184 | INIT_LIST_HEAD(&driver->dynids.list); |
| 185 | 185 | ||
| 186 | pr_debug("registering driver %s\n", driver->drv.name); | 186 | pr_debug("registering driver %s\n", driver->drv.name); |
| @@ -894,16 +894,16 @@ static int pcmcia_bus_match(struct device *dev, struct device_driver *drv) | |||
| 894 | struct pcmcia_dynid *dynid; | 894 | struct pcmcia_dynid *dynid; |
| 895 | 895 | ||
| 896 | /* match dynamic devices first */ | 896 | /* match dynamic devices first */ |
| 897 | spin_lock(&p_drv->dynids.lock); | 897 | mutex_lock(&p_drv->dynids.lock); |
| 898 | list_for_each_entry(dynid, &p_drv->dynids.list, node) { | 898 | list_for_each_entry(dynid, &p_drv->dynids.list, node) { |
| 899 | dev_dbg(dev, "trying to match to %s\n", drv->name); | 899 | dev_dbg(dev, "trying to match to %s\n", drv->name); |
| 900 | if (pcmcia_devmatch(p_dev, &dynid->id)) { | 900 | if (pcmcia_devmatch(p_dev, &dynid->id)) { |
| 901 | dev_dbg(dev, "matched to %s\n", drv->name); | 901 | dev_dbg(dev, "matched to %s\n", drv->name); |
| 902 | spin_unlock(&p_drv->dynids.lock); | 902 | mutex_unlock(&p_drv->dynids.lock); |
| 903 | return 1; | 903 | return 1; |
| 904 | } | 904 | } |
| 905 | } | 905 | } |
| 906 | spin_unlock(&p_drv->dynids.lock); | 906 | mutex_unlock(&p_drv->dynids.lock); |
| 907 | 907 | ||
| 908 | #ifdef CONFIG_PCMCIA_IOCTL | 908 | #ifdef CONFIG_PCMCIA_IOCTL |
| 909 | /* matching by cardmgr */ | 909 | /* matching by cardmgr */ |
diff --git a/include/pcmcia/ds.h b/include/pcmcia/ds.h index ee148573c114..d57847f2f6c1 100644 --- a/include/pcmcia/ds.h +++ b/include/pcmcia/ds.h | |||
| @@ -40,7 +40,7 @@ struct net_device; | |||
| 40 | * Documentation/pcmcia/driver.txt for details. | 40 | * Documentation/pcmcia/driver.txt for details. |
| 41 | */ | 41 | */ |
| 42 | struct pcmcia_dynids { | 42 | struct pcmcia_dynids { |
| 43 | spinlock_t lock; | 43 | struct mutex lock; |
| 44 | struct list_head list; | 44 | struct list_head list; |
| 45 | }; | 45 | }; |
| 46 | 46 | ||
