lkml.org 
[lkml]   [2011]   [Nov]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5/5] TTY: pty, cleanup the pty counting
    Date
    Instead of the hackish way of counting ptys, let's define a specific
    ->remove hook both from slave and master. And decrease the count only
    for master.

    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Cc: Greg Kroah-Hartman <gregkh@suse.de>
    Cc: Alan Cox <alan@linux.intel.com>
    ---
    drivers/tty/pty.c | 26 +++++++++-----------------
    1 files changed, 9 insertions(+), 17 deletions(-)

    diff --git a/drivers/tty/pty.c b/drivers/tty/pty.c
    index e18604b..d8653ab 100644
    --- a/drivers/tty/pty.c
    +++ b/drivers/tty/pty.c
    @@ -446,19 +446,8 @@ static inline void legacy_pty_init(void) { }
    int pty_limit = NR_UNIX98_PTY_DEFAULT;
    static int pty_limit_min;
    static int pty_limit_max = NR_UNIX98_PTY_MAX;
    -static int tty_count;
    static int pty_count;

    -static inline void pty_inc_count(void)
    -{
    - pty_count = (++tty_count) / 2;
    -}
    -
    -static inline void pty_dec_count(void)
    -{
    - pty_count = (--tty_count) / 2;
    -}
    -
    static struct cdev ptmx_cdev;

    static struct ctl_table pty_table[] = {
    @@ -600,8 +589,7 @@ static int pty_unix98_install(struct tty_driver *driver, struct tty_struct *tty)
    */
    tty_driver_kref_get(driver);
    tty->count++;
    - pty_inc_count(); /* tty */
    - pty_inc_count(); /* tty->link */
    + pty_count++;
    return 0;
    err_free_mem:
    deinitialize_tty_struct(o_tty);
    @@ -613,15 +601,19 @@ err_free_tty:
    return -ENOMEM;
    }

    -static void pty_unix98_remove(struct tty_driver *driver, struct tty_struct *tty)
    +static void ptm_unix98_remove(struct tty_driver *driver, struct tty_struct *tty)
    +{
    + pty_count--;
    +}
    +
    +static void pts_unix98_remove(struct tty_driver *driver, struct tty_struct *tty)
    {
    - pty_dec_count();
    }

    static const struct tty_operations ptm_unix98_ops = {
    .lookup = ptm_unix98_lookup,
    .install = pty_unix98_install,
    - .remove = pty_unix98_remove,
    + .remove = ptm_unix98_remove,
    .open = pty_open,
    .close = pty_close,
    .write = pty_write,
    @@ -638,7 +630,7 @@ static const struct tty_operations ptm_unix98_ops = {
    static const struct tty_operations pty_unix98_ops = {
    .lookup = pts_unix98_lookup,
    .install = pty_unix98_install,
    - .remove = pty_unix98_remove,
    + .remove = pts_unix98_remove,
    .open = pty_open,
    .close = pty_close,
    .write = pty_write,
    --
    1.7.7.3



    \
     
     \ /
      Last update: 2011-11-16 16:29    [W:5.104 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site