Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 125080
b: refs/heads/master
c: 6b447f0
h: refs/heads/master
v: v3
  • Loading branch information
Alan Cox authored and Linus Torvalds committed Jan 2, 2009
1 parent 5d95a2f commit c406e8c
Show file tree
Hide file tree
Showing 6 changed files with 15 additions and 9 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: eeb4613436f0f19a38f667ea3078821040559c68
refs/heads/master: 6b447f04a9aecdf2a30c1a97e4b034ac7931bb70
9 changes: 8 additions & 1 deletion trunk/drivers/usb/serial/ftdi_sio.c
Original file line number Diff line number Diff line change
Expand Up @@ -1054,6 +1054,8 @@ static int set_serial_info(struct tty_struct *tty,

if (copy_from_user(&new_serial, newinfo, sizeof(new_serial)))
return -EFAULT;

lock_kernel();
old_priv = *priv;

/* Do error checking and permission checking */
Expand All @@ -1069,8 +1071,10 @@ static int set_serial_info(struct tty_struct *tty,
}

if ((new_serial.baud_base != priv->baud_base) &&
(new_serial.baud_base < 9600))
(new_serial.baud_base < 9600)) {
unlock_kernel();
return -EINVAL;
}

/* Make the changes - these are privileged changes! */

Expand Down Expand Up @@ -1098,8 +1102,11 @@ static int set_serial_info(struct tty_struct *tty,
(priv->flags & ASYNC_SPD_MASK)) ||
(((priv->flags & ASYNC_SPD_MASK) == ASYNC_SPD_CUST) &&
(old_priv.custom_divisor != priv->custom_divisor))) {
unlock_kernel();
change_speed(tty, port);
}
else
unlock_kernel();
return 0;

} /* set_serial_info */
Expand Down
1 change: 1 addition & 0 deletions trunk/drivers/usb/serial/kl5kusb105.c
Original file line number Diff line number Diff line change
Expand Up @@ -878,6 +878,7 @@ static void mct_u232_break_ctl(struct tty_struct *tty, int break_state)

dbg("%sstate=%d", __func__, break_state);

/* LOCKING */
if (break_state)
lcr |= MCT_U232_SET_BREAK;

Expand Down
2 changes: 1 addition & 1 deletion trunk/drivers/usb/serial/mct_u232.c
Original file line number Diff line number Diff line change
Expand Up @@ -721,10 +721,10 @@ static void mct_u232_break_ctl(struct tty_struct *tty, int break_state)

spin_lock_irqsave(&priv->lock, flags);
lcr = priv->last_lcr;
spin_unlock_irqrestore(&priv->lock, flags);

if (break_state)
lcr |= MCT_U232_SET_BREAK;
spin_unlock_irqrestore(&priv->lock, flags);

mct_u232_set_line_ctrl(serial, lcr);
} /* mct_u232_break_ctl */
Expand Down
3 changes: 3 additions & 0 deletions trunk/drivers/usb/serial/mos7840.c
Original file line number Diff line number Diff line change
Expand Up @@ -1343,6 +1343,7 @@ static void mos7840_break(struct tty_struct *tty, int break_state)
else
data = mos7840_port->shadowLCR & ~LCR_SET_BREAK;

/* FIXME: no locking on shadowLCR anywhere in driver */
mos7840_port->shadowLCR = data;
dbg("mcs7840_break mos7840_port->shadowLCR is %x\n",
mos7840_port->shadowLCR);
Expand Down Expand Up @@ -2214,10 +2215,12 @@ static int mos7840_set_modem_info(struct moschip_port *mos7840_port,
break;
}

lock_kernel();
mos7840_port->shadowMCR = mcr;

Data = mos7840_port->shadowMCR;
status = mos7840_set_uart_reg(port, MODEM_CONTROL_REGISTER, Data);
unlock_kernel();
if (status < 0) {
dbg("setting MODEM_CONTROL_REGISTER Failed\n");
return -1;
Expand Down
7 changes: 1 addition & 6 deletions trunk/drivers/usb/serial/usb-serial.c
Original file line number Diff line number Diff line change
Expand Up @@ -382,9 +382,7 @@ static int serial_ioctl(struct tty_struct *tty, struct file *file,
/* pass on to the driver specific version of this function
if it is available */
if (port->serial->type->ioctl) {
lock_kernel();
retval = port->serial->type->ioctl(tty, file, cmd, arg);
unlock_kernel();
} else
retval = -ENOIOCTLCMD;
return retval;
Expand Down Expand Up @@ -413,11 +411,8 @@ static int serial_break(struct tty_struct *tty, int break_state)
WARN_ON(!port->port.count);
/* pass on to the driver specific version of this function
if it is available */
if (port->serial->type->break_ctl) {
lock_kernel();
if (port->serial->type->break_ctl)
port->serial->type->break_ctl(tty, break_state);
unlock_kernel();
}
return 0;
}

Expand Down

0 comments on commit c406e8c

Please sign in to comment.