|
@@ -1273,18 +1273,9 @@ static int stl_ioctl(struct tty_struct *tty, struct file *file, unsigned int cmd
|
|
|
|
|
|
rc = 0;
|
|
|
|
|
|
+ lock_kernel();
|
|
|
+
|
|
|
switch (cmd) {
|
|
|
- case TIOCGSOFTCAR:
|
|
|
- rc = put_user(((tty->termios->c_cflag & CLOCAL) ? 1 : 0),
|
|
|
- (unsigned __user *) argp);
|
|
|
- break;
|
|
|
- case TIOCSSOFTCAR:
|
|
|
- if (get_user(ival, (unsigned int __user *) arg))
|
|
|
- return -EFAULT;
|
|
|
- tty->termios->c_cflag =
|
|
|
- (tty->termios->c_cflag & ~CLOCAL) |
|
|
|
- (ival ? CLOCAL : 0);
|
|
|
- break;
|
|
|
case TIOCGSERIAL:
|
|
|
rc = stl_getserial(portp, argp);
|
|
|
break;
|
|
@@ -1308,7 +1299,7 @@ static int stl_ioctl(struct tty_struct *tty, struct file *file, unsigned int cmd
|
|
|
rc = -ENOIOCTLCMD;
|
|
|
break;
|
|
|
}
|
|
|
-
|
|
|
+ unlock_kernel();
|
|
|
return rc;
|
|
|
}
|
|
|
|