On Thursday 26 January 2017 03:06 PM, Johannes Berg wrote:
>
>> +static bool cfg80211_off_channel_oper_allowed(struct wireless_dev
>> *wdev)
>> +{
>> +    if (!cfg80211_beaconing_iface_active(wdev))
>> +            return true;
>> +
>> +    if (!(wdev->chandef.chan->flags & IEEE80211_CHAN_RADAR))
>> +            return true;
>
> That could use some locking assertions. Maybe also in the
> cfg80211_beaconing_iface_active() function you introduced in the
> previous patch.

Ok.

>
>> +    if (!cfg80211_off_channel_oper_allowed(wdev)) {
>> +            struct ieee80211_channel *chan;
>> +
>> +            if (request->n_channels != 1) {
>> +                    err = -EBUSY;
>> +                    goto out_free;
>> +            }
>> +
>> +            chan = request->channels[0];
>> +            if (chan->center_freq != wdev->chandef.chan-
>>> center_freq) {
>> +                    err = -EBUSY;
>> +                    goto out_free;
>> +            }
>> +    }
>
> I'm not convinced you even hold the relevant locks here, though off the
> top of my head I'm not even sure which are needed.

Thanks for pointing it, it should be within wdev_lock().

>
>>      i = 0;
>>      if (n_ssids) {
>>              nla_for_each_nested(attr, info-
>>> attrs[NL80211_ATTR_SCAN_SSIDS], tmp) {
>> @@ -9053,6 +9079,7 @@ static int nl80211_remain_on_channel(struct
>> sk_buff *skb,
>>      struct cfg80211_registered_device *rdev = info->user_ptr[0];
>>      struct wireless_dev *wdev = info->user_ptr[1];
>>      struct cfg80211_chan_def chandef;
>> +    const struct cfg80211_chan_def *compat_chandef;
>>      struct sk_buff *msg;
>>      void *hdr;
>>      u64 cookie;
>> @@ -9081,6 +9108,14 @@ static int nl80211_remain_on_channel(struct
>> sk_buff *skb,
>>      if (err)
>>              return err;
>>
>> +    if (!(cfg80211_off_channel_oper_allowed(wdev) ||
>> +          cfg80211_chandef_identical(&wdev->chandef, &chandef)))
>
> I'd prefer to write that as !off_channel && !chandef_identical, seems
> easier to understand here.

Ok.


Thanks,

Vasanth

Reply via email to