mac80211: Disallow changing chan type on monitor when CHAN_MODE_FIXED
authorPontus Fuchs <pontus.fuchs@gmail.com>
Tue, 12 Jun 2012 12:13:19 +0000 (14:13 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 13 Jun 2012 08:23:21 +0000 (10:23 +0200)
If you add a monitor interface in parallel to a normal interface
mac80211 will let you to change the channel type on the monitor
interface even if you are connected. Add an explicit check to
disallow this.

Signed-off-by: Pontus Fuchs <pontus.fuchs@gmail.com>
[fix typo in commit log, use sdata instead of netdev]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/cfg.c

index 9a974579ba8999af07c8175fc89e70781bd6a317..cd8b1fb05d42498885976aa4df8a780e2156e97c 100644 (file)
@@ -689,7 +689,8 @@ static int ieee80211_set_channel(struct wiphy *wiphy,
        case CHAN_MODE_HOPPING:
                return -EBUSY;
        case CHAN_MODE_FIXED:
-               if (local->oper_channel != chan)
+               if (local->oper_channel != chan ||
+                   (!sdata && local->_oper_channel_type != channel_type))
                        return -EBUSY;
                if (!sdata && local->_oper_channel_type == channel_type)
                        return 0;