* [PATCH] riscom8: Prepare for BKL pushdown
@ 2008-02-20 20:23 Alan Cox
0 siblings, 0 replies; only message in thread
From: Alan Cox @ 2008-02-20 20:23 UTC (permalink / raw)
To: akpm, linux-kernel
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>
diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.25-rc2-mm1/drivers/char/riscom8.c linux-2.6.25-rc2-mm1/drivers/char/riscom8.c
--- linux.vanilla-2.6.25-rc2-mm1/drivers/char/riscom8.c 2008-02-19 11:03:00.000000000 +0000
+++ linux-2.6.25-rc2-mm1/drivers/char/riscom8.c 2008-02-20 11:48:38.000000000 +0000
@@ -1385,7 +1385,7 @@
{
struct riscom_port *port = (struct riscom_port *)tty->driver_data;
void __user *argp = (void __user *)arg;
- int retval;
+ int retval = 0;
if (rc_paranoia_check(port, tty->name, "rc_ioctl"))
return -ENODEV;
@@ -1406,23 +1406,20 @@
tty_wait_until_sent(tty, 0);
rc_send_break(port, arg ? arg*(HZ/10) : HZ/4);
break;
- case TIOCGSOFTCAR:
- return put_user(C_CLOCAL(tty) ? 1 : 0, (unsigned __user *)argp);
- case TIOCSSOFTCAR:
- if (get_user(arg,(unsigned __user *) argp))
- return -EFAULT;
- tty->termios->c_cflag =
- ((tty->termios->c_cflag & ~CLOCAL) |
- (arg ? CLOCAL : 0));
+ case TIOCGSERIAL:
+ lock_kernel();
+ retval = rc_get_serial_info(port, argp);
+ unlock_kernel();
break;
- case TIOCGSERIAL:
- return rc_get_serial_info(port, argp);
case TIOCSSERIAL:
- return rc_set_serial_info(port, argp);
+ lock_kernel();
+ retval = rc_set_serial_info(port, argp);
+ unlock_kernel();
+ break;
default:
- return -ENOIOCTLCMD;
+ retval = -ENOIOCTLCMD;
}
- return 0;
+ return retval;
}
static void rc_throttle(struct tty_struct * tty)
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2008-02-20 20:33 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-02-20 20:23 [PATCH] riscom8: Prepare for BKL pushdown Alan Cox
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.