Commit fe9cd962 authored by Alan Cox's avatar Alan Cox Committed by Linus Torvalds

pty: Coding style and polish

We've done the heavy lifting now its time to mop up a bit
Signed-off-by: default avatarAlan Cox <alan@redhat.com>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent a6f37daa
...@@ -8,10 +8,12 @@ ...@@ -8,10 +8,12 @@
* Added TTY_DO_WRITE_WAKEUP to enable n_tty to send POLL_OUT to * Added TTY_DO_WRITE_WAKEUP to enable n_tty to send POLL_OUT to
* waiting writers -- Sapan Bhatia <sapan@corewars.org> * 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/errno.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
...@@ -24,26 +26,24 @@ ...@@ -24,26 +26,24 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/sysctl.h> #include <linux/sysctl.h>
#include <linux/device.h> #include <linux/device.h>
#include <linux/uaccess.h>
#include <asm/uaccess.h>
#include <asm/system.h>
#include <linux/bitops.h> #include <linux/bitops.h>
#include <linux/devpts_fs.h> #include <linux/devpts_fs.h>
#include <asm/system.h>
/* These are global because they are accessed in tty_io.c */ /* These are global because they are accessed in tty_io.c */
#ifdef CONFIG_UNIX98_PTYS #ifdef CONFIG_UNIX98_PTYS
struct tty_driver *ptm_driver; struct tty_driver *ptm_driver;
static struct tty_driver *pts_driver; static struct tty_driver *pts_driver;
#endif #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) BUG_ON(!tty);
return; if (tty->driver->subtype == PTY_TYPE_MASTER)
if (tty->driver->subtype == PTY_TYPE_MASTER) { WARN_ON(tty->count > 1);
if (tty->count > 1) else {
printk("master pty_close: count = %d!!\n", tty->count);
} else {
if (tty->count > 2) if (tty->count > 2)
return; return;
} }
...@@ -76,7 +76,7 @@ static void pty_close(struct tty_struct * tty, struct file * filp) ...@@ -76,7 +76,7 @@ static void pty_close(struct tty_struct * tty, struct file * filp)
* (1) trying to send data to the pty, or (2) waiting in wait_until_sent() * (1) trying to send data to the pty, or (2) waiting in wait_until_sent()
* for the pty buffer to be drained. * 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; struct tty_struct *o_tty = tty->link;
...@@ -101,7 +101,8 @@ static void pty_unthrottle(struct tty_struct * tty) ...@@ -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 * not our partners. We can't just take the other one blindly without
* risking deadlocks. * 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; struct tty_struct *to = tty->link;
int c; int c;
...@@ -156,21 +157,22 @@ static int pty_chars_in_buffer(struct tty_struct *tty) ...@@ -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 */ /* The ldisc must report 0 if no characters available to be read */
count = to->ldisc.ops->chars_in_buffer(to); 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 * 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. * 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 */ /* 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; int val;
if (get_user(val,arg)) if (get_user(val, arg))
return -EFAULT; return -EFAULT;
if (val) if (val)
set_bit(TTY_PTY_LOCK, &tty->flags); set_bit(TTY_PTY_LOCK, &tty->flags);
...@@ -198,7 +200,7 @@ static void pty_flush_buffer(struct tty_struct *tty) ...@@ -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; int retval = -ENODEV;
...@@ -221,7 +223,8 @@ static int pty_open(struct tty_struct *tty, struct file * filp) ...@@ -221,7 +223,8 @@ static int pty_open(struct tty_struct *tty, struct file * filp)
return retval; 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 &= ~(CSIZE | PARENB);
tty->termios->c_cflag |= (CS8 | CREAD); tty->termios->c_cflag |= (CS8 | CREAD);
...@@ -381,9 +384,9 @@ static inline void legacy_pty_init(void) { } ...@@ -381,9 +384,9 @@ static inline void legacy_pty_init(void) { }
* Otherwise one can eat up all kernel memory by opening /dev/ptmx repeatedly. * Otherwise one can eat up all kernel memory by opening /dev/ptmx repeatedly.
*/ */
int pty_limit = NR_UNIX98_PTY_DEFAULT; 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_limit_max = NR_UNIX98_PTY_MAX;
static int pty_count = 0; static int pty_count;
static struct cdev ptmx_cdev; static struct cdev ptmx_cdev;
...@@ -537,11 +540,10 @@ static int pty_unix98_install(struct tty_driver *driver, struct tty_struct *tty) ...@@ -537,11 +540,10 @@ static int pty_unix98_install(struct tty_driver *driver, struct tty_struct *tty)
pty_count++; pty_count++;
return 0; return 0;
free_mem_out: free_mem_out:
kfree(o_tty->termios); pty_unix98_shutdown(o_tty);
module_put(o_tty->driver->owner); module_put(o_tty->driver->owner);
free_tty_struct(o_tty); free_tty_struct(o_tty);
kfree(tty->termios_locked); pty_unix98_shutdown(tty);
kfree(tty->termios);
free_tty_struct(tty); free_tty_struct(tty);
module_put(driver->owner); module_put(driver->owner);
return -ENOMEM; return -ENOMEM;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment