staging: gdm724x: gdm_mux: fix use-after-free on module unload
authorJohan Hovold <johan@kernel.org>
Wed, 26 Apr 2017 10:23:04 +0000 (12:23 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 20 May 2017 12:26:59 +0000 (14:26 +0200)
commit b58f45c8fc301fe83ee28cad3e64686c19e78f1c upstream.

Make sure to deregister the USB driver before releasing the tty driver
to avoid use-after-free in the USB disconnect callback where the tty
devices are deregistered.

Fixes: 61e121047645 ("staging: gdm7240: adding LTE USB driver")
Cc: Won Kang <wkang77@gmail.com>
Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/gdm724x/gdm_mux.c

index 445f836155752e3225046cdd0268c388e1ff114f..fb4f3fea6c668657cd3be93c8951673fc2bb1be5 100644 (file)
@@ -670,14 +670,14 @@ static int __init gdm_usb_mux_init(void)
 
 static void __exit gdm_usb_mux_exit(void)
 {
-       unregister_lte_tty_driver();
-
        if (mux_rx_wq) {
                flush_workqueue(mux_rx_wq);
                destroy_workqueue(mux_rx_wq);
        }
 
        usb_deregister(&gdm_mux_driver);
+       unregister_lte_tty_driver();
+
 }
 
 module_init(gdm_usb_mux_init);