Re: [PATCH net-next] net: ethernet: mtk_wed: annotate RCU release in attach()
From: Johannes Berg
Date: Fri Apr 25 2025 - 06:23:01 EST
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@xxxxxxxxx>
> >
> > 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@xxxxxxxxx>
>
> Reviewed-by: Simon Horman <horms@xxxxxxxxxx>
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