diff options
| author | Felix Fietkau <nbd@nbd.name> | 2025-07-07 17:47:01 +0200 |
|---|---|---|
| committer | Felix Fietkau <nbd@nbd.name> | 2025-07-07 18:02:26 +0200 |
| commit | dc66a129adf1f25e944d0b93cd2df2ee0f0bd4d6 (patch) | |
| tree | 69ba02f6fb12267db71666ed61b86f5ea81fd2ae /drivers/net/wireless/mediatek/mt76/mt76.h | |
| parent | 7035a082348acf1d43ffb9ff735899f8e3863f8f (diff) | |
| download | lwn-dc66a129adf1f25e944d0b93cd2df2ee0f0bd4d6.tar.gz lwn-dc66a129adf1f25e944d0b93cd2df2ee0f0bd4d6.zip | |
wifi: mt76: add a wrapper for wcid access with validation
Several places use rcu_dereference to get a wcid entry without validating
if the index exceeds the array boundary. Fix this by using a helper function,
which handles validation.
Link: https://patch.msgid.link/20250707154702.1726-1-nbd@nbd.name
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'drivers/net/wireless/mediatek/mt76/mt76.h')
| -rw-r--r-- | drivers/net/wireless/mediatek/mt76/mt76.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/net/wireless/mediatek/mt76/mt76.h b/drivers/net/wireless/mediatek/mt76/mt76.h index 5f8d81cda6cd..74b75035d361 100644 --- a/drivers/net/wireless/mediatek/mt76/mt76.h +++ b/drivers/net/wireless/mediatek/mt76/mt76.h @@ -1224,6 +1224,16 @@ static inline int mt76_wed_dma_setup(struct mt76_dev *dev, struct mt76_queue *q, #define mt76_dereference(p, dev) \ rcu_dereference_protected(p, lockdep_is_held(&(dev)->mutex)) +static inline struct mt76_wcid * +__mt76_wcid_ptr(struct mt76_dev *dev, u16 idx) +{ + if (idx >= ARRAY_SIZE(dev->wcid)) + return NULL; + return rcu_dereference(dev->wcid[idx]); +} + +#define mt76_wcid_ptr(dev, idx) __mt76_wcid_ptr(&(dev)->mt76, idx) + struct mt76_dev *mt76_alloc_device(struct device *pdev, unsigned int size, const struct ieee80211_ops *ops, const struct mt76_driver_ops *drv_ops); |
