All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alan Cox <alan@redhat.com>
To: linux-kernel@vger.kernel.org
Subject: [PATCH 60/76] pty: Coding style and polish
Date: Sun, 05 Oct 2008 17:22:00 +0100	[thread overview]
Message-ID: <20081005162154.1997.77611.stgit@localhost.localdomain> (raw)
In-Reply-To: <20081005160231.1997.10462.stgit@localhost.localdomain>

We've done the heavy lifting now its time to mop up a bit

Signed-off-by: Alan Cox <alan@redhat.com>
---

 drivers/char/pty.c |   86 +++++++++++++++++++++++++++-------------------------
 1 files changed, 44 insertions(+), 42 deletions(-)

diff --git a/drivers/char/pty.c b/drivers/char/pty.c
index a391bad..c3ab8c3 100644
--- a/drivers/char/pty.c
+++ b/drivers/char/pty.c
@@ -8,10 +8,12 @@
  *  Added TTY_DO_WRITE_WAKEUP to enable n_tty to send POLL_OUT to
  *      waiting writers -- Sapan Bhatia <sapan@corewars.org>
  *
- *
+ *  When reading this code see also fs/devpts. In particular note that the
+ *  driver_data field is used by the devpts side as a binding to the devpts
+ *  inode.
  */
 
-#include <linux/module.h>	/* For EXPORT_SYMBOL */
+#include <linux/module.h>
 
 #include <linux/errno.h>
 #include <linux/interrupt.h>
@@ -24,26 +26,24 @@
 #include <linux/init.h>
 #include <linux/sysctl.h>
 #include <linux/device.h>
-
-#include <asm/uaccess.h>
-#include <asm/system.h>
+#include <linux/uaccess.h>
 #include <linux/bitops.h>
 #include <linux/devpts_fs.h>
 
+#include <asm/system.h>
+
 /* These are global because they are accessed in tty_io.c */
 #ifdef CONFIG_UNIX98_PTYS
 struct tty_driver *ptm_driver;
 static struct tty_driver *pts_driver;
 #endif
 
