fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / drivers / net / irda / sir_dongle.c
index 8d22592..d7e32d9 100644 (file)
@@ -16,6 +16,7 @@
 #include <linux/init.h>
 #include <linux/smp_lock.h>
 #include <linux/kmod.h>
+#include <linux/mutex.h>
 
 #include <net/irda/irda.h>
 
@@ -28,7 +29,7 @@
  */
 
 static LIST_HEAD(dongle_list);                 /* list of registered dongle drivers */
-static DECLARE_MUTEX(dongle_list_lock);                /* protects the list */
+static DEFINE_MUTEX(dongle_list_lock);         /* protects the list */
 
 int irda_register_dongle(struct dongle_driver *new)
 {
@@ -38,25 +39,25 @@ int irda_register_dongle(struct dongle_driver *new)
        IRDA_DEBUG(0, "%s : registering dongle \"%s\" (%d).\n",
                   __FUNCTION__, new->driver_name, new->type);
 
-       down(&dongle_list_lock);
+       mutex_lock(&dongle_list_lock);
        list_for_each(entry, &dongle_list) {
                drv = list_entry(entry, struct dongle_driver, dongle_list);
                if (new->type == drv->type) {
-                       up(&dongle_list_lock);
+                       mutex_unlock(&dongle_list_lock);
                        return -EEXIST;
                }
        }
        list_add(&new->dongle_list, &dongle_list);
-       up(&dongle_list_lock);
+       mutex_unlock(&dongle_list_lock);
        return 0;
 }
 EXPORT_SYMBOL(irda_register_dongle);
 
 int irda_unregister_dongle(struct dongle_driver *drv)
 {
-       down(&dongle_list_lock);
+       mutex_lock(&dongle_list_lock);
        list_del(&drv->dongle_list);
-       up(&dongle_list_lock);
+       mutex_unlock(&dongle_list_lock);
        return 0;
 }
 EXPORT_SYMBOL(irda_unregister_dongle);
@@ -75,7 +76,7 @@ int sirdev_get_dongle(struct sir_dev *dev, IRDA_DONGLE type)
                return -EBUSY;
        
        /* serialize access to the list of registered dongles */
-       down(&dongle_list_lock);
+       mutex_lock(&dongle_list_lock);
 
        list_for_each(entry, &dongle_list) {
                drv = list_entry(entry, struct dongle_driver, dongle_list);
@@ -109,14 +110,14 @@ int sirdev_get_dongle(struct sir_dev *dev, IRDA_DONGLE type)
        if (!drv->open  ||  (err=drv->open(dev))!=0)
                goto out_reject;                /* failed to open driver */
 
-       up(&dongle_list_lock);
+       mutex_unlock(&dongle_list_lock);
        return 0;
 
 out_reject:
        dev->dongle_drv = NULL;
        module_put(drv->owner);
 out_unlock:
-       up(&dongle_list_lock);
+       mutex_unlock(&dongle_list_lock);
        return err;
 }