diff mbox

nl80211: fix validation of scheduled scan info for wowlan netdetect

Message ID 1484820088-24448-1-git-send-email-arend.vanspriel@broadcom.com (mailing list archive)
State Superseded
Delegated to: Johannes Berg
Headers show

Commit Message

Arend Van Spriel Jan. 19, 2017, 10:01 a.m. UTC
For wowlan netdetect a separate limit is defined for the number of
matchsets. Currently, this limit is ignored and the regular limit
for scheduled scan matchsets, ie. struct wiphy::max_match_sets, is
used for the net-detect case as well.

Cc: Luciano Coelho <luciano.coelho@intel.com>
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
---
 net/wireless/nl80211.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

Comments

Luca Coelho Jan. 19, 2017, noon UTC | #1
On Thu, 2017-01-19 at 10:01 +0000, Arend van Spriel wrote:
> For wowlan netdetect a separate limit is defined for the number of
> matchsets. Currently, this limit is ignored and the regular limit
> for scheduled scan matchsets, ie. struct wiphy::max_match_sets, is
> used for the net-detect case as well.
> 
> Cc: Luciano Coelho <luciano.coelho@intel.com>
> Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
> ---

What?! You don't have the same number of matchsets for both? :P

Looks good.

Reviewed-by: Luca Coelho <luciano.coelho@intel.com>

--
Luca.
Arend Van Spriel Jan. 19, 2017, 1:08 p.m. UTC | #2
On 19-1-2017 13:00, Luca Coelho wrote:
> On Thu, 2017-01-19 at 10:01 +0000, Arend van Spriel wrote:
>> For wowlan netdetect a separate limit is defined for the number of
>> matchsets. Currently, this limit is ignored and the regular limit
>> for scheduled scan matchsets, ie. struct wiphy::max_match_sets, is
>> used for the net-detect case as well.
>>
>> Cc: Luciano Coelho <luciano.coelho@intel.com>
>> Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
>> ---
> 
> What?! You don't have the same number of matchsets for both? :P

Actually I have, but your comment mentioned they do not have to be the
same. brcmfmac actually did not set max_nd_match_sets so I was surprised
it worked. That said this patch will result in regression in brcmfmac
:-p Not sure about other drivers supporting net-detect.

Regards,
Arend

> Looks good.
> 
> Reviewed-by: Luca Coelho <luciano.coelho@intel.com>
> 
> --
> Luca.
>
Johannes Berg Jan. 24, 2017, 8:57 a.m. UTC | #3
On Thu, 2017-01-19 at 14:08 +0100, Arend Van Spriel wrote:
> 
> On 19-1-2017 13:00, Luca Coelho wrote:
> > On Thu, 2017-01-19 at 10:01 +0000, Arend van Spriel wrote:
> > > For wowlan netdetect a separate limit is defined for the number
> > > of
> > > matchsets. Currently, this limit is ignored and the regular limit
> > > for scheduled scan matchsets, ie. struct wiphy::max_match_sets,
> > > is
> > > used for the net-detect case as well.
> > > 
> > > Cc: Luciano Coelho <luciano.coelho@intel.com>
> > > Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
> > > ---
> > 
> > What?! You don't have the same number of matchsets for both? :P
> 
> Actually I have, but your comment mentioned they do not have to be
> the
> same. brcmfmac actually did not set max_nd_match_sets so I was
> surprised
> it worked. That said this patch will result in regression in brcmfmac
> :-p Not sure about other drivers supporting net-detect.

So do you want to submit a patch to brcmfmac first, and then I'll apply
this later? I can apply it and break it, but now that we already know
...?

johannes
Arend Van Spriel Jan. 24, 2017, 11:28 a.m. UTC | #4
On 24-1-2017 9:57, Johannes Berg wrote:
> On Thu, 2017-01-19 at 14:08 +0100, Arend Van Spriel wrote:
>>
>> On 19-1-2017 13:00, Luca Coelho wrote:
>>> On Thu, 2017-01-19 at 10:01 +0000, Arend van Spriel wrote:
>>>> For wowlan netdetect a separate limit is defined for the number
>>>> of
>>>> matchsets. Currently, this limit is ignored and the regular limit
>>>> for scheduled scan matchsets, ie. struct wiphy::max_match_sets,
>>>> is
>>>> used for the net-detect case as well.
>>>>
>>>> Cc: Luciano Coelho <luciano.coelho@intel.com>
>>>> Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
>>>> ---
>>>
>>> What?! You don't have the same number of matchsets for both? :P
>>
>> Actually I have, but your comment mentioned they do not have to be
>> the
>> same. brcmfmac actually did not set max_nd_match_sets so I was
>> surprised
>> it worked. That said this patch will result in regression in brcmfmac
>> :-p Not sure about other drivers supporting net-detect.
> 
> So do you want to submit a patch to brcmfmac first, and then I'll apply
> this later? I can apply it and break it, but now that we already know
> ...?

