aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArjan van de Ven <arjan@infradead.org>2006-01-13 09:52:55 -0500
committerGreg Kroah-Hartman <gregkh@suse.de>2006-01-31 20:23:40 -0500
commitab3c81ff639fbee4ab32af84c809d283b773084a (patch)
tree6981ca653daa753d2a6d0bbebd4a62b1755d91ef
parenta3673d3cd1cdeec6b503ffa418ca2d5aeff82fd7 (diff)
[PATCH] USBATM: semaphore to mutex conversion
This is the usbatm part of the Arjan, Jes and Ingo mass semaphore to mutex conversion, reworked to apply on top of the patches I just sent to you. This time, with correct attribution and signed-off lines. Signed-off-by: Arjan van de Ven <arjan@infradead.org> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Duncan Sands <baldrick@free.fr> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--drivers/usb/atm/cxacru.c9
-rw-r--r--drivers/usb/atm/ueagle-atm.c27
-rw-r--r--drivers/usb/atm/usbatm.c28
-rw-r--r--drivers/usb/atm/usbatm.h3
4 files changed, 35 insertions, 32 deletions
diff --git a/drivers/usb/atm/cxacru.c b/drivers/usb/atm/cxacru.c
index 70a96e98152c..04631dcbabbc 100644
--- a/drivers/usb/atm/cxacru.c
+++ b/drivers/usb/atm/cxacru.c
@@ -36,6 +36,7 @@
36#include <linux/init.h> 36#include <linux/init.h>
37#include <linux/device.h> /* FIXME: linux/firmware.h should include it itself */ 37#include <linux/device.h> /* FIXME: linux/firmware.h should include it itself */
38#include <linux/firmware.h> 38#include <linux/firmware.h>
39#include <linux/mutex.h>
39 40
40#include "usbatm.h" 41#include "usbatm.h"
41 42
@@ -160,7 +161,7 @@ struct cxacru_data {
160 struct work_struct poll_work; 161 struct work_struct poll_work;
161 162
162 /* contol handles */ 163 /* contol handles */
163 struct semaphore cm_serialize; 164 struct mutex cm_serialize;
164 u8 *rcv_buf; 165 u8 *rcv_buf;
165 u8 *snd_buf; 166 u8 *snd_buf;
166 struct urb *rcv_urb; 167 struct urb *rcv_urb;
@@ -219,7 +220,7 @@ static int cxacru_cm(struct cxacru_data *instance, enum cxacru_cm_request cm,
219 goto fail; 220 goto fail;
220 } 221 }
221 222
222 down(&instance->cm_serialize); 223 mutex_lock(&instance->cm_serialize);
223 224
224 /* submit reading urb before the writing one */ 225 /* submit reading urb before the writing one */
225 init_completion(&instance->rcv_done); 226 init_completion(&instance->rcv_done);
@@ -288,7 +289,7 @@ static int cxacru_cm(struct cxacru_data *instance, enum cxacru_cm_request cm,
288 ret = offd; 289 ret = offd;
289 dbg("cm %#x", cm); 290 dbg("cm %#x", cm);
290fail: 291fail:
291 up(&instance->cm_serialize); 292 mutex_unlock(&instance->cm_serialize);
292 return ret; 293 return ret;
293} 294}
294 295
@@ -717,7 +718,7 @@ static int cxacru_bind(struct usbatm_data *usbatm_instance,
717 instance->snd_buf, PAGE_SIZE, 718 instance->snd_buf, PAGE_SIZE,
718 cxacru_blocking_completion, &instance->snd_done, 4); 719 cxacru_blocking_completion, &instance->snd_done, 4);
719 720
720 init_MUTEX(&instance->cm_serialize); 721 mutex_init(&instance->cm_serialize);
721 722
722 INIT_WORK(&instance->poll_work, (void *)cxacru_poll_status, instance); 723 INIT_WORK(&instance->poll_work, (void *)cxacru_poll_status, instance);
723 724
diff --git a/drivers/usb/atm/ueagle-atm.c b/drivers/usb/atm/ueagle-atm.c
index 956cd9e82dee..4362cfd801b5 100644
--- a/drivers/usb/atm/ueagle-atm.c
+++ b/drivers/usb/atm/ueagle-atm.c
@@ -63,6 +63,7 @@
63#include <linux/ctype.h> 63#include <linux/ctype.h>
64#include <linux/kthread.h> 64#include <linux/kthread.h>
65#include <linux/version.h> 65#include <linux/version.h>
66#include <linux/mutex.h>
66#include <asm/unaligned.h> 67#include <asm/unaligned.h>
67 68
68#include "usbatm.h" 69#include "usbatm.h"
@@ -358,7 +359,7 @@ struct intr_pkt {
358#define INTR_PKT_SIZE 28 359#define INTR_PKT_SIZE 28
359 360
360static struct usb_driver uea_driver; 361static struct usb_driver uea_driver;
361static DECLARE_MUTEX(uea_semaphore); 362static DEFINE_MUTEX(uea_mutex);
362static const char *chip_name[] = {"ADI930", "Eagle I", "Eagle II", "Eagle III"}; 363static const char *chip_name[] = {"ADI930", "Eagle I", "Eagle II", "Eagle III"};
363 364
364static int modem_index; 365static int modem_index;
@@ -1418,13 +1419,13 @@ static ssize_t read_status(struct device *dev, struct device_attribute *attr,
1418 int ret = -ENODEV; 1419 int ret = -ENODEV;
1419 struct uea_softc *sc; 1420 struct uea_softc *sc;
1420 1421
1421 down(&uea_semaphore); 1422 mutex_lock(&uea_mutex);
1422 sc = dev_to_uea(dev); 1423 sc = dev_to_uea(dev);
1423 if (!sc) 1424 if (!sc)
1424 goto out; 1425 goto out;
1425 ret = snprintf(buf, 10, "%08x\n", sc->stats.phy.state); 1426 ret = snprintf(buf, 10, "%08x\n", sc->stats.phy.state);
1426out: 1427out:
1427 up(&uea_semaphore); 1428 mutex_unlock(&uea_mutex);
1428 return ret; 1429 return ret;
1429} 1430}
1430 1431
@@ -1434,14 +1435,14 @@ static ssize_t reboot(struct device *dev, struct device_attribute *attr,
1434 int ret = -ENODEV; 1435 int ret = -ENODEV;
1435 struct uea_softc *sc; 1436 struct uea_softc *sc;
1436 1437
1437 down(&uea_semaphore); 1438 mutex_lock(&uea_mutex);
1438 sc = dev_to_uea(dev); 1439 sc = dev_to_uea(dev);
1439 if (!sc) 1440 if (!sc)
1440 goto out; 1441 goto out;
1441 sc->reset = 1; 1442 sc->reset = 1;
1442 ret = count; 1443 ret = count;
1443out: 1444out:
1444 up(&uea_semaphore); 1445 mutex_unlock(&uea_mutex);
1445 return ret; 1446 return ret;
1446} 1447}
1447 1448
@@ -1453,7 +1454,7 @@ static ssize_t read_human_status(struct device *dev, struct device_attribute *at
1453 int ret = -ENODEV; 1454 int ret = -ENODEV;
1454 struct uea_softc *sc; 1455 struct uea_softc *sc;
1455 1456
1456 down(&uea_semaphore); 1457 mutex_lock(&uea_mutex);
1457 sc = dev_to_uea(dev); 1458 sc = dev_to_uea(dev);
1458 if (!sc) 1459 if (!sc)
1459 goto out; 1460 goto out;
@@ -1473,7 +1474,7 @@ static ssize_t read_human_status(struct device *dev, struct device_attribute *at
1473 break; 1474 break;
1474 } 1475 }
1475out: 1476out:
1476 up(&uea_semaphore); 1477 mutex_unlock(&uea_mutex);
1477 return ret; 1478 return ret;
1478} 1479}
1479 1480
@@ -1485,7 +1486,7 @@ static ssize_t read_delin(struct device *dev, struct device_attribute *attr,
1485 int ret = -ENODEV; 1486 int ret = -ENODEV;
1486 struct uea_softc *sc; 1487 struct uea_softc *sc;
1487 1488
1488 down(&uea_semaphore); 1489 mutex_lock(&uea_mutex);
1489 sc = dev_to_uea(dev); 1490 sc = dev_to_uea(dev);
1490 if (!sc) 1491 if (!sc)
1491 goto out; 1492 goto out;
@@ -1497,7 +1498,7 @@ static ssize_t read_delin(struct device *dev, struct device_attribute *attr,
1497 else 1498 else
1498 ret = sprintf(buf, "GOOD\n"); 1499 ret = sprintf(buf, "GOOD\n");
1499out: 1500out:
1500 up(&uea_semaphore); 1501 mutex_unlock(&uea_mutex);
1501 return ret; 1502 return ret;
1502} 1503}
1503 1504
@@ -1511,7 +1512,7 @@ static ssize_t read_##name(struct device *dev, \
1511 int ret = -ENODEV; \ 1512 int ret = -ENODEV; \
1512 struct uea_softc *sc; \ 1513 struct uea_softc *sc; \
1513 \ 1514 \
1514 down(&uea_semaphore); \ 1515 mutex_lock(&uea_mutex); \
1515 sc = dev_to_uea(dev); \ 1516 sc = dev_to_uea(dev); \
1516 if (!sc) \ 1517 if (!sc) \
1517 goto out; \ 1518 goto out; \
@@ -1519,7 +1520,7 @@ static ssize_t read_##name(struct device *dev, \
1519 if (reset) \ 1520 if (reset) \
1520 sc->stats.phy.name = 0; \ 1521 sc->stats.phy.name = 0; \
1521out: \ 1522out: \
1522 up(&uea_semaphore); \ 1523 mutex_unlock(&uea_mutex); \
1523 return ret; \ 1524 return ret; \
1524} \ 1525} \
1525 \ 1526 \
@@ -1737,9 +1738,9 @@ static void uea_disconnect(struct usb_interface *intf)
1737 * Pre-firmware device has one interface 1738 * Pre-firmware device has one interface
1738 */ 1739 */
1739 if (usb->config->desc.bNumInterfaces != 1 && ifnum == 0) { 1740 if (usb->config->desc.bNumInterfaces != 1 && ifnum == 0) {
1740 down(&uea_semaphore); 1741 mutex_lock(&uea_mutex);
1741 usbatm_usb_disconnect(intf); 1742 usbatm_usb_disconnect(intf);
1742 up(&uea_semaphore); 1743 mutex_unlock(&uea_mutex);
1743 uea_info(usb, "ADSL device removed\n"); 1744 uea_info(usb, "ADSL device removed\n");
1744 } 1745 }
1745 1746
diff --git a/drivers/usb/atm/usbatm.c b/drivers/usb/atm/usbatm.c
index 5d339af16248..c1211fc037d9 100644
--- a/drivers/usb/atm/usbatm.c
+++ b/drivers/usb/atm/usbatm.c
@@ -823,7 +823,7 @@ static int usbatm_atm_open(struct atm_vcc *vcc)
823 return -EINVAL; 823 return -EINVAL;
824 } 824 }
825 825
826 down(&instance->serialize); /* vs self, usbatm_atm_close, usbatm_usb_disconnect */ 826 mutex_lock(&instance->serialize); /* vs self, usbatm_atm_close, usbatm_usb_disconnect */
827 827
828 if (instance->disconnected) { 828 if (instance->disconnected) {
829 atm_dbg(instance, "%s: disconnected!\n", __func__); 829 atm_dbg(instance, "%s: disconnected!\n", __func__);
@@ -867,7 +867,7 @@ static int usbatm_atm_open(struct atm_vcc *vcc)
867 set_bit(ATM_VF_PARTIAL, &vcc->flags); 867 set_bit(ATM_VF_PARTIAL, &vcc->flags);
868 set_bit(ATM_VF_READY, &vcc->flags); 868 set_bit(ATM_VF_READY, &vcc->flags);
869 869
870 up(&instance->serialize); 870 mutex_unlock(&instance->serialize);
871 871
872 atm_dbg(instance, "%s: allocated vcc data 0x%p\n", __func__, new); 872 atm_dbg(instance, "%s: allocated vcc data 0x%p\n", __func__, new);
873 873
@@ -875,7 +875,7 @@ static int usbatm_atm_open(struct atm_vcc *vcc)
875 875
876fail: 876fail:
877 kfree(new); 877 kfree(new);
878 up(&instance->serialize); 878 mutex_unlock(&instance->serialize);
879 return ret; 879 return ret;
880} 880}
881 881
@@ -896,7 +896,7 @@ static void usbatm_atm_close(struct atm_vcc *vcc)
896 896
897 usbatm_cancel_send(instance, vcc); 897 usbatm_cancel_send(instance, vcc);
898 898
899 down(&instance->serialize); /* vs self, usbatm_atm_open, usbatm_usb_disconnect */ 899 mutex_lock(&instance->serialize); /* vs self, usbatm_atm_open, usbatm_usb_disconnect */
900 900
901 tasklet_disable(&instance->rx_channel.tasklet); 901 tasklet_disable(&instance->rx_channel.tasklet);
902 if (instance->cached_vcc == vcc_data) { 902 if (instance->cached_vcc == vcc_data) {
@@ -919,7 +919,7 @@ static void usbatm_atm_close(struct atm_vcc *vcc)
919 clear_bit(ATM_VF_PARTIAL, &vcc->flags); 919 clear_bit(ATM_VF_PARTIAL, &vcc->flags);
920 clear_bit(ATM_VF_ADDR, &vcc->flags); 920 clear_bit(ATM_VF_ADDR, &vcc->flags);
921 921
922 up(&instance->serialize); 922 mutex_unlock(&instance->serialize);
923 923
924 atm_dbg(instance, "%s successful\n", __func__); 924 atm_dbg(instance, "%s successful\n", __func__);
925} 925}
@@ -1009,9 +1009,9 @@ static int usbatm_do_heavy_init(void *arg)
1009 if (!ret) 1009 if (!ret)
1010 ret = usbatm_atm_init(instance); 1010 ret = usbatm_atm_init(instance);
1011 1011
1012 down(&instance->serialize); 1012 mutex_lock(&instance->serialize);
1013 instance->thread_pid = -1; 1013 instance->thread_pid = -1;
1014 up(&instance->serialize); 1014 mutex_unlock(&instance->serialize);
1015 1015
1016 complete_and_exit(&instance->thread_exited, ret); 1016 complete_and_exit(&instance->thread_exited, ret);
1017} 1017}
@@ -1025,9 +1025,9 @@ static int usbatm_heavy_init(struct usbatm_data *instance)
1025 return ret; 1025 return ret;
1026 } 1026 }
1027 1027
1028 down(&instance->serialize); 1028 mutex_lock(&instance->serialize);
1029 instance->thread_pid = ret; 1029 instance->thread_pid = ret;
1030 up(&instance->serialize); 1030 mutex_unlock(&instance->serialize);
1031 1031
1032 wait_for_completion(&instance->thread_started); 1032 wait_for_completion(&instance->thread_started);
1033 1033
@@ -1110,7 +1110,7 @@ int usbatm_usb_probe(struct usb_interface *intf, const struct usb_device_id *id,
1110 /* private fields */ 1110 /* private fields */
1111 1111
1112 kref_init(&instance->refcount); /* dropped in usbatm_usb_disconnect */ 1112 kref_init(&instance->refcount); /* dropped in usbatm_usb_disconnect */
1113 init_MUTEX(&instance->serialize); 1113 mutex_init(&instance->serialize);
1114 1114
1115 instance->thread_pid = -1; 1115 instance->thread_pid = -1;
1116 init_completion(&instance->thread_started); 1116 init_completion(&instance->thread_started);
@@ -1273,18 +1273,18 @@ void usbatm_usb_disconnect(struct usb_interface *intf)
1273 1273
1274 usb_set_intfdata(intf, NULL); 1274 usb_set_intfdata(intf, NULL);
1275 1275
1276 down(&instance->serialize); 1276 mutex_lock(&instance->serialize);
1277 instance->disconnected = 1; 1277 instance->disconnected = 1;
1278 if (instance->thread_pid >= 0) 1278 if (instance->thread_pid >= 0)
1279 kill_proc(instance->thread_pid, SIGTERM, 1); 1279 kill_proc(instance->thread_pid, SIGTERM, 1);
1280 up(&instance->serialize); 1280 mutex_unlock(&instance->serialize);
1281 1281
1282 wait_for_completion(&instance->thread_exited); 1282 wait_for_completion(&instance->thread_exited);
1283 1283
1284 down(&instance->serialize); 1284 mutex_lock(&instance->serialize);
1285 list_for_each_entry(vcc_data, &instance->vcc_list, list) 1285 list_for_each_entry(vcc_data, &instance->vcc_list, list)
1286 vcc_release_async(vcc_data->vcc, -EPIPE); 1286 vcc_release_async(vcc_data->vcc, -EPIPE);
1287 up(&instance->serialize); 1287 mutex_unlock(&instance->serialize);
1288 1288
1289 tasklet_disable(&instance->rx_channel.tasklet); 1289 tasklet_disable(&instance->rx_channel.tasklet);
1290 tasklet_disable(&instance->tx_channel.tasklet); 1290 tasklet_disable(&instance->tx_channel.tasklet);
diff --git a/drivers/usb/atm/usbatm.h b/drivers/usb/atm/usbatm.h
index 1cf4767007de..ff8551e93372 100644
--- a/drivers/usb/atm/usbatm.h
+++ b/drivers/usb/atm/usbatm.h
@@ -34,6 +34,7 @@
34#include <linux/list.h> 34#include <linux/list.h>
35#include <linux/stringify.h> 35#include <linux/stringify.h>
36#include <linux/usb.h> 36#include <linux/usb.h>
37#include <linux/mutex.h>
37 38
38/* 39/*
39#define VERBOSE_DEBUG 40#define VERBOSE_DEBUG
@@ -171,7 +172,7 @@ struct usbatm_data {
171 ********************************/ 172 ********************************/
172 173
173 struct kref refcount; 174 struct kref refcount;
174 struct semaphore serialize; 175 struct mutex serialize;
175 int disconnected; 176 int disconnected;
176 177
177 /* heavy init */ 178 /* heavy init */