aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/wireless/core.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/net/wireless/core.c b/net/wireless/core.c
index b5e2f6dfa333..1a78b3c70cf2 100644
--- a/net/wireless/core.c
+++ b/net/wireless/core.c
@@ -331,8 +331,13 @@ struct wiphy *wiphy_new(const struct cfg80211_ops *ops, int sizeof_priv)
331 struct cfg80211_registered_device *rdev; 331 struct cfg80211_registered_device *rdev;
332 int alloc_size; 332 int alloc_size;
333 333
334 WARN_ON(!ops->add_key && ops->del_key); 334 WARN_ON(ops->add_key && (!ops->del_key || !ops->set_default_key));
335 WARN_ON(ops->add_key && !ops->del_key); 335 WARN_ON(ops->auth && (!ops->assoc || !ops->deauth || !ops->disassoc));
336 WARN_ON(ops->connect && !ops->disconnect);
337 WARN_ON(ops->join_ibss && !ops->leave_ibss);
338 WARN_ON(ops->add_virtual_intf && !ops->del_virtual_intf);
339 WARN_ON(ops->add_station && !ops->del_station);
340 WARN_ON(ops->add_mpath && !ops->del_mpath);
336 341
337 alloc_size = sizeof(*rdev) + sizeof_priv; 342 alloc_size = sizeof(*rdev) + sizeof_priv;
338 343
@@ -687,6 +692,8 @@ static int cfg80211_netdev_notifier_call(struct notifier_block * nb,
687 mutex_destroy(&wdev->mtx); 692 mutex_destroy(&wdev->mtx);
688 break; 693 break;
689 case NETDEV_PRE_UP: 694 case NETDEV_PRE_UP:
695 if (!(wdev->wiphy->interface_modes & BIT(wdev->iftype)))
696 return notifier_from_errno(-EOPNOTSUPP);
690 if (rfkill_blocked(rdev->rfkill)) 697 if (rfkill_blocked(rdev->rfkill))
691 return notifier_from_errno(-ERFKILL); 698 return notifier_from_errno(-ERFKILL);
692 break; 699 break;