lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Fri,  8 Feb 2008 20:04:47 +0100
From:	Jiri Slaby <jirislaby@...il.com>
To:	Andrew Morton <akpm@...ux-foundation.org>
Cc:	<linux-kernel@...r.kernel.org>,
	Alan Cox <alan@...rguk.ukuu.org.uk>,
	Jiri Slaby <jirislaby@...il.com>
Subject: [PATCH 1/1] tty: BKL pushdown fix

Signed-off-by: Jiri Slaby <jirislaby@...il.com>
---
 drivers/char/n_hdlc.c  |    4 ++--
 drivers/char/n_r3964.c |    6 +++---
 drivers/char/n_tty.c   |    2 +-
 drivers/char/tty_io.c  |   16 +++++++++-------
 drivers/char/vt.c      |    8 ++++----
 5 files changed, 19 insertions(+), 17 deletions(-)

diff --git a/drivers/char/n_hdlc.c b/drivers/char/n_hdlc.c
index 0bc0498..77629da 100644
--- a/drivers/char/n_hdlc.c
+++ b/drivers/char/n_hdlc.c
@@ -579,7 +579,7 @@ static ssize_t n_hdlc_tty_read(struct tty_struct *tty, struct file *file,
 	}
 
 	lock_kernel();
-	
+
 	for (;;) {
 		if (test_bit(TTY_OTHER_CLOSED, &tty->flags)) {
 			unlock_kernel();
@@ -672,7 +672,7 @@ static ssize_t n_hdlc_tty_write(struct tty_struct *tty, struct file *file,
 	}
 	
 	lock_kernel();
-	
+
 	add_wait_queue(&tty->write_wait, &wait);
 	set_current_state(TASK_INTERRUPTIBLE);
 	
diff --git a/drivers/char/n_r3964.c b/drivers/char/n_r3964.c
index 3eb7880..3f6486e 100644
--- a/drivers/char/n_r3964.c
+++ b/drivers/char/n_r3964.c
@@ -1074,7 +1074,7 @@ static ssize_t r3964_read(struct tty_struct *tty, struct file *file,
 	int count;
 
 	TRACE_L("read()");
-	
+
 	lock_kernel();
 
 	pClient = findClient(pInfo, task_pid(current));
@@ -1165,7 +1165,7 @@ static ssize_t r3964_write(struct tty_struct *tty, struct file *file,
 	pHeader->owner = NULL;
 
 	lock_kernel();
-	
+
 	pClient = findClient(pInfo, task_pid(current));
 	if (pClient) {
 		pHeader->owner = pClient;
@@ -1182,7 +1182,7 @@ static ssize_t r3964_write(struct tty_struct *tty, struct file *file,
  */
 	add_tx_queue(pInfo, pHeader);
 	trigger_transmit(pInfo);
-	
+
 	unlock_kernel();
 
 	return 0;
diff --git a/drivers/char/n_tty.c b/drivers/char/n_tty.c
index a9c8c8f..79a052e 100644
--- a/drivers/char/n_tty.c
+++ b/drivers/char/n_tty.c
@@ -1303,7 +1303,7 @@ do_it_again:
 			return -ERESTARTSYS;
 	}
 	packet = tty->packet;
-	
+
 	add_wait_queue(&tty->read_wait, &wait);
 	while (nr) {
 		/* First test for status change. */
diff --git a/drivers/char/tty_io.c b/drivers/char/tty_io.c
index 3d489ce..bf08a38 100644
--- a/drivers/char/tty_io.c
+++ b/drivers/char/tty_io.c
@@ -1204,8 +1204,8 @@ static unsigned int hung_up_tty_poll(struct file *filp, poll_table *wait)
 	return POLLIN | POLLOUT | POLLERR | POLLHUP | POLLRDNORM | POLLWRNORM;
 }
 
-static long hung_up_tty_ioctl(struct inode *inode, struct file *file,
-			     unsigned int cmd, unsigned long arg)
+static long hung_up_tty_ioctl(struct file *file, unsigned int cmd,
+		unsigned long arg)
 {
 	return cmd == TIOCSPGRP ? -ENOTTY : -EIO;
 }
@@ -1259,7 +1259,7 @@ static const struct file_operations hung_up_tty_fops = {
 	.read		= hung_up_tty_read,
 	.write		= hung_up_tty_write,
 	.poll		= hung_up_tty_poll,
-	.ioctl		= hung_up_tty_ioctl,
+	.unlocked_ioctl	= hung_up_tty_ioctl,
 	.compat_ioctl	= hung_up_tty_compat_ioctl,
 	.release	= tty_release,
 };
@@ -3208,10 +3208,12 @@ static int tiocsetd(struct tty_struct *tty, int __user *p)
 
 	if (get_user(ldisc, p))
 		return -EFAULT;
-		
+
 	lock_kernel();
 	ret = tty_set_ldisc(tty, ldisc);
 	unlock_kernel();
+
+	return ret;
 }
 
 /**
@@ -3230,7 +3232,7 @@ static int tiocsetd(struct tty_struct *tty, int __user *p)
 static int send_break(struct tty_struct *tty, unsigned int duration)
 {
 	int retval = -EINTR;
-	
+
 	lock_kernel();
 	if (tty_write_lock(tty, 0) < 0)
 		goto out;
@@ -3345,9 +3347,9 @@ long tty_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
 	/*
 	 * Break handling by driver
 	 */
-	 
+
 	retval = -EINVAL;
-	
+
 	if (!tty->driver->break_ctl) {
 		switch (cmd) {
 		case TIOCSBRK:
diff --git a/drivers/char/vt.c b/drivers/char/vt.c
index d6a3a2a..a26d65b 100644
--- a/drivers/char/vt.c
+++ b/drivers/char/vt.c
@@ -2531,9 +2531,9 @@ int tioclinux(struct tty_struct *tty, unsigned long arg)
 	if (get_user(type, p))
 		return -EFAULT;
 	ret = 0;
-	
+
 	lock_kernel();
-	
+
 	switch (type)
 	{
 		case TIOCL_SETSEL:
@@ -2553,7 +2553,7 @@ int tioclinux(struct tty_struct *tty, unsigned long arg)
 			ret = sel_loadlut(p);
 			break;
 		case TIOCL_GETSHIFTSTATE:
-			
+
 	/*
 	 * Make it possible to react to Shift+Mousebutton.
 	 * Note that 'shift_state' is an undocumented
@@ -3823,7 +3823,7 @@ static int con_font_get(struct vc_data *vc, struct console_font_op *op)
 		goto out;
 
 	c = (font.width+7)/8 * 32 * font.charcount;
-	
+
 	if (op->data && font.charcount > op->charcount)
 		rc = -ENOSPC;
 	if (!(op->flags & KD_FONT_FLAG_OLD)) {
-- 
1.5.3.8

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists