forked from coolsnowwolf/lede
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
generic: mtk_eth_soc: don't crash if WO firmware is missing
Import patch to prevent crashes in case WO firmware is missing on devices with only a single frontend (eg. MT7981+MT7976). Signed-off-by: Daniel Golle <daniel@makrotopia.org>
- Loading branch information
Showing
1 changed file
with
28 additions
and
0 deletions.
There are no files selected for viewing
28 changes: 28 additions & 0 deletions
28
...eric/backport-5.15/733-v6.4-22-net-ethernet-mtk_eth_soc-fix-NULL-pointer-dereferenc.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
From 7c83e28f10830aa5105c25eaabe890e3adac36aa Mon Sep 17 00:00:00 2001 | ||
From: Daniel Golle <daniel@makrotopia.org> | ||
Date: Tue, 9 May 2023 03:20:06 +0200 | ||
Subject: [PATCH] net: ethernet: mtk_eth_soc: fix NULL pointer dereference | ||
|
||
Check for NULL pointer to avoid kernel crashing in case of missing WO | ||
firmware in case only a single WEDv2 device has been initialized, e.g. on | ||
MT7981 which can connect just one wireless frontend. | ||
|
||
Fixes: 86ce0d09e424 ("net: ethernet: mtk_eth_soc: use WO firmware for MT7981") | ||
Signed-off-by: Daniel Golle <daniel@makrotopia.org> | ||
Reviewed-by: Simon Horman <simon.horman@corigine.com> | ||
Signed-off-by: David S. Miller <davem@davemloft.net> | ||
--- | ||
drivers/net/ethernet/mediatek/mtk_wed.c | 2 +- | ||
1 file changed, 1 insertion(+), 1 deletion(-) | ||
|
||
--- a/drivers/net/ethernet/mediatek/mtk_wed.c | ||
+++ b/drivers/net/ethernet/mediatek/mtk_wed.c | ||
@@ -647,7 +647,7 @@ __mtk_wed_detach(struct mtk_wed_device * | ||
BIT(hw->index), BIT(hw->index)); | ||
} | ||
|
||
- if (!hw_list[!hw->index]->wed_dev && | ||
+ if ((!hw_list[!hw->index] || !hw_list[!hw->index]->wed_dev) && | ||
hw->eth->dma_dev != hw->eth->dev) | ||
mtk_eth_set_dma_device(hw->eth, hw->eth->dev); | ||
|