On Friday 13 July 2007, Matthias Kaehlcke wrote: > The USB gadget serial driver uses a semaphore as mutex. Use the > mutex API instead of the (binary) semaphore. > > Signed-off-by: Matthias Kaehlcke <[EMAIL PROTECTED]>
ACK (and thanks) > > -- > > diff --git a/drivers/usb/gadget/serial.c b/drivers/usb/gadget/serial.c > index dd33ff0..4192d24 100644 > --- a/drivers/usb/gadget/serial.c > +++ b/drivers/usb/gadget/serial.c > @@ -33,6 +33,7 @@ > #include <linux/device.h> > #include <linux/tty.h> > #include <linux/tty_flip.h> > +#include <linux/mutex.h> > > #include <asm/byteorder.h> > #include <asm/io.h> > @@ -258,7 +259,7 @@ static const char *EP_IN_NAME; > static const char *EP_OUT_NAME; > static const char *EP_NOTIFY_NAME; > > -static struct semaphore gs_open_close_sem[GS_NUM_PORTS]; > +static struct mutex gs_open_close_lock[GS_NUM_PORTS]; > > static unsigned int read_q_size = GS_DEFAULT_READ_Q_SIZE; > static unsigned int write_q_size = GS_DEFAULT_WRITE_Q_SIZE; > @@ -595,7 +596,7 @@ static int __init gs_module_init(void) > tty_set_operations(gs_tty_driver, &gs_tty_ops); > > for (i=0; i < GS_NUM_PORTS; i++) > - sema_init(&gs_open_close_sem[i], 1); > + mutex_init(&gs_open_close_lock[i]); > > retval = tty_register_driver(gs_tty_driver); > if (retval) { > @@ -635,7 +636,7 @@ static int gs_open(struct tty_struct *tty, struct file > *file) > struct gs_port *port; > struct gs_dev *dev; > struct gs_buf *buf; > - struct semaphore *sem; > + struct mutex *mtx; > int ret; > > port_num = tty->index; > @@ -656,10 +657,10 @@ static int gs_open(struct tty_struct *tty, struct file > *file) > return -ENODEV; > } > > - sem = &gs_open_close_sem[port_num]; > - if (down_interruptible(sem)) { > + mtx = &gs_open_close_lock[port_num]; > + if (mutex_lock_interruptible(mtx)) { > printk(KERN_ERR > - "gs_open: (%d,%p,%p) interrupted waiting for semaphore\n", > + "gs_open: (%d,%p,%p) interrupted waiting for mutex\n", > port_num, tty, file); > return -ERESTARTSYS; > } > @@ -754,12 +755,12 @@ static int gs_open(struct tty_struct *tty, struct file > *file) > > exit_unlock_port: > spin_unlock_irqrestore(&port->port_lock, flags); > - up(sem); > + mutex_unlock(mtx); > return ret; > > exit_unlock_dev: > spin_unlock_irqrestore(&dev->dev_lock, flags); > - up(sem); > + mutex_unlock(mtx); > return ret; > > } > @@ -781,7 +782,7 @@ exit_unlock_dev: > static void gs_close(struct tty_struct *tty, struct file *file) > { > struct gs_port *port = tty->driver_data; > - struct semaphore *sem; > + struct mutex *mtx; > > if (port == NULL) { > printk(KERN_ERR "gs_close: NULL port pointer\n"); > @@ -790,8 +791,8 @@ static void gs_close(struct tty_struct *tty, struct file > *file) > > gs_debug("gs_close: (%d,%p,%p)\n", port->port_num, tty, file); > > - sem = &gs_open_close_sem[port->port_num]; > - down(sem); > + mtx = &gs_open_close_lock[port->port_num]; > + mutex_lock(mtx); > > spin_lock_irq(&port->port_lock); > > @@ -846,7 +847,7 @@ static void gs_close(struct tty_struct *tty, struct file > *file) > > exit: > spin_unlock_irq(&port->port_lock); > - up(sem); > + mutex_unlock(mtx); > } > > /* > > -- > Matthias Kaehlcke > Linux Application Developer > Barcelona > > If liberty means anything at all, it means the > right to tell people what they do not want to hear > (George Orwell) > .''`. > using free software / Debian GNU/Linux | http://debian.org : :' : > `. `'` > gpg --keyserver pgp.mit.edu --recv-keys 47D8E5D4 `- > - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/