net: ar8216: hold ar8xxx_dev_list_lock during use_count--
[openwrt/staging/yousong.git] / target / linux / generic / files / drivers / net / phy / ar8216.c
index 7398d7e273765c317079c6002f28573eea5d97bc..d575043629d5ddc1f63689220c66be9bfeadae7f 100644 (file)
@@ -2241,10 +2241,14 @@ ar8xxx_phy_remove(struct phy_device *phydev)
                return;
 
        phydev->priv = NULL;
-       if (--priv->use_count > 0)
-               return;
 
        mutex_lock(&ar8xxx_dev_list_lock);
+
+       if (--priv->use_count > 0) {
+               mutex_unlock(&ar8xxx_dev_list_lock);
+               return;
+       }
+
        list_del(&priv->list);
        mutex_unlock(&ar8xxx_dev_list_lock);
 
@@ -2294,4 +2298,3 @@ ar8xxx_exit(void)
 module_init(ar8xxx_init);
 module_exit(ar8xxx_exit);
 MODULE_LICENSE("GPL");
-