cfg80211: use proper allocation flags
Instead of hardcoding GFP_ATOMIC everywhere, add a new function parameter that gets the flags from the caller. Obviously then I need to update all callers (all of them in mac80211), and it turns out that now it's ok to use GFP_KERNEL in almost all places. Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:

committed by
John W. Linville

parent
dad8233021
commit
e6d6e3420d
@@ -12,35 +12,35 @@
|
||||
#include "core.h"
|
||||
#include "nl80211.h"
|
||||
|
||||
void cfg80211_send_rx_auth(struct net_device *dev, const u8 *buf, size_t len)
|
||||
void cfg80211_send_rx_auth(struct net_device *dev, const u8 *buf, size_t len, gfp_t gfp)
|
||||
{
|
||||
struct wiphy *wiphy = dev->ieee80211_ptr->wiphy;
|
||||
struct cfg80211_registered_device *rdev = wiphy_to_dev(wiphy);
|
||||
nl80211_send_rx_auth(rdev, dev, buf, len);
|
||||
nl80211_send_rx_auth(rdev, dev, buf, len, gfp);
|
||||
}
|
||||
EXPORT_SYMBOL(cfg80211_send_rx_auth);
|
||||
|
||||
void cfg80211_send_rx_assoc(struct net_device *dev, const u8 *buf, size_t len)
|
||||
void cfg80211_send_rx_assoc(struct net_device *dev, const u8 *buf, size_t len, gfp_t gfp)
|
||||
{
|
||||
struct wiphy *wiphy = dev->ieee80211_ptr->wiphy;
|
||||
struct cfg80211_registered_device *rdev = wiphy_to_dev(wiphy);
|
||||
nl80211_send_rx_assoc(rdev, dev, buf, len);
|
||||
nl80211_send_rx_assoc(rdev, dev, buf, len, gfp);
|
||||
}
|
||||
EXPORT_SYMBOL(cfg80211_send_rx_assoc);
|
||||
|
||||
void cfg80211_send_deauth(struct net_device *dev, const u8 *buf, size_t len)
|
||||
void cfg80211_send_deauth(struct net_device *dev, const u8 *buf, size_t len, gfp_t gfp)
|
||||
{
|
||||
struct wiphy *wiphy = dev->ieee80211_ptr->wiphy;
|
||||
struct cfg80211_registered_device *rdev = wiphy_to_dev(wiphy);
|
||||
nl80211_send_deauth(rdev, dev, buf, len);
|
||||
nl80211_send_deauth(rdev, dev, buf, len, gfp);
|
||||
}
|
||||
EXPORT_SYMBOL(cfg80211_send_deauth);
|
||||
|
||||
void cfg80211_send_disassoc(struct net_device *dev, const u8 *buf, size_t len)
|
||||
void cfg80211_send_disassoc(struct net_device *dev, const u8 *buf, size_t len, gfp_t gfp)
|
||||
{
|
||||
struct wiphy *wiphy = dev->ieee80211_ptr->wiphy;
|
||||
struct cfg80211_registered_device *rdev = wiphy_to_dev(wiphy);
|
||||
nl80211_send_disassoc(rdev, dev, buf, len);
|
||||
nl80211_send_disassoc(rdev, dev, buf, len, gfp);
|
||||
}
|
||||
EXPORT_SYMBOL(cfg80211_send_disassoc);
|
||||
|
||||
@@ -53,33 +53,33 @@ static void cfg80211_wext_disconnected(struct net_device *dev)
|
||||
#endif
|
||||
}
|
||||
|
||||
void cfg80211_send_auth_timeout(struct net_device *dev, const u8 *addr)
|
||||
void cfg80211_send_auth_timeout(struct net_device *dev, const u8 *addr, gfp_t gfp)
|
||||
{
|
||||
struct wiphy *wiphy = dev->ieee80211_ptr->wiphy;
|
||||
struct cfg80211_registered_device *rdev = wiphy_to_dev(wiphy);
|
||||
nl80211_send_auth_timeout(rdev, dev, addr);
|
||||
nl80211_send_auth_timeout(rdev, dev, addr, gfp);
|
||||
cfg80211_wext_disconnected(dev);
|
||||
}
|
||||
EXPORT_SYMBOL(cfg80211_send_auth_timeout);
|
||||
|
||||
void cfg80211_send_assoc_timeout(struct net_device *dev, const u8 *addr)
|
||||
void cfg80211_send_assoc_timeout(struct net_device *dev, const u8 *addr, gfp_t gfp)
|
||||
{
|
||||
struct wiphy *wiphy = dev->ieee80211_ptr->wiphy;
|
||||
struct cfg80211_registered_device *rdev = wiphy_to_dev(wiphy);
|
||||
nl80211_send_assoc_timeout(rdev, dev, addr);
|
||||
nl80211_send_assoc_timeout(rdev, dev, addr, gfp);
|
||||
cfg80211_wext_disconnected(dev);
|
||||
}
|
||||
EXPORT_SYMBOL(cfg80211_send_assoc_timeout);
|
||||
|
||||
void cfg80211_michael_mic_failure(struct net_device *dev, const u8 *addr,
|
||||
enum nl80211_key_type key_type, int key_id,
|
||||
const u8 *tsc)
|
||||
const u8 *tsc, gfp_t gfp)
|
||||
{
|
||||
struct wiphy *wiphy = dev->ieee80211_ptr->wiphy;
|
||||
struct cfg80211_registered_device *rdev = wiphy_to_dev(wiphy);
|
||||
#ifdef CONFIG_WIRELESS_EXT
|
||||
union iwreq_data wrqu;
|
||||
char *buf = kmalloc(128, GFP_ATOMIC);
|
||||
char *buf = kmalloc(128, gfp);
|
||||
|
||||
if (buf) {
|
||||
sprintf(buf, "MLME-MICHAELMICFAILURE.indication("
|
||||
@@ -93,6 +93,6 @@ void cfg80211_michael_mic_failure(struct net_device *dev, const u8 *addr,
|
||||
}
|
||||
#endif
|
||||
|
||||
nl80211_michael_mic_failure(rdev, dev, addr, key_type, key_id, tsc);
|
||||
nl80211_michael_mic_failure(rdev, dev, addr, key_type, key_id, tsc, gfp);
|
||||
}
|
||||
EXPORT_SYMBOL(cfg80211_michael_mic_failure);
|
||||
|
@@ -3832,12 +3832,12 @@ nla_put_failure:
|
||||
static void nl80211_send_mlme_event(struct cfg80211_registered_device *rdev,
|
||||
struct net_device *netdev,
|
||||
const u8 *buf, size_t len,
|
||||
enum nl80211_commands cmd)
|
||||
enum nl80211_commands cmd, gfp_t gfp)
|
||||
{
|
||||
struct sk_buff *msg;
|
||||
void *hdr;
|
||||
|
||||
msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_ATOMIC);
|
||||
msg = nlmsg_new(NLMSG_DEFAULT_SIZE, gfp);
|
||||
if (!msg)
|
||||
return;
|
||||
|
||||
@@ -3856,7 +3856,7 @@ static void nl80211_send_mlme_event(struct cfg80211_registered_device *rdev,
|
||||
return;
|
||||
}
|
||||
|
||||
genlmsg_multicast(msg, 0, nl80211_mlme_mcgrp.id, GFP_ATOMIC);
|
||||
genlmsg_multicast(msg, 0, nl80211_mlme_mcgrp.id, gfp);
|
||||
return;
|
||||
|
||||
nla_put_failure:
|
||||
@@ -3865,42 +3865,45 @@ static void nl80211_send_mlme_event(struct cfg80211_registered_device *rdev,
|
||||
}
|
||||
|
||||
void nl80211_send_rx_auth(struct cfg80211_registered_device *rdev,
|
||||
struct net_device *netdev, const u8 *buf, size_t len)
|
||||
struct net_device *netdev, const u8 *buf,
|
||||
size_t len, gfp_t gfp)
|
||||
{
|
||||
nl80211_send_mlme_event(rdev, netdev, buf, len,
|
||||
NL80211_CMD_AUTHENTICATE);
|
||||
NL80211_CMD_AUTHENTICATE, gfp);
|
||||
}
|
||||
|
||||
void nl80211_send_rx_assoc(struct cfg80211_registered_device *rdev,
|
||||
struct net_device *netdev, const u8 *buf,
|
||||
size_t len)
|
||||
size_t len, gfp_t gfp)
|
||||
{
|
||||
nl80211_send_mlme_event(rdev, netdev, buf, len, NL80211_CMD_ASSOCIATE);
|
||||
nl80211_send_mlme_event(rdev, netdev, buf, len,
|
||||
NL80211_CMD_ASSOCIATE, gfp);
|
||||
}
|
||||
|
||||
void nl80211_send_deauth(struct cfg80211_registered_device *rdev,
|
||||
struct net_device *netdev, const u8 *buf, size_t len)
|
||||
struct net_device *netdev, const u8 *buf,
|
||||
size_t len, gfp_t gfp)
|
||||
{
|
||||
nl80211_send_mlme_event(rdev, netdev, buf, len,
|
||||
NL80211_CMD_DEAUTHENTICATE);
|
||||
NL80211_CMD_DEAUTHENTICATE, gfp);
|
||||
}
|
||||
|
||||
void nl80211_send_disassoc(struct cfg80211_registered_device *rdev,
|
||||
struct net_device *netdev, const u8 *buf,
|
||||
size_t len)
|
||||
size_t len, gfp_t gfp)
|
||||
{
|
||||
nl80211_send_mlme_event(rdev, netdev, buf, len,
|
||||
NL80211_CMD_DISASSOCIATE);
|
||||
NL80211_CMD_DISASSOCIATE, gfp);
|
||||
}
|
||||
|
||||
static void nl80211_send_mlme_timeout(struct cfg80211_registered_device *rdev,
|
||||
struct net_device *netdev, int cmd,
|
||||
const u8 *addr)
|
||||
const u8 *addr, gfp_t gfp)
|
||||
{
|
||||
struct sk_buff *msg;
|
||||
void *hdr;
|
||||
|
||||
msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_ATOMIC);
|
||||
msg = nlmsg_new(NLMSG_DEFAULT_SIZE, gfp);
|
||||
if (!msg)
|
||||
return;
|
||||
|
||||
@@ -3920,7 +3923,7 @@ static void nl80211_send_mlme_timeout(struct cfg80211_registered_device *rdev,
|
||||
return;
|
||||
}
|
||||
|
||||
genlmsg_multicast(msg, 0, nl80211_mlme_mcgrp.id, GFP_ATOMIC);
|
||||
genlmsg_multicast(msg, 0, nl80211_mlme_mcgrp.id, gfp);
|
||||
return;
|
||||
|
||||
nla_put_failure:
|
||||
@@ -3929,16 +3932,19 @@ static void nl80211_send_mlme_timeout(struct cfg80211_registered_device *rdev,
|
||||
}
|
||||
|
||||
void nl80211_send_auth_timeout(struct cfg80211_registered_device *rdev,
|
||||
struct net_device *netdev, const u8 *addr)
|
||||
struct net_device *netdev, const u8 *addr,
|
||||
gfp_t gfp)
|
||||
{
|
||||
nl80211_send_mlme_timeout(rdev, netdev, NL80211_CMD_AUTHENTICATE,
|
||||
addr);
|
||||
addr, gfp);
|
||||
}
|
||||
|
||||
void nl80211_send_assoc_timeout(struct cfg80211_registered_device *rdev,
|
||||
struct net_device *netdev, const u8 *addr)
|
||||
struct net_device *netdev, const u8 *addr,
|
||||
gfp_t gfp)
|
||||
{
|
||||
nl80211_send_mlme_timeout(rdev, netdev, NL80211_CMD_ASSOCIATE, addr);
|
||||
nl80211_send_mlme_timeout(rdev, netdev, NL80211_CMD_ASSOCIATE,
|
||||
addr, gfp);
|
||||
}
|
||||
|
||||
void nl80211_send_ibss_bssid(struct cfg80211_registered_device *rdev,
|
||||
@@ -3978,12 +3984,12 @@ void nl80211_send_ibss_bssid(struct cfg80211_registered_device *rdev,
|
||||
void nl80211_michael_mic_failure(struct cfg80211_registered_device *rdev,
|
||||
struct net_device *netdev, const u8 *addr,
|
||||
enum nl80211_key_type key_type, int key_id,
|
||||
const u8 *tsc)
|
||||
const u8 *tsc, gfp_t gfp)
|
||||
{
|
||||
struct sk_buff *msg;
|
||||
void *hdr;
|
||||
|
||||
msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_ATOMIC);
|
||||
msg = nlmsg_new(NLMSG_DEFAULT_SIZE, gfp);
|
||||
if (!msg)
|
||||
return;
|
||||
|
||||
@@ -4007,7 +4013,7 @@ void nl80211_michael_mic_failure(struct cfg80211_registered_device *rdev,
|
||||
return;
|
||||
}
|
||||
|
||||
genlmsg_multicast(msg, 0, nl80211_mlme_mcgrp.id, GFP_ATOMIC);
|
||||
genlmsg_multicast(msg, 0, nl80211_mlme_mcgrp.id, gfp);
|
||||
return;
|
||||
|
||||
nla_put_failure:
|
||||
|
@@ -15,27 +15,27 @@ void nl80211_send_scan_aborted(struct cfg80211_registered_device *rdev,
|
||||
void nl80211_send_reg_change_event(struct regulatory_request *request);
|
||||
void nl80211_send_rx_auth(struct cfg80211_registered_device *rdev,
|
||||
struct net_device *netdev,
|
||||
const u8 *buf, size_t len);
|
||||
const u8 *buf, size_t len, gfp_t gfp);
|
||||
void nl80211_send_rx_assoc(struct cfg80211_registered_device *rdev,
|
||||
struct net_device *netdev,
|
||||
const u8 *buf, size_t len);
|
||||
const u8 *buf, size_t len, gfp_t gfp);
|
||||
void nl80211_send_deauth(struct cfg80211_registered_device *rdev,
|
||||
struct net_device *netdev,
|
||||
const u8 *buf, size_t len);
|
||||
const u8 *buf, size_t len, gfp_t gfp);
|
||||
void nl80211_send_disassoc(struct cfg80211_registered_device *rdev,
|
||||
struct net_device *netdev,
|
||||
const u8 *buf, size_t len);
|
||||
const u8 *buf, size_t len, gfp_t gfp);
|
||||
void nl80211_send_auth_timeout(struct cfg80211_registered_device *rdev,
|
||||
struct net_device *netdev,
|
||||
const u8 *addr);
|
||||
const u8 *addr, gfp_t gfp);
|
||||
void nl80211_send_assoc_timeout(struct cfg80211_registered_device *rdev,
|
||||
struct net_device *netdev,
|
||||
const u8 *addr);
|
||||
const u8 *addr, gfp_t gfp);
|
||||
void
|
||||
nl80211_michael_mic_failure(struct cfg80211_registered_device *rdev,
|
||||
struct net_device *netdev, const u8 *addr,
|
||||
enum nl80211_key_type key_type,
|
||||
int key_id, const u8 *tsc);
|
||||
int key_id, const u8 *tsc, gfp_t gfp);
|
||||
|
||||
void
|
||||
nl80211_send_beacon_hint_event(struct wiphy *wiphy,
|
||||
|
Reference in New Issue
Block a user