-static void pty_close(struct tty_struct * tty, struct file * filp)
+static void pty_close(struct tty_struct *tty, struct file *filp)
 {
-	if (!tty)
-		return;
-	if (tty->driver->subtype == PTY_TYPE_MASTER) {
-		if (tty->count > 1)
-			printk("master pty_close: count = %d!!\n", tty->count);
-	} else {
+	BUG_ON(!tty);
+	if (tty->driver->subtype == PTY_TYPE_MASTER)
+		WARN_ON(tty->count > 1);
+	else {
 		if (tty->count > 2)
 			return;
 	}
@@ -70,13 +70,13 @@ static void pty_close(struct tty_struct * tty, struct file * filp)
  * The unthrottle routine is called by the line discipline to signal
  * that it can receive more characters.  For PTY's, the TTY_THROTTLED
  * flag is always set, to force the line discipline to always call the
- * unthrottle routine when there are fewer than TTY_THRESHOLD_UNTHROTTLE 
+ * unthrottle routine when there are fewer than TTY_THRESHOLD_UNTHROTTLE
  * characters in the queue.  This is necessary since each time this
  * happens, we need to wake up any sleeping processes that could be
  * (1) trying to send data to the pty, or (2) waiting in wait_until_sent()
  * for the pty buffer to be drained.
  */
-static void pty_unthrottle(struct tty_struct * tty)
+static void pty_unthrottle(struct tty_struct *tty)
 {
 	struct tty_struct *o_tty = tty->link;
 
@@ -88,7 +88,7 @@ static void pty_unthrottle(struct tty_struct * tty)
 }
 
 /*
- * WSH 05/24/97: modified to 
+ * WSH 05/24/97: modified to
  *   (1) use space in tty->flip instead of a shared temp buffer
  *	 The flip buffers aren't being used for a pty, so there's lots
  *	 of space available.  The buffer is protected by a per-pty
@@ -101,7 +101,8 @@ static void pty_unthrottle(struct tty_struct * tty)
  * not our partners. We can't just take the other one blindly without
  * risking deadlocks.
  */
-static int pty_write(struct tty_struct * tty, const unsigned char *buf, int count)
+static int pty_write(struct tty_struct *tty, const unsigned char *buf,
+								int count)
 {
 	struct tty_struct *to = tty->link;
 	int	c;
@@ -113,7 +114,7 @@ static int pty_write(struct tty_struct * tty, const unsigned char *buf, int coun
 	if (c > count)
 		c = count;
 	to->ldisc.ops->receive_buf(to, buf, NULL, c);
-	
+
 	return c;
 }
 
@@ -129,17 +130,17 @@ static int pty_write_room(struct tty_struct *tty)
 
 /*
  *	WSH 05/24/97:  Modified for asymmetric MASTER/SLAVE behavior
- *	The chars_in_buffer() value is used by the ldisc select() function 
+ *	The chars_in_buffer() value is used by the ldisc select() function
  *	to hold off writing when chars_in_buffer > WAKEUP_CHARS (== 256).
  *	The pty driver chars_in_buffer() Master/Slave must behave differently:
  *
  *      The Master side needs to allow typed-ahead commands to accumulate
  *      while being canonicalized, so we report "our buffer" as empty until
  *	some threshold is reached, and then report the count. (Any count >
- *	WAKEUP_CHARS is regarded by select() as "full".)  To avoid deadlock 
- *	the count returned must be 0 if no canonical data is available to be 
+ *	WAKEUP_CHARS is regarded by select() as "full".)  To avoid deadlock
+ *	the count returned must be 0 if no canonical data is available to be
  *	read. (The N_TTY ldisc.chars_in_buffer now knows this.)
- *  
+ *
  *	The Slave side passes all characters in raw mode to the Master side's
  *	buffer where they can be read immediately, so in this case we can
  *	return the true count in the buffer.
@@ -156,21 +157,22 @@ static int pty_chars_in_buffer(struct tty_struct *tty)
 	/* The ldisc must report 0 if no characters available to be read */
 	count = to->ldisc.ops->chars_in_buffer(to);
 
-	if (tty->driver->subtype == PTY_TYPE_SLAVE) return count;
+	if (tty->driver->subtype == PTY_TYPE_SLAVE)
+		return count;
 
-	/* Master side driver ... if the other side's read buffer is less than 
+	/* Master side driver ... if the other side's read buffer is less than
 	 * half full, return 0 to allow writers to proceed; otherwise return
-	 * the count.  This leaves a comfortable margin to avoid overflow, 
+	 * the count.  This leaves a comfortable margin to avoid overflow,
 	 * and still allows half a buffer's worth of typed-ahead commands.
 	 */
-	return ((count < N_TTY_BUF_SIZE/2) ? 0 : count);
+	return (count < N_TTY_BUF_SIZE/2) ? 0 : count;
 }
 
 /* Set the lock flag on a pty */
-static int pty_set_lock(struct tty_struct *tty, int __user * arg)
+static int pty_set_lock(struct tty_struct *tty, int __user *arg)
 {
 	int val;
-	if (get_user(val,arg))
+	if (get_user(val, arg))
 		return -EFAULT;
 	if (val)
 		set_bit(TTY_PTY_LOCK, &tty->flags);
@@ -183,13 +185,13 @@ static void pty_flush_buffer(struct tty_struct *tty)
 {
 	struct tty_struct *to = tty->link;
 	unsigned long flags;
-	
+
 	if (!to)
 		return;
-	
+
 	if (to->ldisc.ops->flush_buffer)
 		to->ldisc.ops->flush_buffer(to);
-	
+
 	if (to->packet) {
 		spin_lock_irqsave(&tty->ctrl_lock, flags);
 		tty->ctrl_status |= TIOCPKT_FLUSHWRITE;
@@ -198,7 +200,7 @@ static void pty_flush_buffer(struct tty_struct *tty)
 	}
 }
 
-static int pty_open(struct tty_struct *tty, struct file * filp)
+static int pty_open(struct tty_struct *tty, struct file *filp)
 {
 	int	retval = -ENODEV;
 
@@ -221,10 +223,11 @@ out:
 	return retval;
 }
 
-static void pty_set_termios(struct tty_struct *tty, struct ktermios *old_termios)
+static void pty_set_termios(struct tty_struct *tty,
+					struct ktermios *old_termios)
 {
-        tty->termios->c_cflag &= ~(CSIZE | PARENB);
-        tty->termios->c_cflag |= (CS8 | CREAD);
+	tty->termios->c_cflag &= ~(CSIZE | PARENB);
+	tty->termios->c_cflag |= (CS8 | CREAD);
 }
 
 static int pty_install(struct tty_driver *driver, struct tty_struct *tty)
@@ -254,7 +257,7 @@ static int pty_install(struct tty_driver *driver, struct tty_struct *tty)
 		tty_free_termios(tty);
 		goto free_mem_out;
 	}
-	
+
 	/*
 	 * Everything allocated ... set up the o_tty structure.
 	 */
@@ -381,9 +384,9 @@ static inline void legacy_pty_init(void) { }
  * Otherwise one can eat up all kernel memory by opening /dev/ptmx repeatedly.
  */
 int pty_limit = NR_UNIX98_PTY_DEFAULT;
-static int pty_limit_min = 0;
+static int pty_limit_min;
 static int pty_limit_max = NR_UNIX98_PTY_MAX;
-static int pty_count = 0;
+static int pty_count;
 
 static struct cdev ptmx_cdev;
 
@@ -537,11 +540,10 @@ static int pty_unix98_install(struct tty_driver *driver, struct tty_struct *tty)
 	pty_count++;
 	return 0;
 free_mem_out:
-	kfree(o_tty->termios);
+	pty_unix98_shutdown(o_tty);
 	module_put(o_tty->driver->owner);
 	free_tty_struct(o_tty);
-	kfree(tty->termios_locked);
-	kfree(tty->termios);
+	pty_unix98_shutdown(tty);
 	free_tty_struct(tty);
 	module_put(driver->owner);
 	return -ENOMEM;
@@ -691,13 +693,13 @@ static void __init unix98_pty_init(void)
 		TTY_DRIVER_DYNAMIC_DEV | TTY_DRIVER_DEVPTS_MEM;
 	pts_driver->other = ptm_driver;
 	tty_set_operations(pts_driver, &pty_unix98_ops);
-	
+
 	if (tty_register_driver(ptm_driver))
 		panic("Couldn't register Unix98 ptm driver");
 	if (tty_register_driver(pts_driver))
 		panic("Couldn't register Unix98 pts driver");
 
-	register_sysctl_table(pty_root_table);	
+	register_sysctl_table(pty_root_table);
 
 	/* Now create the /dev/ptmx special device */
 	tty_default_fops(&ptmx_fops);


  parent reply	other threads:[~2008-10-05 16:26 UTC|newest]

Thread overview: 88+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-10-05 16:04 [PATCH 00/76] Queued TTY Patches Alan Cox
2008-10-05 16:04 ` [PATCH 01/76] drivers/serial/crisv10.c: add missing put_tty_driver Alan Cox
2008-10-05 16:04 ` [PATCH 02/76] drivers/char/hvc_console.c: adjust call to put_tty_driver Alan Cox
2008-10-05 16:04 ` [PATCH 03/76] coldfire: scheduled SERIAL_COLDFIRE removal Alan Cox
2008-10-05 16:05 ` [PATCH 04/76] epca: call tty_port_init Alan Cox
2008-10-05 16:05 ` [PATCH 05/76] 8250: Remove NR_IRQ usage Alan Cox
2008-10-05 16:05 ` [PATCH 06/76] Blackfin Serial Driver: use __initdata for data, not __init Alan Cox
2008-10-05 16:05 ` [PATCH 07/76] Blackfin Serial Driver: Fix bug - should suspend/resume/remove all uart ports Alan Cox
2008-10-05 16:05 ` [PATCH 08/76] Blackfin Serial Driver: trim trailing whitespace -- no functional changes Alan Cox
2008-10-05 16:05 ` [PATCH 09/76] Blackfin Serial Driver: move common variables out of serial headers and into the serial driver Alan Cox
2008-10-05 16:05 ` [PATCH 10/76] Blackfin Serial Driver: Remove useless stop Alan Cox
2008-10-05 16:06 ` [PATCH 11/76] Blackfin Serial Driver: Fix bug - Don't call tx_stop in tx_transfer Alan Cox
2008-10-05 16:06 ` [PATCH 12/76] Blackfin Serial Driver: Fix bug - ircp fails on sir over Blackfin UART Alan Cox
2008-10-05 16:06 ` [PATCH 13/76] Blackfin Serial Driver: Fix bug - request UART2/3 peripheral mapped interrupts in PIO mode Alan Cox
2008-10-05 16:06 ` [PATCH 14/76] tty: move tioclinux from a special case Alan Cox
2008-10-05 16:06 ` [PATCH 15/76] uml: small cleanups and note bugs to be dealt with by uml authors Alan Cox
2008-10-05 16:06 ` [PATCH 16/76] Char: merge ip2main and ip2base Alan Cox
2008-10-05 16:06 ` [PATCH 17/76] ip2, cleanup globals Alan Cox
2008-10-05 16:07 ` [PATCH 18/76] ip2, fix sparse warnings Alan Cox
2008-10-05 16:07 ` [PATCH 19/76] ip2, init/deinit cleanup Alan Cox
2008-10-05 16:07 ` [PATCH 20/76] ip2: avoid add_timer with pending timer Alan Cox
2008-10-05 16:07 ` [PATCH 21/76] audit: Handle embedded NUL in TTY input auditing Alan Cox
2008-10-05 16:07 ` [PATCH 22/76] serial: Make uart_port's ioport "unsigned long" Alan Cox
2008-10-06 12:53   ` Josh Boyer
2008-10-05 16:07 ` [PATCH 23/76] tty: split the buffering from tty_io Alan Cox
2008-10-05 16:07 ` [PATCH 24/76] tty: Split tty_port into its own file Alan Cox
2008-10-05 16:08 ` [PATCH 25/76] pps: Reserve a line discipline number for PPS Alan Cox
2008-10-05 16:08 ` [PATCH 26/76] tty: Add a kref count Alan Cox
2008-10-06 10:20   ` Louis Rilling
2008-10-06 10:52     ` Alan Cox
2008-10-05 16:08 ` [PATCH 27/76] tty: use krefs to protect driver module counts Alan Cox
2008-10-05 16:08 ` [PATCH 28/76] Char: cyclades. remove bogus iomap Alan Cox
2008-10-05 16:08 ` [PATCH 29/76] Char: sx, fix io unmapping Alan Cox
2008-10-05 16:08 ` [PATCH 30/76] 8250: remove a few inlines of dubious value Alan Cox
2008-10-05 16:09 ` [PATCH 31/76] tty: Cris has a nice RS485 ioctl so we should steal it Alan Cox
2008-10-05 16:09 ` [PATCH 32/76] tty: ipw need reworking Alan Cox
2008-10-05 16:09 ` [PATCH 33/76] tty: Add termiox Alan Cox
2008-10-05 16:10 ` [PATCH 34/76] tty: Termios locking - sort out real_tty confusions and lock reads Alan Cox
2008-10-05 16:10 ` [PATCH 35/76] tty: compare the tty winsize Alan Cox
2008-10-05 16:10 ` [PATCH 36/76] tty: Make get_current_tty use a kref Alan Cox
2008-10-06 10:35   ` Louis Rilling
2008-10-06 10:56     ` Alan Cox
2008-10-05 16:10 ` [PATCH 37/76] tty: Move tty_write_message out of kernel/printk Alan Cox
2008-10-05 16:11 ` [PATCH 38/76] tty: usb-serial krefs Alan Cox
2008-10-06  5:36   ` Greg KH
2008-10-06  9:02     ` Alan Cox
2008-10-07  4:13       ` Greg KH
2008-10-05 16:12 ` [PATCH 39/76] tty: kref usage for isicom and moxa Alan Cox
2008-10-05 16:13 ` [PATCH 40/76] stallion: Use krefs Alan Cox
2008-10-05 16:14 ` [PATCH 41/76] mxser: Switch to kref tty Alan Cox
2008-10-05 16:15 ` [PATCH 42/76] tty: the vhangup syscall is racy Alan Cox
2008-10-05 16:15 ` [PATCH 43/76] tty: Redo current tty locking Alan Cox
2008-10-09 13:21   ` Derek Fawcus
2008-10-05 16:16 ` [PATCH 44/76] tty: Fix abusers of current->sighand->tty Alan Cox
2008-10-05 16:17 ` [PATCH 45/76] pty: If the administrator creates a device for a ptmx slave we should not error Alan Cox
2008-10-05 16:18 ` [PATCH 46/76] vt: remove bogus lock dropping Alan Cox
2008-10-05 16:18 ` [PATCH 47/76] tty: shutdown method Alan Cox
2008-10-05 16:18 ` [PATCH 48/76] tty: Remove more special casing and out of place code Alan Cox
2008-10-05 16:19 ` [PATCH 49/76] tty: Move parts of tty_init_dev into new functions Alan Cox
2008-10-05 16:19 ` [PATCH 50/76] tty: Clean up the tty_init_dev changes further Alan Cox
2008-10-05 16:20 ` [PATCH 51/76] tty: kref the tty driver object Alan Cox
2008-10-05 16:20 ` [PATCH 52/76] tty: More driver operations Alan Cox
2008-10-05 16:20 ` [PATCH 53/76] tty: Finish fixing up the init_dev interface to use ERR_PTR Alan Cox
2008-10-05 16:21 ` [PATCH 54/76] tty: extract the pty init time special cases Alan Cox
2008-10-05 16:21 ` [PATCH 55/76] Move tty lookup/reopen to caller Alan Cox
2008-10-05 16:21 ` [PATCH 56/76] Add an instance parameter devpts interfaces Alan Cox
2008-10-05 16:21 ` [PATCH 57/76] Simplify devpts_get_tty() Alan Cox
2008-10-05 16:21 ` [PATCH 58/76] Simplify devpts_pty_new() Alan Cox
2008-10-05 16:21 ` [PATCH 59/76] Simplify devpts_pty_kill Alan Cox
2008-10-05 16:22 ` Alan Cox [this message]
2008-10-05 16:22 ` [PATCH 61/76] pty: Fix allocation failure double free Alan Cox
2008-10-05 16:22 ` [PATCH 62/76] pty: simplify unix98 allocation Alan Cox
2008-10-05 16:22 ` [PATCH 63/76] tty: simplify ktermios allocation Alan Cox
2008-10-05 16:22 ` [PATCH 64/76] tty: some ICANON magic is in the wrong places Alan Cox
2008-10-05 16:23 ` [PATCH 65/76] tty: Fallout from tty-move-canon-specials Alan Cox
2008-10-05 16:23 ` [PATCH 66/76] tty: fix up gigaset a bit Alan Cox
2008-10-05 16:23 ` [PATCH 67/76] tty: Remove lots of NULL checks Alan Cox
2008-10-06  8:58   ` Geert Uytterhoeven
2008-10-06 10:50     ` Alan Cox
2008-10-05 16:23 ` [PATCH 68/76] tty: Minor tidyups and document fixes for n_tty Alan Cox
2008-10-05 16:24 ` [PATCH 69/76] hso: net driver using tty without locking Alan Cox
2008-10-05 16:24 ` [PATCH 70/76] applicom: Fix an unchecked user ioctl range and an error return Alan Cox
2008-10-05 16:24 ` [PATCH 71/76] serial-make-uart_ports-ioport-unsigned-long-fix Alan Cox
2008-10-05 16:24 ` [PATCH 72/76] serial: allow 8250 to be used on sparc Alan Cox
2008-10-05 16:24 ` [PATCH 73/76] serial: fix device name reporting when minor space is shared between drivers Alan Cox
2008-10-05 16:25 ` [PATCH 74/76] tty: tty_io.c shadows sparse fix Alan Cox
2008-10-05 16:25 ` [PATCH 75/76] usb: fix pl2303 initialization Alan Cox
2008-10-05 16:25 ` [PATCH 76/76] ftdi: A few errors are err() that should be debug which causes much spewage Alan Cox

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20081005162154.1997.77611.stgit@localhost.localdomain \
    --to=alan@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.