diff --git a/drivers/net/tun.c b/drivers/net/tun.c index 01de856c9774003ecea65e9a3e2c56dda3a55bcf..240dd4523a7d7672977c71b063a3e9c9bfe28d14 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c @@ -748,7 +748,6 @@ static void __tun_detach(struct tun_file *tfile, bool clean) if (tun) xdp_rxq_info_unreg(&tfile->xdp_rxq); ptr_ring_cleanup(&tfile->tx_ring, tun_ptr_free); - sock_put(&tfile->sk); } } @@ -764,6 +763,9 @@ static void tun_detach(struct tun_file *tfile, bool clean) if (dev) netdev_state_change(dev); rtnl_unlock(); + + if (clean) + sock_put(&tfile->sk); } static void tun_detach_all(struct net_device *dev)