Messages in this thread Patch in this message | | | Date | Fri, 7 Jul 2017 20:13:01 +0100 | From | Okash Khawaja <> | Subject | [patch] staging: speakup: safely close tty |
| |
Speakup opens tty using tty_open_by_driver. When closing, it calls tty_ldisc_release but doesn't close and remove the tty itself. As a result, that tty cannot then be opened from user space. This patch calls tty_release_struct which ensures that tty is safely removed and freed up. It also calls tty_ldisc_release, so speakup doesn't need to call it.
This patch also unregisters N_SPEAKUP. It is registered when a speakup module is loaded.
Signed-off-by: Okash Khawaja <okash.khawaja@gmail.com>
--- drivers/staging/speakup/spk_ttyio.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
--- a/drivers/staging/speakup/spk_ttyio.c +++ b/drivers/staging/speakup/spk_ttyio.c @@ -300,7 +300,9 @@ void spk_ttyio_release(void) tty_ldisc_flush(speakup_tty); tty_unlock(speakup_tty); - tty_ldisc_release(speakup_tty); + tty_release_struct(speakup_tty, speakup_tty->index); + if (tty_unregister_ldisc(N_SPEAKUP)) + pr_warn("speakup: failed to unregister line discipline N_SPEAKUP\n"); } EXPORT_SYMBOL_GPL(spk_ttyio_release);
| |