I have a brcmfmac patch in the queue. I will look at the other scheduled
scan supporting drivers.

Regards,
Arend
Arend Van Spriel Jan. 27, 2017, 11:25 a.m. UTC | #5
On 24-1-2017 12:28, Arend Van Spriel wrote:
> On 24-1-2017 9:57, Johannes Berg wrote:
>> On Thu, 2017-01-19 at 14:08 +0100, Arend Van Spriel wrote:
>>>
>>> On 19-1-2017 13:00, Luca Coelho wrote:
>>>> On Thu, 2017-01-19 at 10:01 +0000, Arend van Spriel wrote:
>>>>> For wowlan netdetect a separate limit is defined for the number
>>>>> of
>>>>> matchsets. Currently, this limit is ignored and the regular limit
>>>>> for scheduled scan matchsets, ie. struct wiphy::max_match_sets,
>>>>> is
>>>>> used for the net-detect case as well.
>>>>>
>>>>> Cc: Luciano Coelho <luciano.coelho@intel.com>
>>>>> Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
>>>>> ---
>>>>
>>>> What?! You don't have the same number of matchsets for both? :P
>>>
>>> Actually I have, but your comment mentioned they do not have to be
>>> the
>>> same. brcmfmac actually did not set max_nd_match_sets so I was
>>> surprised
>>> it worked. That said this patch will result in regression in brcmfmac
>>> :-p Not sure about other drivers supporting net-detect.
>>
>> So do you want to submit a patch to brcmfmac first, and then I'll apply
>> this later? I can apply it and break it, but now that we already know
>> ...?
> 
> I have a brcmfmac patch in the queue. I will look at the other scheduled
> scan supporting drivers.

Hi Johannes,

I actually have two dependent brcmfmac patches. Do you expect conflict
if Kalle takes all?

Regards,
Arend
Johannes Berg Jan. 27, 2017, 11:27 a.m. UTC | #6
> I actually have two dependent brcmfmac patches. Do you expect
> conflict if Kalle takes all?

Not really, if that's somehow easier we can do that.

johannes
Arend Van Spriel Jan. 27, 2017, 11:29 a.m. UTC | #7
On 27-1-2017 12:27, Johannes Berg wrote:
> 
>> I actually have two dependent brcmfmac patches. Do you expect
>> conflict if Kalle takes all?
> 
> Not really, if that's somehow easier we can do that.

Will do. I checked the other drivers. All those supporting wowl
netdetect did provide max_nd_matchsets except for brcmfmac.


Regards,
Arend
diff mbox

Patch

diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index b4e7bdd..df0675d 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -6852,7 +6852,7 @@  static int nl80211_abort_scan(struct sk_buff *skb, struct genl_info *info)
 
 static struct cfg80211_sched_scan_request *
 nl80211_parse_sched_scan(struct wiphy *wiphy, struct wireless_dev *wdev,
-			 struct nlattr **attrs)
+			 struct nlattr **attrs, int max_match_sets)
 {
 	struct cfg80211_sched_scan_request *request;
 	struct nlattr *attr;
@@ -6917,7 +6917,7 @@  static int nl80211_abort_scan(struct sk_buff *skb, struct genl_info *info)
 	if (!n_match_sets && default_match_rssi != NL80211_SCAN_RSSI_THOLD_OFF)
 		n_match_sets = 1;
 
-	if (n_match_sets > wiphy->max_match_sets)
+	if (n_match_sets > max_match_sets)
 		return ERR_PTR(-EINVAL);
 
 	if (attrs[NL80211_ATTR_IE])
@@ -7217,7 +7217,8 @@  static int nl80211_start_sched_scan(struct sk_buff *skb,
 		return -EINPROGRESS;
 
 	sched_scan_req = nl80211_parse_sched_scan(&rdev->wiphy, wdev,
-						  info->attrs);
+						  info->attrs,
+						  rdev->wiphy.max_match_sets);
 
 	err = PTR_ERR_OR_ZERO(sched_scan_req);
 	if (err)
@@ -10030,7 +10031,8 @@  static int nl80211_parse_wowlan_nd(struct cfg80211_registered_device *rdev,
 	if (err)
 		goto out;
 
-	trig->nd_config = nl80211_parse_sched_scan(&rdev->wiphy, NULL, tb);
+	trig->nd_config = nl80211_parse_sched_scan(&rdev->wiphy, NULL, tb,
+						   wowlan->max_nd_match_sets);
 	err = PTR_ERR_OR_ZERO(trig->nd_config);
 	if (err)
 		trig->nd_config = NULL;