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]
Message-ID: <20081005162215.1997.71087.stgit@localhost.localdomain>
Date:	Sun, 05 Oct 2008 17:22:22 +0100
From:	Alan Cox <alan@...hat.com>
To:	linux-kernel@...r.kernel.org
Subject: [PATCH 62/76] pty: simplify unix98 allocation

We need both termios and termios_locked so allocate them as one

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

 drivers/char/pty.c |   18 +++++++-----------
 1 files changed, 7 insertions(+), 11 deletions(-)

diff --git a/drivers/char/pty.c b/drivers/char/pty.c
index 3c6b791..6d45827 100644
--- a/drivers/char/pty.c
+++ b/drivers/char/pty.c
@@ -488,7 +488,6 @@ static void pty_unix98_shutdown(struct tty_struct *tty)
 {
 	/* We have our own method as we don't use the tty index */
 	kfree(tty->termios);
-	kfree(tty->termios_locked);
 }
 
 /* We have no need to install and remove our tty objects as devpts does all
@@ -509,20 +508,17 @@ static int pty_unix98_install(struct tty_driver *driver, struct tty_struct *tty)
 	}
 	initialize_tty_struct(o_tty, driver->other, idx);
 
-	tty->termios = kmalloc(sizeof(struct ktermios), GFP_KERNEL);
+	tty->termios = kzalloc(sizeof(struct ktermios[2]), GFP_KERNEL);
 	if (tty->termios == NULL)
 		goto free_mem_out;
 	*tty->termios = driver->init_termios;
-	tty->termios_locked = kzalloc(sizeof(struct ktermios), GFP_KERNEL);
-	if (tty->termios_locked == NULL)
-		goto free_mem_out;
-	o_tty->termios = kmalloc(sizeof(struct ktermios), GFP_KERNEL);
+	tty->termios_locked = tty->termios + 1;
+
+	o_tty->termios = kzalloc(sizeof(struct ktermios[2]), GFP_KERNEL);
 	if (o_tty->termios == NULL)
 		goto free_mem_out;
 	*o_tty->termios = driver->other->init_termios;
-	o_tty->termios_locked = kzalloc(sizeof(struct ktermios), GFP_KERNEL);
-	if (o_tty->termios_locked == NULL)
-		goto free_mem_out;
+	o_tty->termios_locked = o_tty->termios + 1;
 
 	tty_driver_kref_get(driver->other);
 	if (driver->subtype == PTY_TYPE_MASTER)
@@ -540,10 +536,10 @@ static int pty_unix98_install(struct tty_driver *driver, struct tty_struct *tty)
 	pty_count++;
 	return 0;
 free_mem_out:
-	pty_unix98_shutdown(o_tty);
+	kfree(o_tty->termios);
 	module_put(o_tty->driver->owner);
 	free_tty_struct(o_tty);
-	pty_unix98_shutdown(tty);
+	kfree(tty->termios);
 	return -ENOMEM;
 }
 

--
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

Powered by Openwall GNU/*/Linux Powered by OpenVZ