aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/char/ttyprintk.c
diff options
context:
space:
mode:
authorJiri Slaby <jslaby@suse.cz>2012-11-15 03:49:56 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-11-15 20:20:58 -0500
commit191c5f10275cfbb36802edadbdb10c73537327b4 (patch)
tree93e6f0d57cb1295fb7c461dbe5ecefafeb4ad15a /drivers/char/ttyprintk.c
parentd0f59141ca40159c9d142c0f62e9aea61f846539 (diff)
TTY: call tty_port_destroy in the rest of drivers
After commit "TTY: move tty buffers to tty_port", the tty buffers are not freed in some drivers. This is because tty_port_destructor is not called whenever a tty_port is freed. This was an assumption I counted with but was unfortunately untrue. So fix the drivers to fulfil this assumption. To be sure, the TTY buffers (and later some stuff) are gone along with the tty_port, we have to call tty_port_destroy at tear-down places. This is mostly where the structure containing a tty_port is freed. This patch does exactly that -- put tty_port_destroy at those places. Signed-off-by: Jiri Slaby <jslaby@suse.cz> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/char/ttyprintk.c')
-rw-r--r--drivers/char/ttyprintk.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/char/ttyprintk.c b/drivers/char/ttyprintk.c
index af98f6d6509b..4945bd3d18d0 100644
--- a/drivers/char/ttyprintk.c
+++ b/drivers/char/ttyprintk.c
@@ -179,7 +179,6 @@ static int __init ttyprintk_init(void)
179{ 179{
180 int ret = -ENOMEM; 180 int ret = -ENOMEM;
181 181
182 tty_port_init(&tpk_port.port);
183 tpk_port.port.ops = &null_ops; 182 tpk_port.port.ops = &null_ops;
184 mutex_init(&tpk_port.port_write_mutex); 183 mutex_init(&tpk_port.port_write_mutex);
185 184
@@ -190,6 +189,8 @@ static int __init ttyprintk_init(void)
190 if (IS_ERR(ttyprintk_driver)) 189 if (IS_ERR(ttyprintk_driver))
191 return PTR_ERR(ttyprintk_driver); 190 return PTR_ERR(ttyprintk_driver);
192 191
192 tty_port_init(&tpk_port.port);
193
193 ttyprintk_driver->driver_name = "ttyprintk"; 194 ttyprintk_driver->driver_name = "ttyprintk";
194 ttyprintk_driver->name = "ttyprintk"; 195 ttyprintk_driver->name = "ttyprintk";
195 ttyprintk_driver->major = TTYAUX_MAJOR; 196 ttyprintk_driver->major = TTYAUX_MAJOR;
@@ -211,6 +212,7 @@ static int __init ttyprintk_init(void)
211error: 212error:
212 tty_unregister_driver(ttyprintk_driver); 213 tty_unregister_driver(ttyprintk_driver);
213 put_tty_driver(ttyprintk_driver); 214 put_tty_driver(ttyprintk_driver);
215 tty_port_destroy(&tpk_port.port);
214 ttyprintk_driver = NULL; 216 ttyprintk_driver = NULL;
215 return ret; 217 return ret;
216} 218}