Loading drivers/serial/8250.c +6 −5 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ #include <linux/serial.h> #include <linux/serial_8250.h> #include <linux/nmi.h> #include <linux/mutex.h> #include <asm/io.h> #include <asm/irq.h> Loading Loading @@ -2467,7 +2468,7 @@ static struct platform_device *serial8250_isa_devs; * 16x50 serial ports to be configured at run-time, to support PCMCIA * modems and PCI multiport cards. */ static DECLARE_MUTEX(serial_sem); static DEFINE_MUTEX(serial_mutex); static struct uart_8250_port *serial8250_find_match_or_unused(struct uart_port *port) { Loading Loading @@ -2522,7 +2523,7 @@ int serial8250_register_port(struct uart_port *port) if (port->uartclk == 0) return -EINVAL; down(&serial_sem); mutex_lock(&serial_mutex); uart = serial8250_find_match_or_unused(port); if (uart) { Loading @@ -2544,7 +2545,7 @@ int serial8250_register_port(struct uart_port *port) if (ret == 0) ret = uart->port.line; } up(&serial_sem); mutex_unlock(&serial_mutex); return ret; } Loading @@ -2561,7 +2562,7 @@ void serial8250_unregister_port(int line) { struct uart_8250_port *uart = &serial8250_ports[line]; down(&serial_sem); mutex_lock(&serial_mutex); uart_remove_one_port(&serial8250_reg, &uart->port); if (serial8250_isa_devs) { uart->port.flags &= ~UPF_BOOT_AUTOCONF; Loading @@ -2571,7 +2572,7 @@ void serial8250_unregister_port(int line) } else { uart->port.dev = NULL; } up(&serial_sem); mutex_unlock(&serial_mutex); } EXPORT_SYMBOL(serial8250_unregister_port); Loading drivers/serial/crisv10.c +4 −7 Original line number Diff line number Diff line Loading @@ -442,6 +442,7 @@ static char *serial_version = "$Revision: 1.25 $"; #include <linux/init.h> #include <asm/uaccess.h> #include <linux/kernel.h> #include <linux/mutex.h> #include <asm/io.h> #include <asm/irq.h> Loading Loading @@ -1315,11 +1316,7 @@ static const struct control_pins e100_modem_pins[NR_PORTS] = * memory if large numbers of serial ports are open. */ static unsigned char *tmp_buf; #ifdef DECLARE_MUTEX static DECLARE_MUTEX(tmp_buf_sem); #else static struct semaphore tmp_buf_sem = MUTEX; #endif static DEFINE_MUTEX(tmp_buf_mutex); /* Calculate the chartime depending on baudrate, numbor of bits etc. */ static void update_char_time(struct e100_serial * info) Loading Loading @@ -3661,7 +3658,7 @@ rs_raw_write(struct tty_struct * tty, int from_user, * design. */ if (from_user) { down(&tmp_buf_sem); mutex_lock(&tmp_buf_mutex); while (1) { int c1; c = CIRC_SPACE_TO_END(info->xmit.head, Loading Loading @@ -3692,7 +3689,7 @@ rs_raw_write(struct tty_struct * tty, int from_user, count -= c; ret += c; } up(&tmp_buf_sem); mutex_unlock(&tmp_buf_mutex); } else { cli(); while (count) { Loading drivers/serial/pmac_zilog.c +12 −11 Original line number Diff line number Diff line Loading @@ -60,6 +60,7 @@ #include <linux/pmu.h> #include <linux/bitops.h> #include <linux/sysrq.h> #include <linux/mutex.h> #include <asm/sections.h> #include <asm/io.h> #include <asm/irq.h> Loading Loading @@ -96,7 +97,7 @@ MODULE_LICENSE("GPL"); */ static struct uart_pmac_port pmz_ports[MAX_ZS_PORTS]; static int pmz_ports_count; static DECLARE_MUTEX(pmz_irq_sem); static DEFINE_MUTEX(pmz_irq_mutex); static struct uart_driver pmz_uart_reg = { .owner = THIS_MODULE, Loading Loading @@ -922,7 +923,7 @@ static int pmz_startup(struct uart_port *port) if (uap->node == NULL) return -ENODEV; down(&pmz_irq_sem); mutex_lock(&pmz_irq_mutex); uap->flags |= PMACZILOG_FLAG_IS_OPEN; Loading @@ -940,11 +941,11 @@ static int pmz_startup(struct uart_port *port) dev_err(&uap->dev->ofdev.dev, "Unable to register zs interrupt handler.\n"); pmz_set_scc_power(uap, 0); up(&pmz_irq_sem); mutex_unlock(&pmz_irq_mutex); return -ENXIO; } up(&pmz_irq_sem); mutex_unlock(&pmz_irq_mutex); /* Right now, we deal with delay by blocking here, I'll be * smarter later on Loading Loading @@ -981,7 +982,7 @@ static void pmz_shutdown(struct uart_port *port) if (uap->node == NULL) return; down(&pmz_irq_sem); mutex_lock(&pmz_irq_mutex); /* Release interrupt handler */ free_irq(uap->port.irq, uap); Loading @@ -1002,7 +1003,7 @@ static void pmz_shutdown(struct uart_port *port) if (ZS_IS_CONS(uap) || ZS_IS_ASLEEP(uap)) { spin_unlock_irqrestore(&port->lock, flags); up(&pmz_irq_sem); mutex_unlock(&pmz_irq_mutex); return; } Loading @@ -1019,7 +1020,7 @@ static void pmz_shutdown(struct uart_port *port) spin_unlock_irqrestore(&port->lock, flags); up(&pmz_irq_sem); mutex_unlock(&pmz_irq_mutex); pmz_debug("pmz: shutdown() done.\n"); } Loading Loading @@ -1591,7 +1592,7 @@ static int pmz_suspend(struct macio_dev *mdev, pm_message_t pm_state) state = pmz_uart_reg.state + uap->port.line; down(&pmz_irq_sem); mutex_lock(&pmz_irq_mutex); down(&state->sem); spin_lock_irqsave(&uap->port.lock, flags); Loading Loading @@ -1624,7 +1625,7 @@ static int pmz_suspend(struct macio_dev *mdev, pm_message_t pm_state) pmz_set_scc_power(uap, 0); up(&state->sem); up(&pmz_irq_sem); mutex_unlock(&pmz_irq_mutex); pmz_debug("suspend, switching complete\n"); Loading @@ -1651,7 +1652,7 @@ static int pmz_resume(struct macio_dev *mdev) state = pmz_uart_reg.state + uap->port.line; down(&pmz_irq_sem); mutex_lock(&pmz_irq_mutex); down(&state->sem); spin_lock_irqsave(&uap->port.lock, flags); Loading Loading @@ -1685,7 +1686,7 @@ static int pmz_resume(struct macio_dev *mdev) bail: up(&state->sem); up(&pmz_irq_sem); mutex_unlock(&pmz_irq_mutex); /* Right now, we deal with delay by blocking here, I'll be * smarter later on Loading drivers/serial/serial_core.c +8 −7 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ #include <linux/device.h> #include <linux/serial.h> /* for serial_state and serial_icounter_struct */ #include <linux/delay.h> #include <linux/mutex.h> #include <asm/irq.h> #include <asm/uaccess.h> Loading @@ -47,7 +48,7 @@ /* * This is used to lock changes in serial line configuration. */ static DECLARE_MUTEX(port_sem); static DEFINE_MUTEX(port_mutex); #define HIGH_BITS_OFFSET ((sizeof(long)-sizeof(int))*8) Loading Loading @@ -1472,7 +1473,7 @@ static struct uart_state *uart_get(struct uart_driver *drv, int line) { struct uart_state *state; down(&port_sem); mutex_lock(&port_mutex); state = drv->state + line; if (down_interruptible(&state->sem)) { state = ERR_PTR(-ERESTARTSYS); Loading Loading @@ -1509,7 +1510,7 @@ static struct uart_state *uart_get(struct uart_driver *drv, int line) } out: up(&port_sem); mutex_unlock(&port_mutex); return state; } Loading Loading @@ -2219,7 +2220,7 @@ int uart_add_one_port(struct uart_driver *drv, struct uart_port *port) state = drv->state + port->line; down(&port_sem); mutex_lock(&port_mutex); if (state->port) { ret = -EINVAL; goto out; Loading Loading @@ -2255,7 +2256,7 @@ int uart_add_one_port(struct uart_driver *drv, struct uart_port *port) register_console(port->cons); out: up(&port_sem); mutex_unlock(&port_mutex); return ret; } Loading @@ -2279,7 +2280,7 @@ int uart_remove_one_port(struct uart_driver *drv, struct uart_port *port) printk(KERN_ALERT "Removing wrong port: %p != %p\n", state->port, port); down(&port_sem); mutex_lock(&port_mutex); /* * Remove the devices from devfs Loading @@ -2288,7 +2289,7 @@ int uart_remove_one_port(struct uart_driver *drv, struct uart_port *port) uart_unconfigure_port(drv, state); state->port = NULL; up(&port_sem); mutex_unlock(&port_mutex); return 0; } Loading drivers/serial/serial_txx9.c +6 −5 Original line number Diff line number Diff line Loading @@ -52,6 +52,7 @@ #include <linux/tty_flip.h> #include <linux/serial_core.h> #include <linux/serial.h> #include <linux/mutex.h> #include <asm/io.h> #include <asm/irq.h> Loading Loading @@ -1018,7 +1019,7 @@ static void serial_txx9_resume_port(int line) uart_resume_port(&serial_txx9_reg, &serial_txx9_ports[line].port); } static DECLARE_MUTEX(serial_txx9_sem); static DEFINE_MUTEX(serial_txx9_mutex); /** * serial_txx9_register_port - register a serial port Loading @@ -1037,7 +1038,7 @@ static int __devinit serial_txx9_register_port(struct uart_port *port) struct uart_txx9_port *uart; int ret = -ENOSPC; down(&serial_txx9_sem); mutex_lock(&serial_txx9_mutex); for (i = 0; i < UART_NR; i++) { uart = &serial_txx9_ports[i]; if (uart->port.type == PORT_UNKNOWN) Loading @@ -1058,7 +1059,7 @@ static int __devinit serial_txx9_register_port(struct uart_port *port) if (ret == 0) ret = uart->port.line; } up(&serial_txx9_sem); mutex_unlock(&serial_txx9_mutex); return ret; } Loading @@ -1073,7 +1074,7 @@ static void __devexit serial_txx9_unregister_port(int line) { struct uart_txx9_port *uart = &serial_txx9_ports[line]; down(&serial_txx9_sem); mutex_lock(&serial_txx9_mutex); uart_remove_one_port(&serial_txx9_reg, &uart->port); uart->port.flags = 0; uart->port.type = PORT_UNKNOWN; Loading @@ -1082,7 +1083,7 @@ static void __devexit serial_txx9_unregister_port(int line) uart->port.membase = 0; uart->port.dev = NULL; uart_add_one_port(&serial_txx9_reg, &uart->port); up(&serial_txx9_sem); mutex_unlock(&serial_txx9_mutex); } /* Loading Loading
drivers/serial/8250.c +6 −5 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ #include <linux/serial.h> #include <linux/serial_8250.h> #include <linux/nmi.h> #include <linux/mutex.h> #include <asm/io.h> #include <asm/irq.h> Loading Loading @@ -2467,7 +2468,7 @@ static struct platform_device *serial8250_isa_devs; * 16x50 serial ports to be configured at run-time, to support PCMCIA * modems and PCI multiport cards. */ static DECLARE_MUTEX(serial_sem); static DEFINE_MUTEX(serial_mutex); static struct uart_8250_port *serial8250_find_match_or_unused(struct uart_port *port) { Loading Loading @@ -2522,7 +2523,7 @@ int serial8250_register_port(struct uart_port *port) if (port->uartclk == 0) return -EINVAL; down(&serial_sem); mutex_lock(&serial_mutex); uart = serial8250_find_match_or_unused(port); if (uart) { Loading @@ -2544,7 +2545,7 @@ int serial8250_register_port(struct uart_port *port) if (ret == 0) ret = uart->port.line; } up(&serial_sem); mutex_unlock(&serial_mutex); return ret; } Loading @@ -2561,7 +2562,7 @@ void serial8250_unregister_port(int line) { struct uart_8250_port *uart = &serial8250_ports[line]; down(&serial_sem); mutex_lock(&serial_mutex); uart_remove_one_port(&serial8250_reg, &uart->port); if (serial8250_isa_devs) { uart->port.flags &= ~UPF_BOOT_AUTOCONF; Loading @@ -2571,7 +2572,7 @@ void serial8250_unregister_port(int line) } else { uart->port.dev = NULL; } up(&serial_sem); mutex_unlock(&serial_mutex); } EXPORT_SYMBOL(serial8250_unregister_port); Loading
drivers/serial/crisv10.c +4 −7 Original line number Diff line number Diff line Loading @@ -442,6 +442,7 @@ static char *serial_version = "$Revision: 1.25 $"; #include <linux/init.h> #include <asm/uaccess.h> #include <linux/kernel.h> #include <linux/mutex.h> #include <asm/io.h> #include <asm/irq.h> Loading Loading @@ -1315,11 +1316,7 @@ static const struct control_pins e100_modem_pins[NR_PORTS] = * memory if large numbers of serial ports are open. */ static unsigned char *tmp_buf; #ifdef DECLARE_MUTEX static DECLARE_MUTEX(tmp_buf_sem); #else static struct semaphore tmp_buf_sem = MUTEX; #endif static DEFINE_MUTEX(tmp_buf_mutex); /* Calculate the chartime depending on baudrate, numbor of bits etc. */ static void update_char_time(struct e100_serial * info) Loading Loading @@ -3661,7 +3658,7 @@ rs_raw_write(struct tty_struct * tty, int from_user, * design. */ if (from_user) { down(&tmp_buf_sem); mutex_lock(&tmp_buf_mutex); while (1) { int c1; c = CIRC_SPACE_TO_END(info->xmit.head, Loading Loading @@ -3692,7 +3689,7 @@ rs_raw_write(struct tty_struct * tty, int from_user, count -= c; ret += c; } up(&tmp_buf_sem); mutex_unlock(&tmp_buf_mutex); } else { cli(); while (count) { Loading
drivers/serial/pmac_zilog.c +12 −11 Original line number Diff line number Diff line Loading @@ -60,6 +60,7 @@ #include <linux/pmu.h> #include <linux/bitops.h> #include <linux/sysrq.h> #include <linux/mutex.h> #include <asm/sections.h> #include <asm/io.h> #include <asm/irq.h> Loading Loading @@ -96,7 +97,7 @@ MODULE_LICENSE("GPL"); */ static struct uart_pmac_port pmz_ports[MAX_ZS_PORTS]; static int pmz_ports_count; static DECLARE_MUTEX(pmz_irq_sem); static DEFINE_MUTEX(pmz_irq_mutex); static struct uart_driver pmz_uart_reg = { .owner = THIS_MODULE, Loading Loading @@ -922,7 +923,7 @@ static int pmz_startup(struct uart_port *port) if (uap->node == NULL) return -ENODEV; down(&pmz_irq_sem); mutex_lock(&pmz_irq_mutex); uap->flags |= PMACZILOG_FLAG_IS_OPEN; Loading @@ -940,11 +941,11 @@ static int pmz_startup(struct uart_port *port) dev_err(&uap->dev->ofdev.dev, "Unable to register zs interrupt handler.\n"); pmz_set_scc_power(uap, 0); up(&pmz_irq_sem); mutex_unlock(&pmz_irq_mutex); return -ENXIO; } up(&pmz_irq_sem); mutex_unlock(&pmz_irq_mutex); /* Right now, we deal with delay by blocking here, I'll be * smarter later on Loading Loading @@ -981,7 +982,7 @@ static void pmz_shutdown(struct uart_port *port) if (uap->node == NULL) return; down(&pmz_irq_sem); mutex_lock(&pmz_irq_mutex); /* Release interrupt handler */ free_irq(uap->port.irq, uap); Loading @@ -1002,7 +1003,7 @@ static void pmz_shutdown(struct uart_port *port) if (ZS_IS_CONS(uap) || ZS_IS_ASLEEP(uap)) { spin_unlock_irqrestore(&port->lock, flags); up(&pmz_irq_sem); mutex_unlock(&pmz_irq_mutex); return; } Loading @@ -1019,7 +1020,7 @@ static void pmz_shutdown(struct uart_port *port) spin_unlock_irqrestore(&port->lock, flags); up(&pmz_irq_sem); mutex_unlock(&pmz_irq_mutex); pmz_debug("pmz: shutdown() done.\n"); } Loading Loading @@ -1591,7 +1592,7 @@ static int pmz_suspend(struct macio_dev *mdev, pm_message_t pm_state) state = pmz_uart_reg.state + uap->port.line; down(&pmz_irq_sem); mutex_lock(&pmz_irq_mutex); down(&state->sem); spin_lock_irqsave(&uap->port.lock, flags); Loading Loading @@ -1624,7 +1625,7 @@ static int pmz_suspend(struct macio_dev *mdev, pm_message_t pm_state) pmz_set_scc_power(uap, 0); up(&state->sem); up(&pmz_irq_sem); mutex_unlock(&pmz_irq_mutex); pmz_debug("suspend, switching complete\n"); Loading @@ -1651,7 +1652,7 @@ static int pmz_resume(struct macio_dev *mdev) state = pmz_uart_reg.state + uap->port.line; down(&pmz_irq_sem); mutex_lock(&pmz_irq_mutex); down(&state->sem); spin_lock_irqsave(&uap->port.lock, flags); Loading Loading @@ -1685,7 +1686,7 @@ static int pmz_resume(struct macio_dev *mdev) bail: up(&state->sem); up(&pmz_irq_sem); mutex_unlock(&pmz_irq_mutex); /* Right now, we deal with delay by blocking here, I'll be * smarter later on Loading
drivers/serial/serial_core.c +8 −7 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ #include <linux/device.h> #include <linux/serial.h> /* for serial_state and serial_icounter_struct */ #include <linux/delay.h> #include <linux/mutex.h> #include <asm/irq.h> #include <asm/uaccess.h> Loading @@ -47,7 +48,7 @@ /* * This is used to lock changes in serial line configuration. */ static DECLARE_MUTEX(port_sem); static DEFINE_MUTEX(port_mutex); #define HIGH_BITS_OFFSET ((sizeof(long)-sizeof(int))*8) Loading Loading @@ -1472,7 +1473,7 @@ static struct uart_state *uart_get(struct uart_driver *drv, int line) { struct uart_state *state; down(&port_sem); mutex_lock(&port_mutex); state = drv->state + line; if (down_interruptible(&state->sem)) { state = ERR_PTR(-ERESTARTSYS); Loading Loading @@ -1509,7 +1510,7 @@ static struct uart_state *uart_get(struct uart_driver *drv, int line) } out: up(&port_sem); mutex_unlock(&port_mutex); return state; } Loading Loading @@ -2219,7 +2220,7 @@ int uart_add_one_port(struct uart_driver *drv, struct uart_port *port) state = drv->state + port->line; down(&port_sem); mutex_lock(&port_mutex); if (state->port) { ret = -EINVAL; goto out; Loading Loading @@ -2255,7 +2256,7 @@ int uart_add_one_port(struct uart_driver *drv, struct uart_port *port) register_console(port->cons); out: up(&port_sem); mutex_unlock(&port_mutex); return ret; } Loading @@ -2279,7 +2280,7 @@ int uart_remove_one_port(struct uart_driver *drv, struct uart_port *port) printk(KERN_ALERT "Removing wrong port: %p != %p\n", state->port, port); down(&port_sem); mutex_lock(&port_mutex); /* * Remove the devices from devfs Loading @@ -2288,7 +2289,7 @@ int uart_remove_one_port(struct uart_driver *drv, struct uart_port *port) uart_unconfigure_port(drv, state); state->port = NULL; up(&port_sem); mutex_unlock(&port_mutex); return 0; } Loading
drivers/serial/serial_txx9.c +6 −5 Original line number Diff line number Diff line Loading @@ -52,6 +52,7 @@ #include <linux/tty_flip.h> #include <linux/serial_core.h> #include <linux/serial.h> #include <linux/mutex.h> #include <asm/io.h> #include <asm/irq.h> Loading Loading @@ -1018,7 +1019,7 @@ static void serial_txx9_resume_port(int line) uart_resume_port(&serial_txx9_reg, &serial_txx9_ports[line].port); } static DECLARE_MUTEX(serial_txx9_sem); static DEFINE_MUTEX(serial_txx9_mutex); /** * serial_txx9_register_port - register a serial port Loading @@ -1037,7 +1038,7 @@ static int __devinit serial_txx9_register_port(struct uart_port *port) struct uart_txx9_port *uart; int ret = -ENOSPC; down(&serial_txx9_sem); mutex_lock(&serial_txx9_mutex); for (i = 0; i < UART_NR; i++) { uart = &serial_txx9_ports[i]; if (uart->port.type == PORT_UNKNOWN) Loading @@ -1058,7 +1059,7 @@ static int __devinit serial_txx9_register_port(struct uart_port *port) if (ret == 0) ret = uart->port.line; } up(&serial_txx9_sem); mutex_unlock(&serial_txx9_mutex); return ret; } Loading @@ -1073,7 +1074,7 @@ static void __devexit serial_txx9_unregister_port(int line) { struct uart_txx9_port *uart = &serial_txx9_ports[line]; down(&serial_txx9_sem); mutex_lock(&serial_txx9_mutex); uart_remove_one_port(&serial_txx9_reg, &uart->port); uart->port.flags = 0; uart->port.type = PORT_UNKNOWN; Loading @@ -1082,7 +1083,7 @@ static void __devexit serial_txx9_unregister_port(int line) uart->port.membase = 0; uart->port.dev = NULL; uart_add_one_port(&serial_txx9_reg, &uart->port); up(&serial_txx9_sem); mutex_unlock(&serial_txx9_mutex); } /* Loading