* [PATCH v2] wifi: nl80211: fix bounds checker error in nl80211_parse_sched_scan
@ 2024-10-29 13:22 Aleksei Vetrov
2024-11-04 16:10 ` Aleksei Vetrov
2024-11-04 17:12 ` Jeff Johnson
0 siblings, 2 replies; 7+ messages in thread
From: Aleksei Vetrov @ 2024-10-29 13:22 UTC (permalink / raw)
To: Johannes Berg, Kees Cook, Gustavo A. R. Silva, Dmitry Antipov
Cc: linux-wireless, linux-kernel, linux-hardening, stable,
Aleksei Vetrov
The channels array in the cfg80211_scan_request has a __counted_by
attribute attached to it, which points to the n_channels variable. This
attribute is used in bounds checking, and if it is not set before the
array is filled, then the bounds sanitizer will issue a warning or a
kernel panic if CONFIG_UBSAN_TRAP is set.
This patch sets the size of allocated memory as the initial value for
n_channels. It is updated with the actual number of added elements after
the array is filled.
Fixes: aa4ec06c455d ("wifi: cfg80211: use __counted_by where appropriate")
Cc: stable@vger.kernel.org
Signed-off-by: Aleksei Vetrov <vvvvvv@google.com>
---
Changes in v2:
- Added Fixes tag and added stable to CC
- Link to v1: https://lore.kernel.org/r/20241028-nl80211_parse_sched_scan-bounds-checker-fix-v1-1-bb640be0ebb7@google.com
---
net/wireless/nl80211.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index d7d099f7118ab5d5c745905abdea85d246c2b7b2..9b1b9dc5a7eb2a864da7b0212bc6a156b7757a9d 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -9776,6 +9776,7 @@ nl80211_parse_sched_scan(struct wiphy *wiphy, struct wireless_dev *wdev,
request = kzalloc(size, GFP_KERNEL);
if (!request)
return ERR_PTR(-ENOMEM);
+ request->n_channels = n_channels;
if (n_ssids)
request->ssids = (void *)request +
---
base-commit: 81983758430957d9a5cb3333fe324fd70cf63e7e
change-id: 20241028-nl80211_parse_sched_scan-bounds-checker-fix-c5842f41b863
Best regards,
--
Aleksei Vetrov <vvvvvv@google.com>
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v2] wifi: nl80211: fix bounds checker error in nl80211_parse_sched_scan
2024-10-29 13:22 [PATCH v2] wifi: nl80211: fix bounds checker error in nl80211_parse_sched_scan Aleksei Vetrov
@ 2024-11-04 16:10 ` Aleksei Vetrov
2024-11-04 17:10 ` Jeff Johnson
2024-11-04 17:12 ` Jeff Johnson
1 sibling, 1 reply; 7+ messages in thread
From: Aleksei Vetrov @ 2024-11-04 16:10 UTC (permalink / raw)
To: Johannes Berg, Kees Cook, Gustavo A. R. Silva, Dmitry Antipov
Cc: linux-wireless, linux-kernel, linux-hardening, stable
Hello everyone,
On Tue, Oct 29, 2024 at 01:22:11PM +0000, Aleksei Vetrov wrote:
> The channels array in the cfg80211_scan_request has a __counted_by
> attribute attached to it, which points to the n_channels variable. This
> attribute is used in bounds checking, and if it is not set before the
> array is filled, then the bounds sanitizer will issue a warning or a
> kernel panic if CONFIG_UBSAN_TRAP is set.
>
> This patch sets the size of allocated memory as the initial value for
> n_channels. It is updated with the actual number of added elements after
> the array is filled.
>
> Fixes: aa4ec06c455d ("wifi: cfg80211: use __counted_by where appropriate")
> Cc: stable@vger.kernel.org
> Signed-off-by: Aleksei Vetrov <vvvvvv@google.com>
> ---
> Changes in v2:
> - Added Fixes tag and added stable to CC
> - Link to v1: https://lore.kernel.org/r/20241028-nl80211_parse_sched_scan-bounds-checker-fix-v1-1-bb640be0ebb7@google.com
I would really appreciate it if someone take a look at this single line
patch. It looks like v2 of this patch has slipped through the cracks...
Best regards,
---
Aleksei Vetrov
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2] wifi: nl80211: fix bounds checker error in nl80211_parse_sched_scan
2024-11-04 16:10 ` Aleksei Vetrov
@ 2024-11-04 17:10 ` Jeff Johnson
2024-11-04 18:06 ` Aleksei Vetrov
0 siblings, 1 reply; 7+ messages in thread
From: Jeff Johnson @ 2024-11-04 17:10 UTC (permalink / raw)
To: Aleksei Vetrov, Johannes Berg, Kees Cook, Gustavo A. R. Silva,
Dmitry Antipov
Cc: linux-wireless, linux-kernel, linux-hardening, stable
On 11/4/2024 8:10 AM, Aleksei Vetrov wrote:
> Hello everyone,
>
> On Tue, Oct 29, 2024 at 01:22:11PM +0000, Aleksei Vetrov wrote:
>> The channels array in the cfg80211_scan_request has a __counted_by
>> attribute attached to it, which points to the n_channels variable. This
>> attribute is used in bounds checking, and if it is not set before the
>> array is filled, then the bounds sanitizer will issue a warning or a
>> kernel panic if CONFIG_UBSAN_TRAP is set.
>>
>> This patch sets the size of allocated memory as the initial value for
>> n_channels. It is updated with the actual number of added elements after
>> the array is filled.
>>
>> Fixes: aa4ec06c455d ("wifi: cfg80211: use __counted_by where appropriate")
>> Cc: stable@vger.kernel.org
>> Signed-off-by: Aleksei Vetrov <vvvvvv@google.com>
>> ---
>> Changes in v2:
>> - Added Fixes tag and added stable to CC
>> - Link to v1: https://lore.kernel.org/r/20241028-nl80211_parse_sched_scan-bounds-checker-fix-v1-1-bb640be0ebb7@google.com
>
> I would really appreciate it if someone take a look at this single line
> patch. It looks like v2 of this patch has slipped through the cracks...
It has not slipped through the cracks, it is being tracked in patchwork:
https://patchwork.kernel.org/project/linux-wireless/patch/20241029-nl80211_parse_sched_scan-bounds-checker-fix-v2-1-c804b787341f@google.com/
The wireless maintainers have a lot of work and it can take weeks to process
new patches.
Have patience,
/jeff
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2] wifi: nl80211: fix bounds checker error in nl80211_parse_sched_scan
2024-10-29 13:22 [PATCH v2] wifi: nl80211: fix bounds checker error in nl80211_parse_sched_scan Aleksei Vetrov
2024-11-04 16:10 ` Aleksei Vetrov
@ 2024-11-04 17:12 ` Jeff Johnson
2024-11-04 18:20 ` Aleksei Vetrov
2024-11-05 10:46 ` Kalle Valo
1 sibling, 2 replies; 7+ messages in thread
From: Jeff Johnson @ 2024-11-04 17:12 UTC (permalink / raw)
To: Aleksei Vetrov, Johannes Berg, Kees Cook, Gustavo A. R. Silva,
Dmitry Antipov
Cc: linux-wireless, linux-kernel, linux-hardening, stable
On 10/29/2024 6:22 AM, Aleksei Vetrov wrote:
> The channels array in the cfg80211_scan_request has a __counted_by
> attribute attached to it, which points to the n_channels variable. This
> attribute is used in bounds checking, and if it is not set before the
> array is filled, then the bounds sanitizer will issue a warning or a
> kernel panic if CONFIG_UBSAN_TRAP is set.
>
> This patch sets the size of allocated memory as the initial value for
> n_channels. It is updated with the actual number of added elements after
> the array is filled.
>
> Fixes: aa4ec06c455d ("wifi: cfg80211: use __counted_by where appropriate")
> Cc: stable@vger.kernel.org
> Signed-off-by: Aleksei Vetrov <vvvvvv@google.com>
Reviewed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
And it is exactly this kind of issue why I'm not accepting any __counted_by()
changes in ath.git without actually testing the code that is modified.
/jeff
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2] wifi: nl80211: fix bounds checker error in nl80211_parse_sched_scan
2024-11-04 17:10 ` Jeff Johnson
@ 2024-11-04 18:06 ` Aleksei Vetrov
0 siblings, 0 replies; 7+ messages in thread
From: Aleksei Vetrov @ 2024-11-04 18:06 UTC (permalink / raw)
To: Jeff Johnson
Cc: Johannes Berg, Kees Cook, Gustavo A. R. Silva, Dmitry Antipov,
linux-wireless, linux-kernel, linux-hardening, stable
On Mon, Nov 04, 2024 at 09:10:15AM -0800, Jeff Johnson wrote:
> It has not slipped through the cracks, it is being tracked in patchwork:
> https://patchwork.kernel.org/project/linux-wireless/patch/20241029-nl80211_parse_sched_scan-bounds-checker-fix-v2-1-c804b787341f@google.com/
Today I learned of a new tool, thank you!
> The wireless maintainers have a lot of work and it can take weeks to process
> new patches.
>
> Have patience,
> /jeff
The initial response on v1 was almost instant, so I was surprised that
v2 took much more time. However that response was from linux-hardening
guys and I didn't took in account that now I need the maintainer
response that will take much more time.
Thank you again for taking your time to look into my patch!
--
Aleksei Vetrov
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2] wifi: nl80211: fix bounds checker error in nl80211_parse_sched_scan
2024-11-04 17:12 ` Jeff Johnson
@ 2024-11-04 18:20 ` Aleksei Vetrov
2024-11-05 10:46 ` Kalle Valo
1 sibling, 0 replies; 7+ messages in thread
From: Aleksei Vetrov @ 2024-11-04 18:20 UTC (permalink / raw)
To: Jeff Johnson
Cc: Johannes Berg, Kees Cook, Gustavo A. R. Silva, Dmitry Antipov,
linux-wireless, linux-kernel, linux-hardening, stable
On Mon, Nov 04, 2024 at 09:12:09AM -0800, Jeff Johnson wrote:
> Reviewed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
>
> And it is exactly this kind of issue why I'm not accepting any __counted_by()
> changes in ath.git without actually testing the code that is modified.
However, I was really lucky that my setup used nl80211_parse_sched_scan
during normal operations and triggered bound sanitizer. After the patch
was developed, I accidently wiped my device and couldn't reproduce the
bug again normally, so I had to use iw tool to trigger
nl80211_parse_sched_scan manually to test it properly.
I looked for some tests that cover this function and that I can run on
the device, but couldn't find any. It would be nice if you know about
such tests, so I can check if there are any other places where bound
sanitizer may be triggered. I only know syzkaller tool that may be used
to get more kernel coverage in general.
Best regards,
--
Aleksei Vetrov
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2] wifi: nl80211: fix bounds checker error in nl80211_parse_sched_scan
2024-11-04 17:12 ` Jeff Johnson
2024-11-04 18:20 ` Aleksei Vetrov
@ 2024-11-05 10:46 ` Kalle Valo
1 sibling, 0 replies; 7+ messages in thread
From: Kalle Valo @ 2024-11-05 10:46 UTC (permalink / raw)
To: Jeff Johnson
Cc: Aleksei Vetrov, Johannes Berg, Kees Cook, Gustavo A. R. Silva,
Dmitry Antipov, linux-wireless, linux-kernel, linux-hardening,
stable
Jeff Johnson <quic_jjohnson@quicinc.com> writes:
> On 10/29/2024 6:22 AM, Aleksei Vetrov wrote:
>> The channels array in the cfg80211_scan_request has a __counted_by
>> attribute attached to it, which points to the n_channels variable. This
>> attribute is used in bounds checking, and if it is not set before the
>> array is filled, then the bounds sanitizer will issue a warning or a
>> kernel panic if CONFIG_UBSAN_TRAP is set.
>>
>> This patch sets the size of allocated memory as the initial value for
>> n_channels. It is updated with the actual number of added elements after
>> the array is filled.
>>
>> Fixes: aa4ec06c455d ("wifi: cfg80211: use __counted_by where appropriate")
>> Cc: stable@vger.kernel.org
>> Signed-off-by: Aleksei Vetrov <vvvvvv@google.com>
> Reviewed-by: Jeff Johnson <quic_jjohnson@quicinc.com>
>
> And it is exactly this kind of issue why I'm not accepting any __counted_by()
> changes in ath.git without actually testing the code that is modified.
That's a good rule. If we ever manage to write that "wireless cleanup
policy" document this is something we should add there.
--
https://patchwork.kernel.org/project/linux-wireless/list/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2024-11-05 10:46 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-29 13:22 [PATCH v2] wifi: nl80211: fix bounds checker error in nl80211_parse_sched_scan Aleksei Vetrov
2024-11-04 16:10 ` Aleksei Vetrov
2024-11-04 17:10 ` Jeff Johnson
2024-11-04 18:06 ` Aleksei Vetrov
2024-11-04 17:12 ` Jeff Johnson
2024-11-04 18:20 ` Aleksei Vetrov
2024-11-05 10:46 ` Kalle Valo
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).