Re: [PATCH 2/3] net: xfrm: unexport __init-annotated xfrm4_protocol_init()

From: Steffen Klassert
Date: Wed Jun 08 2022 - 03:16:05 EST


On Tue, Jun 07, 2022 at 01:18:32PM +0200, Paolo Abeni wrote:
> On Mon, 2022-06-06 at 13:53 +0900, Masahiro Yamada wrote:
> > EXPORT_SYMBOL and __init is a bad combination because the .init.text
> > section is freed up after the initialization. Hence, modules cannot
> > use symbols annotated __init. The access to a freed symbol may end up
> > with kernel panic.
> >
> > modpost used to detect it, but it has been broken for a decade.
> >
> > Recently, I fixed modpost so it started to warn it again, then this
> > showed up in linux-next builds.
> >
> > There are two ways to fix it:
> >
> > - Remove __init
> > - Remove EXPORT_SYMBOL
> >
> > I chose the latter for this case because the only in-tree call-site,
> > net/ipv4/xfrm4_policy.c is never compiled as modular.
> > (CONFIG_XFRM is boolean)
> >
> > Fixes: 2f32b51b609f ("xfrm: Introduce xfrm_input_afinfo to access the the callbacks properly")
> > Reported-by: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx>
> > Signed-off-by: Masahiro Yamada <masahiroy@xxxxxxxxxx>
>
> @Steffen: are you ok if we take this one in the -net tree directly?
> Otherwise a repost would probably be the better option, with this patch
> stand-alone targeting the ipsec tree and the other 2 targeting -net.

Yes, just take it.

Acked-by: Steffen Klassert <steffen.klassert@xxxxxxxxxxx>

Thanks!