diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c
index 2af24547a82c49efc64528fd27087144c4f43b7c..e3ab276fac77c413a4a605b4fb29a5684e0bfc44 100644
--- a/net/sched/sch_generic.c
+++ b/net/sched/sch_generic.c
@@ -539,10 +539,10 @@ static void dev_watchdog(struct timer_list *t)
                                release = false;
                }
        }
-       spin_unlock(&dev->tx_global_lock);
-
        if (release)
                netdev_put(dev, &dev->watchdog_dev_tracker);
+
+       spin_unlock(&dev->tx_global_lock);
 }
 
 void __netdev_watchdog_up(struct net_device *dev)