Re: [RFC] staging: wlan-ng: Driver broken since kernel 5.15

Philipp Hortmann
2024-03-17T20:07:37Z

On 3/11/24 08:04, Dan Carpenter wrote:
> On Sat, Mar 09, 2024 at 11:09:24PM +0100, Philipp Hortmann wrote:
>> Hi,
>>
>> I would remove the driver from the mainline kernel. What are your thoughts?
>>
>> I bought two WLAN devices (DUT: D-Link DWL-122 and T-Sinus 111 data) that
>> are supported by wlan-ng driver. Issue is that the driver is not working
>> anymore.
>>
>> The error picture is that the device does not receive any packets.
>> The dmesg says:
>> [ 123.695917] prism2_usb 2-1.6:1.0 wlan0: Unknown mgmt request message
>> 0x0e4f9800
>> [ 127.508211] prism2_usb 2-1.6:1.0 wlan0: Unknown mgmt request message
>> 0x04f0d000
>> ...
>>
>> A working commit 8fc4fb1728855a22f9149079ba51877f5ee61fc9 (HEAD) Date: Mon
>> Jul 5 11:16:28 2021 -0700
>> A failing commit d980cc0620ae77ab2572235a1300bf22519f2e86 (HEAD) Date: Fri
>> Jul 16 19:08:09 2021 -0700
>
> Those dates are 11 days apart during the v5.14 merge window. You're
> saying 5.15 is broken but the broken commit is in 5.14-rc2 so it really
> was broken earlier.
>
> There were only 3 patches to wlan-ng between v5.13 and v5.14.
>
> $ git log --oneline v5.13..v5.14 drivers/staging/wlan-ng/
> b1e9109aeff3 staging: wlan-ng: silence incorrect type in argument 1 (different address spaces)
> ad843f392035 staging: wlan-ng: remove redundant initialization of variable txresult
> ea82ff749587 staging: wlan-ng: cfg80211: Move large struct onto the heap
>
> Obviously I'm going to suspect the largest patch. Reviewing that patch
> now, I see we removed a memset() from the loop. That seems like a bug.
>
> - memset(&msg2, 0, sizeof(msg2));
> - msg2.msgcode = DIDMSG_DOT11REQ_SCAN_RESULTS;
> - msg2.bssindex.data = i;
> + msg2->msgcode = DIDMSG_DOT11REQ_SCAN_RESULTS;
> + msg2->bssindex.data = i;
>
> That's the only interesting change so I suspect it's the issue...
> Could you test this patch? I feel like if you're the first person to
> complain since Aug 29 2021 then probably we should just remove the
> driver. Greg is on vacation so lets hold off on removing it until he
> comes back.
>
> regards,
> dan carpenter
>
>
> diff --git a/drivers/staging/wlan-ng/cfg80211.c b/drivers/staging/wlan-ng/cfg80211.c
> index 471bb310176f..0c270ed8ce67 100644
> --- a/drivers/staging/wlan-ng/cfg80211.c
> +++ b/drivers/staging/wlan-ng/cfg80211.c
> @@ -347,6 +347,7 @@ static int prism2_scan(struct wiphy *wiphy,
> for (i = 0; i < numbss; i++) {
> int freq;
>
> + memset(msg2, 0, sizeof(*msg2));
> msg2->msgcode = DIDMSG_DOT11REQ_SCAN_RESULTS;
> msg2->bssindex.data = i;
>

Hi Dan,

sorry it is so crowded here.

You are right with the statement that it is this commit.
commit ea82ff749587807fa48e3277c977ff3cec266f25 (HEAD)
Author: Lee Jones <lee.jones@linaro.org>
Date: Wed Apr 14 19:10:39 2021 +0100

staging: wlan-ng: cfg80211: Move large struct onto the heap

Fixes the following W=1 kernel build warning(s):

drivers/staging/wlan-ng/cfg80211.c: In function ‘prism2_scan’:
drivers/staging/wlan-ng/cfg80211.c:388:1: warning: the frame size
of 1296 bytes is larger than 1024 bytes [-Wframe-larger-than=]

But It is not depending on the line you pointed to.

I need another week to look into this.

Thanks for your support.

Bye Philipp