aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/tty/pty.c
diff options
context:
space:
mode:
authorJiri Slaby <jslaby@suse.cz>2011-03-23 05:48:33 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2011-04-19 17:43:00 -0400
commit8a1b8d70a07628f294f30485acf81971e3fcc755 (patch)
tree7b5d373ebf176c5db694aeae42525a62952c1434 /drivers/tty/pty.c
parentd55435037539837a741d54690427d37f96ed87fa (diff)
TTY: unify pty_install fail path handling
Change it so that we call the deinit functions at one place at the end of the function (by gotos). And while at it use some sane label names. This is a preparation for the deinitialization of tty in the next patch. Signed-off-by: Jiri Slaby <jslaby@suse.cz> Cc: Alan Cox <alan@lxorguk.ukuu.org.uk> Cc: Julian Anastasov <ja@ssi.bg> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/tty/pty.c')
-rw-r--r--drivers/tty/pty.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/drivers/tty/pty.c b/drivers/tty/pty.c
index 210774726add..f5119184259c 100644
--- a/drivers/tty/pty.c
+++ b/drivers/tty/pty.c
@@ -295,8 +295,8 @@ static int pty_install(struct tty_driver *driver, struct tty_struct *tty)
295 return -ENOMEM; 295 return -ENOMEM;
296 if (!try_module_get(driver->other->owner)) { 296 if (!try_module_get(driver->other->owner)) {
297 /* This cannot in fact currently happen */ 297 /* This cannot in fact currently happen */
298 free_tty_struct(o_tty); 298 retval = -ENOMEM;
299 return -ENOMEM; 299 goto err_free_tty;
300 } 300 }
301 initialize_tty_struct(o_tty, driver->other, idx); 301 initialize_tty_struct(o_tty, driver->other, idx);
302 302
@@ -304,13 +304,11 @@ static int pty_install(struct tty_driver *driver, struct tty_struct *tty)
304 the easy way .. */ 304 the easy way .. */
305 retval = tty_init_termios(tty); 305 retval = tty_init_termios(tty);
306 if (retval) 306 if (retval)
307 goto free_mem_out; 307 goto err_module_put;
308 308
309 retval = tty_init_termios(o_tty); 309 retval = tty_init_termios(o_tty);
310 if (retval) { 310 if (retval)
311 tty_free_termios(tty); 311 goto err_free_termios;
312 goto free_mem_out;
313 }
314 312
315 /* 313 /*
316 * Everything allocated ... set up the o_tty structure. 314 * Everything allocated ... set up the o_tty structure.
@@ -327,10 +325,13 @@ static int pty_install(struct tty_driver *driver, struct tty_struct *tty)
327 tty->count++; 325 tty->count++;
328 driver->ttys[idx] = tty; 326 driver->ttys[idx] = tty;
329 return 0; 327 return 0;
330free_mem_out: 328err_free_termios:
329 tty_free_termios(tty);
330err_module_put:
331 module_put(o_tty->driver->owner); 331 module_put(o_tty->driver->owner);
332err_free_tty:
332 free_tty_struct(o_tty); 333 free_tty_struct(o_tty);
333 return -ENOMEM; 334 return retval;
334} 335}
335 336
336static int pty_bsd_ioctl(struct tty_struct *tty, 337static int pty_bsd_ioctl(struct tty_struct *tty,