mkiss: Fix use after free in mkiss_close().
authorDavid Miller <davem@davemloft.net>
Thu, 17 Dec 2015 21:05:49 +0000 (16:05 -0500)
committerDavid S. Miller <davem@davemloft.net>
Fri, 18 Dec 2015 21:03:03 +0000 (16:03 -0500)
Need to do the unregister_device() after all references to the driver
private have been done.

Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/hamradio/mkiss.c

index 216bfd3..0b72b9d 100644 (file)
@@ -798,13 +798,13 @@ static void mkiss_close(struct tty_struct *tty)
        if (!atomic_dec_and_test(&ax->refcnt))
                down(&ax->dead_sem);
 
-       unregister_netdev(ax->dev);
-
        /* Free all AX25 frame buffers. */
        kfree(ax->rbuff);
        kfree(ax->xbuff);
 
        ax->tty = NULL;
+
+       unregister_netdev(ax->dev);
 }
 
 /* Perform I/O control on an active ax25 channel. */