]> git.karo-electronics.de Git - mv-sheeva.git/commitdiff
cfg80211: properly name driver locking
authorJohannes Berg <johannes@sipsolutions.net>
Tue, 7 Jul 2009 01:56:09 +0000 (03:56 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 10 Jul 2009 19:02:32 +0000 (15:02 -0400)
Currently we call that cfg80211_put_dev(), but that is
misleading. With the new convention of using 'rdev' for
registered_device variables, also call that function
cfg80211_unlock_rdev().

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/wireless/core.c
net/wireless/core.h
net/wireless/nl80211.c
net/wireless/scan.c

index 83ec7197bd7ce5668880d438af2da751c51d1483..c6813beded069d7b5a06b37d0088b360e6f16098 100644 (file)
@@ -171,12 +171,6 @@ cfg80211_get_dev_from_ifindex(int ifindex)
        return drv;
 }
 
-void cfg80211_put_dev(struct cfg80211_registered_device *drv)
-{
-       BUG_ON(IS_ERR(drv));
-       mutex_unlock(&drv->mtx);
-}
-
 /* requires cfg80211_mutex to be held */
 int cfg80211_dev_rename(struct cfg80211_registered_device *rdev,
                        char *newname)
index 4554453c116aecb5ee2bcb4f9b866f5c9c0d78fb..92da612b3f9e013aa83db12f6c0d4c1914cfce89 100644 (file)
@@ -146,7 +146,7 @@ __cfg80211_drv_from_info(struct genl_info *info);
  * If successful, it returns non-NULL and also locks
  * the driver's mutex!
  *
- * This means that you need to call cfg80211_put_dev()
+ * This means that you need to call cfg80211_unlock_rdev()
  * before being allowed to acquire &cfg80211_mutex!
  *
  * This is necessary because we need to lock the global
@@ -170,7 +170,11 @@ struct wiphy *wiphy_idx_to_wiphy(int wiphy_idx);
 extern struct cfg80211_registered_device *
 cfg80211_get_dev_from_ifindex(int ifindex);
 
-extern void cfg80211_put_dev(struct cfg80211_registered_device *drv);
+static inline void cfg80211_unlock_rdev(struct cfg80211_registered_device *drv)
+{
+       BUG_ON(IS_ERR(drv) || !drv);
+       mutex_unlock(&drv->mtx);
+}
 
 /* free object */
 extern void cfg80211_dev_free(struct cfg80211_registered_device *drv);
index 44c520c264fc5a804c015a4f68d8a9f71f8100e6..df22048419e319e0be03668ddb08be943dd106f5 100644 (file)
@@ -411,14 +411,14 @@ static int nl80211_get_wiphy(struct sk_buff *skb, struct genl_info *info)
        if (nl80211_send_wiphy(msg, info->snd_pid, info->snd_seq, 0, dev) < 0)
                goto out_free;
 
-       cfg80211_put_dev(dev);
+       cfg80211_unlock_rdev(dev);
 
        return genlmsg_unicast(msg, info->snd_pid);
 
  out_free:
        nlmsg_free(msg);
  out_err:
-       cfg80211_put_dev(dev);
+       cfg80211_unlock_rdev(dev);
        return -ENOBUFS;
 }
 
@@ -737,7 +737,7 @@ static int nl80211_get_interface(struct sk_buff *skb, struct genl_info *info)
                goto out_free;
 
        dev_put(netdev);
-       cfg80211_put_dev(dev);
+       cfg80211_unlock_rdev(dev);
 
        return genlmsg_unicast(msg, info->snd_pid);
 
@@ -745,7 +745,7 @@ static int nl80211_get_interface(struct sk_buff *skb, struct genl_info *info)
        nlmsg_free(msg);
  out_err:
        dev_put(netdev);
-       cfg80211_put_dev(dev);
+       cfg80211_unlock_rdev(dev);
        return -ENOBUFS;
 }
 
@@ -853,7 +853,7 @@ static int nl80211_set_interface(struct sk_buff *skb, struct genl_info *info)
 
  unlock:
        dev_put(dev);
-       cfg80211_put_dev(drv);
+       cfg80211_unlock_rdev(drv);
  unlock_rtnl:
        rtnl_unlock();
        return err;
