stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [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).