]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blobdiff - drivers/net/hamradio/6pack.c
hamradio: remove needs_free_netdev to avoid UAF
[mirror_ubuntu-jammy-kernel.git] / drivers / net / hamradio / 6pack.c
index 6192244b304ab976e0b17f7fd3eb568585f16a54..36a9fbb704029f06704686163744174160a2b2dd 100644 (file)
@@ -306,7 +306,6 @@ static void sp_setup(struct net_device *dev)
 {
        /* Finish setting up the DEVICE info. */
        dev->netdev_ops         = &sp_netdev_ops;
-       dev->needs_free_netdev  = true;
        dev->mtu                = SIXP_MTU;
        dev->hard_header_len    = AX25_MAX_HEADER_LEN;
        dev->header_ops         = &ax25_header_ops;
@@ -669,14 +668,16 @@ static void sixpack_close(struct tty_struct *tty)
         */
        netif_stop_queue(sp->dev);
 
+       unregister_netdev(sp->dev);
+
        del_timer_sync(&sp->tx_t);
        del_timer_sync(&sp->resync_t);
 
-       /* Free all 6pack frame buffers. */
+       /* Free all 6pack frame buffers after unreg. */
        kfree(sp->rbuff);
        kfree(sp->xbuff);
 
-       unregister_netdev(sp->dev);
+       free_netdev(sp->dev);
 }
 
 /* Perform I/O control on an active 6pack channel. */