@@ -906,7 +906,7 @@ static int nl80211_new_interface(struct sk_buff *skb, struct genl_info *info)
                type, err ? NULL : &flags, &params);
 
  unlock:
-       cfg80211_put_dev(drv);
+       cfg80211_unlock_rdev(drv);
  unlock_rtnl:
        rtnl_unlock();
        return err;
@@ -934,7 +934,7 @@ static int nl80211_del_interface(struct sk_buff *skb, struct genl_info *info)
        err = drv->ops->del_virtual_intf(&drv->wiphy, ifindex);
 
  out:
-       cfg80211_put_dev(drv);
+       cfg80211_unlock_rdev(drv);
  unlock_rtnl:
        rtnl_unlock();
        return err;
@@ -1037,7 +1037,7 @@ static int nl80211_get_key(struct sk_buff *skb, struct genl_info *info)
        err = -ENOBUFS;
        nlmsg_free(msg);
  out:
-       cfg80211_put_dev(drv);
+       cfg80211_unlock_rdev(drv);
        dev_put(dev);
  unlock_rtnl:
        rtnl_unlock();
@@ -1097,7 +1097,7 @@ static int nl80211_set_key(struct sk_buff *skb, struct genl_info *info)
 #endif
 
  out:
-       cfg80211_put_dev(drv);
+       cfg80211_unlock_rdev(drv);
        dev_put(dev);
 
  unlock_rtnl:
@@ -1163,7 +1163,7 @@ static int nl80211_new_key(struct sk_buff *skb, struct genl_info *info)
        err = drv->ops->add_key(&drv->wiphy, dev, key_idx, mac_addr, &params);
 
  out:
-       cfg80211_put_dev(drv);
+       cfg80211_unlock_rdev(drv);
        dev_put(dev);
  unlock_rtnl:
        rtnl_unlock();
@@ -1211,7 +1211,7 @@ static int nl80211_del_key(struct sk_buff *skb, struct genl_info *info)
 #endif
 
  out:
-       cfg80211_put_dev(drv);
+       cfg80211_unlock_rdev(drv);
        dev_put(dev);
 
  unlock_rtnl:
@@ -1306,7 +1306,7 @@ static int nl80211_addset_beacon(struct sk_buff *skb, struct genl_info *info)
        err = call(&drv->wiphy, dev, &params);
 
  out:
-       cfg80211_put_dev(drv);
+       cfg80211_unlock_rdev(drv);
        dev_put(dev);
  unlock_rtnl:
        rtnl_unlock();
@@ -1338,7 +1338,7 @@ static int nl80211_del_beacon(struct sk_buff *skb, struct genl_info *info)
        err = drv->ops->del_beacon(&drv->wiphy, dev);
 
  out:
-       cfg80211_put_dev(drv);
+       cfg80211_unlock_rdev(drv);
        dev_put(dev);
  unlock_rtnl:
        rtnl_unlock();
