Re: [PATCH 3/3] static_call: Fix static_call_update() sanity check

From: Peter Zijlstra
Date: Mon Mar 22 2021 - 10:08:33 EST


On Mon, Mar 22, 2021 at 02:07:54PM +0100, Jessica Yu wrote:
> +++ Steven Rostedt [19/03/21 14:00 -0400]:
> > On Fri, 19 Mar 2021 13:57:38 +0100
> > Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:
> >
> > > Jessica, can you explain how !MODULE_UNLOAD is supposed to work?
> > > Alternatives, jump_labels and static_call all can have relocations into
> > > __exit code. Not loading it at all would be BAD.
> >
> > According to the description:
> >
> > " Without this option you will not be able to unload any
> > modules (note that some modules may not be unloadable anyway), which
> > makes your kernel smaller, faster and simpler.
> > If unsure, say Y."
> >
> > Seems there's no reason to load the "exit" portion, as that's what makes it
> > "smaller".
>
> Exactly. If you disable MODULE_UNLOAD, then you don't intend to ever
> unload any modules, and so you'll never end up calling the module's
> cleanup/exit function. That code would basically be never used, so
> that's why it's not loaded in the first place.

As explained, that's broken. Has always been for as long as we've had
alternatives.