include/linux/soc/mediatek/mtk_wed.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
From: Johannes Berg <johannes.berg@intel.com>
There are some sparse warnings in wifi, and it seems that
it's actually possible to annotate a function pointer with
__releases(), making the sparse warnings go away. In a way
that also serves as documentation that rcu_read_unlock()
must be called in the attach method, so add that annotation.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
include/linux/soc/mediatek/mtk_wed.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/linux/soc/mediatek/mtk_wed.h b/include/linux/soc/mediatek/mtk_wed.h
index a476648858a6..d8949a4ed0dc 100644
--- a/include/linux/soc/mediatek/mtk_wed.h
+++ b/include/linux/soc/mediatek/mtk_wed.h
@@ -192,7 +192,7 @@ struct mtk_wed_device {
};
struct mtk_wed_ops {
- int (*attach)(struct mtk_wed_device *dev);
+ int (*attach)(struct mtk_wed_device *dev) __releases(RCU);
int (*tx_ring_setup)(struct mtk_wed_device *dev, int ring,
void __iomem *regs, bool reset);
int (*rx_ring_setup)(struct mtk_wed_device *dev, int ring,
--
2.49.0
On Wed, Apr 23, 2025 at 05:08:08PM +0200, Johannes Berg wrote: > From: Johannes Berg <johannes.berg@intel.com> > > There are some sparse warnings in wifi, and it seems that > it's actually possible to annotate a function pointer with > __releases(), making the sparse warnings go away. In a way > that also serves as documentation that rcu_read_unlock() > must be called in the attach method, so add that annotation. > > Signed-off-by: Johannes Berg <johannes.berg@intel.com> Reviewed-by: Simon Horman <horms@kernel.org> Thinking out loud: * Without this patch I see the following, but with this patch I do not. .../mt7915/mmio.c:636:5: warning: context imbalance in 'mt7915_mmio_wed_init' - wrong count at exit .../mt7996/mmio.c:302:5: warning: context imbalance in 'mt7996_mmio_wed_init' - wrong count at exit * The only implementation of this callback I found is mtk_wed_attach which is already annotated as __releases(RCU); * The only caller of this callback I could find is mtk_wed_device_attach() which takes rcu_read_unlock(). And the the callback needs to release it to avoid imbalance.
On Fri, 2025-04-25 at 11:20 +0100, Simon Horman wrote: > On Wed, Apr 23, 2025 at 05:08:08PM +0200, Johannes Berg wrote: > > From: Johannes Berg <johannes.berg@intel.com> > > > > There are some sparse warnings in wifi, and it seems that > > it's actually possible to annotate a function pointer with > > __releases(), making the sparse warnings go away. In a way > > that also serves as documentation that rcu_read_unlock() > > must be called in the attach method, so add that annotation. > > > > Signed-off-by: Johannes Berg <johannes.berg@intel.com> > > Reviewed-by: Simon Horman <horms@kernel.org> Thanks :) Looks like Jakub already applied it, FWIW. > Thinking out loud: > > * Without this patch I see the following, but with this patch I do not. > > .../mt7915/mmio.c:636:5: warning: context imbalance in 'mt7915_mmio_wed_init' - wrong count at exit > .../mt7996/mmio.c:302:5: warning: context imbalance in 'mt7996_mmio_wed_init' - wrong count at exit Right, that's what I was trying to get rid of. > * The only implementation of this callback I found is mtk_wed_attach > which is already annotated as __releases(RCU); Indeed, but sparse doesn't check that for function pointer compatibility. > * The only caller of this callback I could find is mtk_wed_device_attach() > which takes rcu_read_unlock(). And the the callback needs to release it > to avoid imbalance. > Right, pretty sure that's all intentional (though I don't understand it), hence this change to document it a bit better and get rid of the warnings. johannes
© 2016 - 2025 Red Hat, Inc.