[PATCH mt76] wifi: mt76: npu: Rely on rcu_dereference_protected() in mt76_npu_setup_tc_block_cb()
Lorenzo Bianconi
lorenzo at kernel.org
Sun Nov 23 07:57:19 PST 2025
Fix the following sparse warning in mt76_npu_setup_tc_block_cb routine
running rcu_dereference_protected() to get ppe_dev pointer.
drivers/net/wireless/mediatek/mt76/npu.c:314:63: warning: incorrect type in argument 1 (different address spaces)
drivers/net/wireless/mediatek/mt76/npu.c:314:63: expected struct airoha_ppe_dev *dev
drivers/net/wireless/mediatek/mt76/npu.c:314:63: got struct airoha_ppe_dev [noderef] __rcu *ppe_dev
Fixes: 62f1347fa5bf6 ("wifi: mt76: Introduce the NPU generic layer")
Signed-off-by: Lorenzo Bianconi <lorenzo at kernel.org>
---
drivers/net/wireless/mediatek/mt76/npu.c | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/drivers/net/wireless/mediatek/mt76/npu.c b/drivers/net/wireless/mediatek/mt76/npu.c
index df5cecd05f50366397a25f14092702513049c5d6..ec36975f6dc946f5dbc5ab6029b0574fbc602615 100644
--- a/drivers/net/wireless/mediatek/mt76/npu.c
+++ b/drivers/net/wireless/mediatek/mt76/npu.c
@@ -304,15 +304,22 @@ static int mt76_npu_setup_tc_block_cb(enum tc_setup_type type,
void *type_data, void *cb_priv)
{
struct mt76_phy *phy = cb_priv;
+ struct mt76_dev *dev = phy->dev;
+ struct airoha_ppe_dev *ppe_dev;
+ int err = -EOPNOTSUPP;
if (type != TC_SETUP_CLSFLOWER)
return -EOPNOTSUPP;
- if (!mt76_ppe_device_active(phy->dev))
- return -EOPNOTSUPP;
+ mutex_lock(&dev->mutex);
+
+ ppe_dev = rcu_dereference_protected(dev->mmio.ppe_dev, &dev->mutex);
+ if (ppe_dev)
+ err = airoha_ppe_dev_setup_tc_block_cb(ppe_dev, type_data);
+
+ mutex_unlock(&dev->mutex);
- return airoha_ppe_dev_setup_tc_block_cb(phy->dev->mmio.ppe_dev,
- type_data);
+ return err;
}
static int mt76_npu_setup_tc_block(struct mt76_phy *phy,
---
base-commit: e1ed98b1836e2bf0aba98f9790be4f3c6bca9d0d
change-id: 20251123-fix-airoha_ppe_dev-sparse-warning-66c62fdb7f72
Best regards,
--
Lorenzo Bianconi <lorenzo at kernel.org>
More information about the linux-arm-kernel
mailing list