@@ -1572,7 +1572,7 @@ static int nl80211_dump_station(struct sk_buff *skb,
        cb->args[1] = sta_idx;
        err = skb->len;
  out_err:
-       cfg80211_put_dev(dev);
+       cfg80211_unlock_rdev(dev);
  out_rtnl:
        rtnl_unlock();
 
@@ -1624,7 +1624,7 @@ static int nl80211_get_station(struct sk_buff *skb, struct genl_info *info)
  out_free:
        nlmsg_free(msg);
  out:
-       cfg80211_put_dev(drv);
+       cfg80211_unlock_rdev(drv);
        dev_put(dev);
  out_rtnl:
        rtnl_unlock();
@@ -1760,7 +1760,7 @@ static int nl80211_set_station(struct sk_buff *skb, struct genl_info *info)
  out:
        if (params.vlan)
                dev_put(params.vlan);
-       cfg80211_put_dev(drv);
+       cfg80211_unlock_rdev(drv);
        dev_put(dev);
  out_rtnl:
        rtnl_unlock();
@@ -1865,7 +1865,7 @@ static int nl80211_new_station(struct sk_buff *skb, struct genl_info *info)
  out:
        if (params.vlan)
                dev_put(params.vlan);
-       cfg80211_put_dev(drv);
+       cfg80211_unlock_rdev(drv);
        dev_put(dev);
  out_rtnl:
        rtnl_unlock();
@@ -1904,7 +1904,7 @@ static int nl80211_del_station(struct sk_buff *skb, struct genl_info *info)
        err = drv->ops->del_station(&drv->wiphy, dev, mac_addr);
 
  out:
-       cfg80211_put_dev(drv);
+       cfg80211_unlock_rdev(drv);
        dev_put(dev);
  out_rtnl:
        rtnl_unlock();
@@ -2035,7 +2035,7 @@ static int nl80211_dump_mpath(struct sk_buff *skb,
        cb->args[1] = path_idx;
        err = skb->len;
  out_err:
-       cfg80211_put_dev(dev);
+       cfg80211_unlock_rdev(dev);
  out_rtnl:
        rtnl_unlock();
 
@@ -2093,7 +2093,7 @@ static int nl80211_get_mpath(struct sk_buff *skb, struct genl_info *info)
  out_free:
        nlmsg_free(msg);
  out:
-       cfg80211_put_dev(drv);
+       cfg80211_unlock_rdev(drv);
        dev_put(dev);
  out_rtnl:
        rtnl_unlock();
@@ -2142,7 +2142,7 @@ static int nl80211_set_mpath(struct sk_buff *skb, struct genl_info *info)
        err = drv->ops->change_mpath(&drv->wiphy, dev, dst, next_hop);
 
  out:
-       cfg80211_put_dev(drv);
+       cfg80211_unlock_rdev(drv);
        dev_put(dev);
  out_rtnl:
        rtnl_unlock();
@@ -2190,7 +2190,7 @@ static int nl80211_new_mpath(struct sk_buff *skb, struct genl_info *info)
        err = drv->ops->add_mpath(&drv->wiphy, dev, dst, next_hop);
 
  out:
-       cfg80211_put_dev(drv);
+       cfg80211_unlock_rdev(drv);
        dev_put(dev);
  out_rtnl:
        rtnl_unlock();
@@ -2222,7 +2222,7 @@ static int nl80211_del_mpath(struct sk_buff *skb, struct genl_info *info)
        err = drv->ops->del_mpath(&drv->wiphy, dev, dst);
 
  out:
-       cfg80211_put_dev(drv);
+       cfg80211_unlock_rdev(drv);
        dev_put(dev);
  out_rtnl:
        rtnl_unlock();
@@ -2278,7 +2278,7 @@ static int nl80211_set_bss(struct sk_buff *skb, struct genl_info *info)
        err = drv->ops->change_bss(&drv->wiphy, dev, &params);
 
  out:
-       cfg80211_put_dev(drv);
+       cfg80211_unlock_rdev(drv);
        dev_put(dev);
  out_rtnl:
        rtnl_unlock();
@@ -2444,7 +2444,7 @@ static int nl80211_get_mesh_params(struct sk_buff *skb,
        err = -EMSGSIZE;
  out:
        /* Cleanup */
-       cfg80211_put_dev(drv);
+       cfg80211_unlock_rdev(drv);
        dev_put(dev);
  out_rtnl:
        rtnl_unlock();
@@ -2550,7 +2550,7 @@ static int nl80211_set_mesh_params(struct sk_buff *skb, struct genl_info *info)
 
  out:
        /* cleanup */
-       cfg80211_put_dev(drv);
+       cfg80211_unlock_rdev(drv);
        dev_put(dev);
  out_rtnl:
        rtnl_unlock();
@@ -2890,7 +2890,7 @@ static int nl80211_trigger_scan(struct sk_buff *skb, struct genl_info *info)
                kfree(request);
        }
  out:
-       cfg80211_put_dev(drv);
+       cfg80211_unlock_rdev(drv);
        dev_put(dev);
  out_rtnl:
        rtnl_unlock();
@@ -3007,7 +3007,7 @@ static int nl80211_dump_scan(struct sk_buff *skb,
 
        cb->args[1] = idx;
        err = skb->len;
-       cfg80211_put_dev(dev);
+       cfg80211_unlock_rdev(dev);
  out_put_netdev:
        dev_put(netdev);
 
@@ -3112,7 +3112,7 @@ static int nl80211_authenticate(struct sk_buff *skb, struct genl_info *info)
                                 ssid, ssid_len, ie, ie_len);
 
 out:
-       cfg80211_put_dev(drv);
+       cfg80211_unlock_rdev(drv);
        dev_put(dev);
 unlock_rtnl:
        rtnl_unlock();
@@ -3259,7 +3259,7 @@ static int nl80211_associate(struct sk_buff *skb, struct genl_info *info)
                                          &crypto);
 
 out:
-       cfg80211_put_dev(rdev);
+       cfg80211_unlock_rdev(rdev);
        dev_put(dev);
 unlock_rtnl:
        rtnl_unlock();
@@ -3321,7 +3321,7 @@ static int nl80211_deauthenticate(struct sk_buff *skb, struct genl_info *info)
        err = cfg80211_mlme_deauth(drv, dev, bssid, ie, ie_len, reason_code);
 
 out:
-       cfg80211_put_dev(drv);
+       cfg80211_unlock_rdev(drv);
        dev_put(dev);
 unlock_rtnl:
        rtnl_unlock();
@@ -3383,7 +3383,7 @@ static int nl80211_disassociate(struct sk_buff *skb, struct genl_info *info)
        err = cfg80211_mlme_disassoc(drv, dev, bssid, ie, ie_len, reason_code);
 
 out:
-       cfg80211_put_dev(drv);
+       cfg80211_unlock_rdev(drv);
        dev_put(dev);
 unlock_rtnl:
        rtnl_unlock();
@@ -3464,7 +3464,7 @@ static int nl80211_join_ibss(struct sk_buff *skb, struct genl_info *info)
        err = cfg80211_join_ibss(drv, dev, &ibss);
 
 out:
-       cfg80211_put_dev(drv);
+       cfg80211_unlock_rdev(drv);
        dev_put(dev);
 unlock_rtnl:
        rtnl_unlock();
@@ -3501,7 +3501,7 @@ static int nl80211_leave_ibss(struct sk_buff *skb, struct genl_info *info)
        err = cfg80211_leave_ibss(drv, dev, false);
 
 out:
-       cfg80211_put_dev(drv);
+       cfg80211_unlock_rdev(drv);
        dev_put(dev);
 unlock_rtnl:
        rtnl_unlock();
@@ -3538,7 +3538,7 @@ static int nl80211_testmode_do(struct sk_buff *skb, struct genl_info *info)
                rdev->testmode_info = NULL;
        }
 
