* [PATCH v2] wifi: brcmfmac: Check the return value of of_property_read_string_index
@ 2025-01-06 17:09 Stefan Dösinger
2025-01-07 17:45 ` Arend Van Spriel
2025-01-10 12:53 ` [v2] wifi: brcmfmac: Check the return value of of_property_read_string_index() Kalle Valo
0 siblings, 2 replies; 3+ messages in thread
From: Stefan Dösinger @ 2025-01-06 17:09 UTC (permalink / raw)
To: linux-wireless; +Cc: Arend van Spriel
Somewhen between 6.10 and 6.11 the driver started to crash on my
MacBookPro14,3. The property doesn't exist and 'tmp' remains
uninitialized, so we pass a random pointer to devm_kstrdup().
Signed-off-by: Stefan Dösinger <stefan@codeweavers.com>
---
v2: Don't assign err, inline of_property_read_string_index into the if
statement.
The crash I am getting looks like this:
BUG: unable to handle page fault for address: 00007f033c669379
PF: supervisor read access in kernel mode
PF: error_code(0x0001) - permissions violation
PGD 8000000101341067 P4D 8000000101341067 PUD 101340067 PMD 1013bb067 PTE 800000010aee9025
Oops: Oops: 0001 [#1] SMP PTI
CPU: 4 UID: 0 PID: 827 Comm: (udev-worker) Not tainted 6.11.8-gentoo #1
Hardware name: Apple Inc. MacBookPro14,3/Mac-551B86E5744E2388, BIOS 529.140.2.0.0 06/23/2024
RIP: 0010:strlen+0x4/0x30
Code: f7 75 ec 31 c0 c3 cc cc cc cc 48 89 f8 c3 cc cc cc cc 0f 1f 40 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 f3 0f 1e fa <80> 3f 00 74 14 48 89 f8 48 83 c0 01 80 38 00 75 f7 48 29 f8 c3 cc
RSP: 0018:ffffb4aac0683ad8 EFLAGS: 00010202
RAX: 00000000ffffffea RBX: 00007f033c669379 RCX: 0000000000000001
RDX: 0000000000000cc0 RSI: 00007f033c669379 RDI: 00007f033c669379
RBP: 00000000ffffffea R08: 0000000000000000 R09: 00000000c0ba916a
R10: ffffffffffffffff R11: ffffffffb61ea260 R12: ffff91f7815b50c8
R13: 0000000000000cc0 R14: ffff91fafefffe30 R15: ffffb4aac0683b30
FS: 00007f033ccbe8c0(0000) GS:ffff91faeed00000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007f033c669379 CR3: 0000000107b1e004 CR4: 00000000003706f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
<TASK>
? __die+0x23/0x70
? page_fault_oops+0x149/0x4c0
? raw_spin_rq_lock_nested+0xe/0x20
? sched_balance_newidle+0x22b/0x3c0
? update_load_avg+0x78/0x770
? exc_page_fault+0x6f/0x150
? asm_exc_page_fault+0x26/0x30
? __pfx_pci_conf1_write+0x10/0x10
? strlen+0x4/0x30
devm_kstrdup+0x25/0x70
brcmf_of_probe+0x273/0x350 [brcmfmac]
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c
index c1f18e2fe540..1681ad00f82e 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c
@@ -99,13 +99,13 @@ int brcmf_of_probe(struct device *dev, enum brcmf_bus_type bus_type,
/* Set board-type to the first string of the machine compatible prop */
root = of_find_node_by_path("/");
if (root && err) {
- char *board_type;
+ char *board_type = NULL;
const char *tmp;
- of_property_read_string_index(root, "compatible", 0, &tmp);
-
/* get rid of '/' in the compatible string to be able to find the FW */
- board_type = devm_kstrdup(dev, tmp, GFP_KERNEL);
+ if (!of_property_read_string_index(root, "compatible", 0, &tmp))
+ board_type = devm_kstrdup(dev, tmp, GFP_KERNEL);
+
if (!board_type) {
of_node_put(root);
return 0;
--
2.45.2
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH v2] wifi: brcmfmac: Check the return value of of_property_read_string_index
2025-01-06 17:09 [PATCH v2] wifi: brcmfmac: Check the return value of of_property_read_string_index Stefan Dösinger
@ 2025-01-07 17:45 ` Arend Van Spriel
2025-01-10 12:53 ` [v2] wifi: brcmfmac: Check the return value of of_property_read_string_index() Kalle Valo
1 sibling, 0 replies; 3+ messages in thread
From: Arend Van Spriel @ 2025-01-07 17:45 UTC (permalink / raw)
To: Stefan Dösinger, linux-wireless
On January 6, 2025 6:10:13 PM Stefan Dösinger <stefan@codeweavers.com> wrote:
> Somewhen between 6.10 and 6.11 the driver started to crash on my
> MacBookPro14,3. The property doesn't exist and 'tmp' remains
> uninitialized, so we pass a random pointer to devm_kstrdup().
Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
> Signed-off-by: Stefan Dösinger <stefan@codeweavers.com>
>
> ---
>
> v2: Don't assign err, inline of_property_read_string_index into the if
> statement.
[snip]
> ---
> drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [v2] wifi: brcmfmac: Check the return value of of_property_read_string_index()
2025-01-06 17:09 [PATCH v2] wifi: brcmfmac: Check the return value of of_property_read_string_index Stefan Dösinger
2025-01-07 17:45 ` Arend Van Spriel
@ 2025-01-10 12:53 ` Kalle Valo
1 sibling, 0 replies; 3+ messages in thread
From: Kalle Valo @ 2025-01-10 12:53 UTC (permalink / raw)
To: Stefan Dösinger; +Cc: linux-wireless, Arend van Spriel
Stefan Dösinger <stefan@codeweavers.com> wrote:
> Somewhen between 6.10 and 6.11 the driver started to crash on my
> MacBookPro14,3. The property doesn't exist and 'tmp' remains
> uninitialized, so we pass a random pointer to devm_kstrdup().
>
> The crash I am getting looks like this:
>
> BUG: unable to handle page fault for address: 00007f033c669379
> PF: supervisor read access in kernel mode
> PF: error_code(0x0001) - permissions violation
> PGD 8000000101341067 P4D 8000000101341067 PUD 101340067 PMD 1013bb067 PTE 800000010aee9025
> Oops: Oops: 0001 [#1] SMP PTI
> CPU: 4 UID: 0 PID: 827 Comm: (udev-worker) Not tainted 6.11.8-gentoo #1
> Hardware name: Apple Inc. MacBookPro14,3/Mac-551B86E5744E2388, BIOS 529.140.2.0.0 06/23/2024
> RIP: 0010:strlen+0x4/0x30
> Code: f7 75 ec 31 c0 c3 cc cc cc cc 48 89 f8 c3 cc cc cc cc 0f 1f 40 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 f3 0f 1e fa <80> 3f 00 74 14 48 89 f8 48 83 c0 01 80 38 00 75 f7 48 29 f8 c3 cc
> RSP: 0018:ffffb4aac0683ad8 EFLAGS: 00010202
> RAX: 00000000ffffffea RBX: 00007f033c669379 RCX: 0000000000000001
> RDX: 0000000000000cc0 RSI: 00007f033c669379 RDI: 00007f033c669379
> RBP: 00000000ffffffea R08: 0000000000000000 R09: 00000000c0ba916a
> R10: ffffffffffffffff R11: ffffffffb61ea260 R12: ffff91f7815b50c8
> R13: 0000000000000cc0 R14: ffff91fafefffe30 R15: ffffb4aac0683b30
> FS: 00007f033ccbe8c0(0000) GS:ffff91faeed00000(0000) knlGS:0000000000000000
> CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> CR2: 00007f033c669379 CR3: 0000000107b1e004 CR4: 00000000003706f0
> DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
> Call Trace:
> <TASK>
> ? __die+0x23/0x70
> ? page_fault_oops+0x149/0x4c0
> ? raw_spin_rq_lock_nested+0xe/0x20
> ? sched_balance_newidle+0x22b/0x3c0
> ? update_load_avg+0x78/0x770
> ? exc_page_fault+0x6f/0x150
> ? asm_exc_page_fault+0x26/0x30
> ? __pfx_pci_conf1_write+0x10/0x10
> ? strlen+0x4/0x30
> devm_kstrdup+0x25/0x70
> brcmf_of_probe+0x273/0x350 [brcmfmac]
>
> Signed-off-by: Stefan Dösinger <stefan@codeweavers.com>
> Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
Patch applied to wireless-next.git, thanks.
082d9e263af8 wifi: brcmfmac: Check the return value of of_property_read_string_index()
--
https://patchwork.kernel.org/project/linux-wireless/patch/20250106170958.3595-1-stefan@codeweavers.com/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-01-10 12:53 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-01-06 17:09 [PATCH v2] wifi: brcmfmac: Check the return value of of_property_read_string_index Stefan Dösinger
2025-01-07 17:45 ` Arend Van Spriel
2025-01-10 12:53 ` [v2] wifi: brcmfmac: Check the return value of of_property_read_string_index() 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).