usb: gadgetfs: Convert semaphore to mutex
authorThomas Gleixner <tglx@linutronix.de>
Fri, 29 Jan 2010 20:38:59 +0000 (20:38 +0000)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 2 Mar 2010 22:54:52 +0000 (14:54 -0800)
The semaphore data->lock is semantically a mutex. Convert it to a real
mutex.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/gadget/inode.c

index bf0f652..de8a838 100644 (file)
@@ -194,7 +194,7 @@ enum ep_state {
 };
 
 struct ep_data {
-       struct semaphore                lock;
+       struct mutex                    lock;
        enum ep_state                   state;
        atomic_t                        count;
        struct dev_data                 *dev;
@@ -298,10 +298,10 @@ get_ready_ep (unsigned f_flags, struct ep_data *epdata)
        int     val;
 
        if (f_flags & O_NONBLOCK) {
-               if (down_trylock (&epdata->lock) != 0)
+               if (!mutex_trylock(&epdata->lock))
                        goto nonblock;
                if (epdata->state != STATE_EP_ENABLED) {
-                       up (&epdata->lock);
+                       mutex_unlock(&epdata->lock);
 nonblock:
                        val = -EAGAIN;
                } else
@@ -309,7 +309,8 @@ nonblock:
                return val;
        }
 
-       if ((val = down_interruptible (&epdata->lock)) < 0)
+       val = mutex_lock_interruptible(&epdata->lock);
+       if (val < 0)
                return val;
 
        switch (epdata->state) {
@@ -323,7 +324,7 @@ nonblock:
                // FALLTHROUGH
        case STATE_EP_UNBOUND:                  /* clean disconnect */
                val = -ENODEV;
-               up (&epdata->lock);
+               mutex_unlock(&epdata->lock);
        }
        return val;
 }
@@ -393,7 +394,7 @@ ep_read (struct file *fd, char __user *buf, size_t len, loff_t *ptr)
                if (likely (data->ep != NULL))
                        usb_ep_set_halt (data->ep);
                spin_unlock_irq (&data->dev->lock);
-               up (&data->lock);
+               mutex_unlock(&data->lock);
                return -EBADMSG;
        }
 
@@ -411,7 +412,7 @@ ep_read (struct file *fd, char __user *buf, size_t len, loff_t *ptr)
                value = -EFAULT;
 
 free1:
-       up (&data->lock);
+       mutex_unlock(&data->lock);
        kfree (kbuf);
        return value;
 }
@@ -436,7 +437,7 @@ ep_write (struct file *fd, const char __user *buf, size_t len, loff_t *ptr)
                if (likely (data->ep != NULL))
                        usb_ep_set_halt (data->ep);
                spin_unlock_irq (&data->dev->lock);
-               up (&data->lock);
+               mutex_unlock(&data->lock);
                return -EBADMSG;
        }
 
@@ -455,7 +456,7 @@ ep_write (struct file *fd, const char __user *buf, size_t len, loff_t *ptr)
        VDEBUG (data->dev, "%s write %zu IN, status %d\n",
                data->name, len, (int) value);
 free1:
-       up (&data->lock);
+       mutex_unlock(&data->lock);
        kfree (kbuf);
        return value;
 }
@@ -466,7 +467,8 @@ ep_release (struct inode *inode, struct file *fd)
        struct ep_data          *data = fd->private_data;
        int value;
 
-       if ((value = down_interruptible(&data->lock)) < 0)
+       value = mutex_lock_interruptible(&data->lock);
+       if (value < 0)
                return value;
 
        /* clean up if this can be reopened */
@@ -476,7 +478,7 @@ ep_release (struct inode *inode, struct file *fd)
                data->hs_desc.bDescriptorType = 0;
                usb_ep_disable(data->ep);
        }
-       up (&data->lock);
+       mutex_unlock(&data->lock);
        put_ep (data);
        return 0;
 }
@@ -507,7 +509,7 @@ static long ep_ioctl(struct file *fd, unsigned code, unsigned long value)
        } else
                status = -ENODEV;
        spin_unlock_irq (&data->dev->lock);
-       up (&data->lock);
+       mutex_unlock(&data->lock);
        return status;
 }
 
@@ -673,7 +675,7 @@ fail:
                value = -ENODEV;
        spin_unlock_irq(&epdata->dev->lock);
 
-       up(&epdata->lock);
+       mutex_unlock(&epdata->lock);
 
        if (unlikely(value)) {
                kfree(priv);
@@ -765,7 +767,8 @@ ep_config (struct file *fd, const char __user *buf, size_t len, loff_t *ptr)
        u32                     tag;
        int                     value, length = len;
 
-       if ((value = down_interruptible (&data->lock)) < 0)
+       value = mutex_lock_interruptible(&data->lock);
+       if (value < 0)
                return value;
 
        if (data->state != STATE_EP_READY) {
@@ -854,7 +857,7 @@ fail:
                data->desc.bDescriptorType = 0;
                data->hs_desc.bDescriptorType = 0;
        }
-       up (&data->lock);
+       mutex_unlock(&data->lock);
        return value;
 fail0:
        value = -EINVAL;
@@ -870,7 +873,7 @@ ep_open (struct inode *inode, struct file *fd)
        struct ep_data          *data = inode->i_private;
        int                     value = -EBUSY;
 
-       if (down_interruptible (&data->lock) != 0)
+       if (mutex_lock_interruptible(&data->lock) != 0)
                return -EINTR;
        spin_lock_irq (&data->dev->lock);
        if (data->dev->state == STATE_DEV_UNBOUND)
@@ -885,7 +888,7 @@ ep_open (struct inode *inode, struct file *fd)
                DBG (data->dev, "%s state %d\n",
                        data->name, data->state);
        spin_unlock_irq (&data->dev->lock);
-       up (&data->lock);
+       mutex_unlock(&data->lock);
        return value;
 }
 
@@ -1631,7 +1634,7 @@ static int activate_ep_files (struct dev_data *dev)
                if (!data)
                        goto enomem0;
                data->state = STATE_EP_DISABLED;
-               init_MUTEX (&data->lock);
+               mutex_init(&data->lock);
                init_waitqueue_head (&data->wait);
 
                strncpy (data->name, ep->name, sizeof (data->name) - 1);