-       cfg80211_put_dev(rdev);
+       cfg80211_unlock_rdev(rdev);
 
  unlock_rtnl:
        rtnl_unlock();
@@ -3707,7 +3707,7 @@ static int nl80211_connect(struct sk_buff *skb, struct genl_info *info)
        err = cfg80211_connect(drv, dev, &connect);
 
 out:
-       cfg80211_put_dev(drv);
+       cfg80211_unlock_rdev(drv);
        dev_put(dev);
 unlock_rtnl:
        rtnl_unlock();
@@ -3748,7 +3748,7 @@ static int nl80211_disconnect(struct sk_buff *skb, struct genl_info *info)
        err = cfg80211_disconnect(drv, dev, reason, true);
 
 out:
-       cfg80211_put_dev(drv);
+       cfg80211_unlock_rdev(drv);
        dev_put(dev);
 unlock_rtnl:
        rtnl_unlock();
index 925399462a79fb7dd844fb27e60c50ac742cfb78..1625faf1de574492d7a3eaab876faa7d5ffcb801 100644 (file)
@@ -28,8 +28,6 @@ void cfg80211_scan_done(struct cfg80211_scan_request *request, bool aborted)
        if (!dev)
                goto out;
 
-       WARN_ON(request != wiphy_to_dev(request->wiphy)->scan_req);
-
        /*
         * This must be before sending the other events!
         * Otherwise, wpa_supplicant gets completely confused with
@@ -636,7 +634,7 @@ int cfg80211_wext_siwscan(struct net_device *dev,
        } else
                nl80211_send_scan_start(rdev, dev);
  out:
-       cfg80211_put_dev(rdev);
+       cfg80211_unlock_rdev(rdev);
        return err;
 }
 EXPORT_SYMBOL_GPL(cfg80211_wext_siwscan);
@@ -945,7 +943,7 @@ int cfg80211_wext_giwscan(struct net_device *dev,
        }
 
  out:
-       cfg80211_put_dev(rdev);
+       cfg80211_unlock_rdev(rdev);
        return res;
 }
 EXPORT_SYMBOL_GPL(cfg80211_wext_giwscan);