aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/rx.c
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2011-10-21 10:22:22 +0200
committerJohn W. Linville <linville@tuxdriver.com>2011-11-08 15:54:13 -0500
commit152c477aa3eb8046b35aa7cde2782230064041d8 (patch)
treeb54ff13db4111d02210c1650d8c5f3ee53ca5a25 /net/mac80211/rx.c
parentb83db862ffb871e3131e5d2160c741b288eea9aa (diff)
downloadkernel_goldelico_gta04-152c477aa3eb8046b35aa7cde2782230064041d8.zip
kernel_goldelico_gta04-152c477aa3eb8046b35aa7cde2782230064041d8.tar.gz
kernel_goldelico_gta04-152c477aa3eb8046b35aa7cde2782230064041d8.tar.bz2
mac80211: exit cooked monitor RX early if there are none
If there are no cooked monitor interfaces, there's no point in building the radiotap RX header for the frame and iterating the interface list. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/rx.c')
-rw-r--r--net/mac80211/rx.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index b867bd5..c74e542 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -2489,6 +2489,10 @@ static void ieee80211_rx_cooked_monitor(struct ieee80211_rx_data *rx,
goto out_free_skb;
rx->flags |= IEEE80211_RX_CMNTR;
+ /* If there are no cooked monitor interfaces, just free the SKB */
+ if (!local->cooked_mntrs)
+ goto out_free_skb;
+
if (skb_headroom(skb) < sizeof(*rthdr) &&
pskb_expand_head(skb, sizeof(*rthdr), 0, GFP_ATOMIC))
goto out_free_skb;