aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/char/riscom8.c
diff options
context:
space:
mode:
authorAlan Cox <alan@lxorguk.ukuu.org.uk>2008-04-30 03:53:21 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2008-04-30 11:29:39 -0400
commiteb1745529622f204733139bde2201eb4ee994c03 (patch)
treee75287f7ecd219d9e02323c1658589fd8732508b /drivers/char/riscom8.c
parent9d6d162d495d7abf2bfcdffc73c0892f1179579a (diff)
riscom8: Prepare for BKL pushdown
Push the locking down into a couple of functions that need it and remove bogus TIOCG/SSOFTCAR handling Signed-off-by: Alan Cox <alan@redhat.com> Cc: Jeff Garzik <jeff@garzik.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/char/riscom8.c')
-rw-r--r--drivers/char/riscom8.c25
1 files changed, 11 insertions, 14 deletions
diff --git a/drivers/char/riscom8.c b/drivers/char/riscom8.c
index 3f9d0a9ac36d..b56e0e04cb4a 100644
--- a/drivers/char/riscom8.c
+++ b/drivers/char/riscom8.c
@@ -1385,7 +1385,7 @@ static int rc_ioctl(struct tty_struct * tty, struct file * filp,
1385{ 1385{
1386 struct riscom_port *port = (struct riscom_port *)tty->driver_data; 1386 struct riscom_port *port = (struct riscom_port *)tty->driver_data;
1387 void __user *argp = (void __user *)arg; 1387 void __user *argp = (void __user *)arg;
1388 int retval; 1388 int retval = 0;
1389 1389
1390 if (rc_paranoia_check(port, tty->name, "rc_ioctl")) 1390 if (rc_paranoia_check(port, tty->name, "rc_ioctl"))
1391 return -ENODEV; 1391 return -ENODEV;
@@ -1406,23 +1406,20 @@ static int rc_ioctl(struct tty_struct * tty, struct file * filp,
1406 tty_wait_until_sent(tty, 0); 1406 tty_wait_until_sent(tty, 0);
1407 rc_send_break(port, arg ? arg*(HZ/10) : HZ/4); 1407 rc_send_break(port, arg ? arg*(HZ/10) : HZ/4);
1408 break; 1408 break;
1409 case TIOCGSOFTCAR: 1409 case TIOCGSERIAL:
1410 return put_user(C_CLOCAL(tty) ? 1 : 0, (unsigned __user *)argp); 1410 lock_kernel();
1411 case TIOCSSOFTCAR: 1411 retval = rc_get_serial_info(port, argp);
1412 if (get_user(arg,(unsigned __user *) argp)) 1412 unlock_kernel();
1413 return -EFAULT;
1414 tty->termios->c_cflag =
1415 ((tty->termios->c_cflag & ~CLOCAL) |
1416 (arg ? CLOCAL : 0));
1417 break; 1413 break;
1418 case TIOCGSERIAL:
1419 return rc_get_serial_info(port, argp);
1420 case TIOCSSERIAL: 1414 case TIOCSSERIAL:
1421 return rc_set_serial_info(port, argp); 1415 lock_kernel();
1416 retval = rc_set_serial_info(port, argp);
1417 unlock_kernel();
1418 break;
1422 default: 1419 default:
1423 return -ENOIOCTLCMD; 1420 retval = -ENOIOCTLCMD;
1424 } 1421 }
1425 return 0; 1422 return retval;
1426} 1423}
1427 1424
1428static void rc_throttle(struct tty_struct * tty) 1425static void rc_throttle(struct tty_struct * tty)