]> git.baikalelectronics.ru Git - kernel.git/commit
tty: n_gsm: fix decoupled mux resource
authorDaniel Starke <daniel.starke@siemens.com>
Thu, 14 Apr 2022 09:42:08 +0000 (02:42 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 9 May 2022 07:14:42 +0000 (09:14 +0200)
commit9ebe164f7e313867a0a0df3c649a6744396f8ce9
treeae44efbad9494e18e5046c8696e054a1670f97ba
parent4497c4845a6f18d71cf4591cad7894cca1c3cfa4
tty: n_gsm: fix decoupled mux resource

commit 6f6e76fca5c6e2c89efda3980a3f076cec95d2b3 upstream.

The active mux instances are managed in the gsm_mux array and via mux_get()
and mux_put() functions separately. This gives a very loose coupling
between the actual instance and the gsm_mux array which manages it. It also
results in unnecessary lockings which makes it prone to failures. And it
creates a race condition if more than the maximum number of mux instances
are requested while the user changes the parameters of an active instance.
The user may loose ownership of the current mux instance in this case.
Fix this by moving the gsm_mux array handling to the mux allocation and
deallocation functions.

Fixes: 99551fa31543 ("tty: n_gsm line discipline")
Cc: stable@vger.kernel.org
Signed-off-by: Daniel Starke <daniel.starke@siemens.com>
Link: https://lore.kernel.org/r/20220414094225.4527-3-daniel.starke@siemens.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/n_gsm.c