2021-04-28 14:51:36

by Jessica Yu

[permalink] [raw]
Subject: [GIT PULL] Modules updates for v5.13

Hi Linus,

Please pull below to receive modules updates for the v5.13 merge window.
A summary can be found in the signed tag.

Thank you,

Jessica

--
The following changes since commit 1e28eed17697bcf343c6743f0028cc3b5dd88bf0:

Linux 5.12-rc3 (2021-03-14 14:41:02 -0700)

are available in the Git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/jeyu/linux.git tags/modules-for-v5.13

for you to fetch changes up to 33121347fb1c359bd6e3e680b9f2c6ced5734a81:

module: treat exit sections the same as init sections when !CONFIG_MODULE_UNLOAD (2021-03-29 13:08:53 +0200)

----------------------------------------------------------------
Modules updates for v5.13

Summary of modules changes for the 5.13 merge window:

- Fix an age old bug involving jump_calls and static_labels when
CONFIG_MODULE_UNLOAD=n. When CONFIG_MODULE_UNLOAD=n, it means you
can't unload modules, so normally the __exit sections of a module are
not loaded at all. However, dynamic code patching (jump_label,
static_call, alternatives) can have sites in __exit sections even if
__exit is never executed.

Reported by Peter Zijlstra: "Alternatives, jump_labels and static_call
all can have relocations into __exit code. Not loading it at all would
be BAD." Therefore, load the __exit sections even when
CONFIG_MODULE_UNLOAD=n, and discard them after init.

Signed-off-by: Jessica Yu <[email protected]>

----------------------------------------------------------------
Jessica Yu (1):
module: treat exit sections the same as init sections when !CONFIG_MODULE_UNLOAD

kernel/module.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)


2021-04-29 11:39:29

by Jessica Yu

[permalink] [raw]
Subject: Re: [GIT PULL] Modules updates for v5.13

+++ Jessica Yu [28/04/21 14:58 +0200]:
>Hi Linus,
>
>Please pull below to receive modules updates for the v5.13 merge window.
>A summary can be found in the signed tag.
>
>Thank you,
>
>Jessica

Ugh, I had forgotten to sign the tag. Should be fixed now, sorry about that.

>--
>The following changes since commit 1e28eed17697bcf343c6743f0028cc3b5dd88bf0:
>
> Linux 5.12-rc3 (2021-03-14 14:41:02 -0700)
>
>are available in the Git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/jeyu/linux.git tags/modules-for-v5.13
>
>for you to fetch changes up to 33121347fb1c359bd6e3e680b9f2c6ced5734a81:
>
> module: treat exit sections the same as init sections when !CONFIG_MODULE_UNLOAD (2021-03-29 13:08:53 +0200)
>
>----------------------------------------------------------------
>Modules updates for v5.13
>
>Summary of modules changes for the 5.13 merge window:
>
>- Fix an age old bug involving jump_calls and static_labels when
> CONFIG_MODULE_UNLOAD=n. When CONFIG_MODULE_UNLOAD=n, it means you
> can't unload modules, so normally the __exit sections of a module are
> not loaded at all. However, dynamic code patching (jump_label,
> static_call, alternatives) can have sites in __exit sections even if
> __exit is never executed.
>
> Reported by Peter Zijlstra: "Alternatives, jump_labels and static_call
> all can have relocations into __exit code. Not loading it at all would
> be BAD." Therefore, load the __exit sections even when
> CONFIG_MODULE_UNLOAD=n, and discard them after init.
>
>Signed-off-by: Jessica Yu <[email protected]>
>
>----------------------------------------------------------------
>Jessica Yu (1):
> module: treat exit sections the same as init sections when !CONFIG_MODULE_UNLOAD
>
> kernel/module.c | 9 ++++-----
> 1 file changed, 4 insertions(+), 5 deletions(-)

2021-04-30 19:38:22

by Linus Torvalds

[permalink] [raw]
Subject: Re: [GIT PULL] Modules updates for v5.13

On Wed, Apr 28, 2021 at 5:58 AM Jessica Yu <[email protected]> wrote:
>
> Therefore, load the __exit sections even when
> CONFIG_MODULE_UNLOAD=n, and discard them after init.

So I've pulled this, but I have two questions based on reading the patch..

(a) Where's that "discard them after init" logic?

(b) ARM has its own module_init/exit_section() functions, and now
seems to have different logic than everybody else as a result..

but maybe I'm not reading that patch right.

Linus

2021-04-30 19:39:32

by pr-tracker-bot

[permalink] [raw]
Subject: Re: [GIT PULL] Modules updates for v5.13

The pull request you sent on Wed, 28 Apr 2021 14:58:44 +0200:

> git://git.kernel.org/pub/scm/linux/kernel/git/jeyu/linux.git tags/modules-for-v5.13

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/65c61de9d090edb8a3cfb3f45541e268eb2cdb13

Thank you!

--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html

2021-05-03 10:33:47

by Jessica Yu

[permalink] [raw]
Subject: Re: [GIT PULL] Modules updates for v5.13

+++ Linus Torvalds [30/04/21 12:37 -0700]:
>On Wed, Apr 28, 2021 at 5:58 AM Jessica Yu <[email protected]> wrote:
>>
>> Therefore, load the __exit sections even when
>> CONFIG_MODULE_UNLOAD=n, and discard them after init.

Hi Linus,

>So I've pulled this, but I have two questions based on reading the patch..
>
> (a) Where's that "discard them after init" logic?

So the idea is for the exit sections to additionally identify as init
sections via module_init_section() when CONFIG_MODULE_UNLOAD=n, so
that the existing logic in layout_sections() picks this up and puts
the exit sections into the init area of the module (mod->init_layout.base).

Then, since we've placed the exit sections in the init region of the
module, they will automatically get freed at the end of
do_init_module() with the rest of the init sections. Peter has also
mentioned that jump_label and static_call want the exit sections to
also identify as init via within_module_init(), so this change should
satisfy their requirement as well. I should have explained this more
in the changelog and apologize that it wasn't clear.

> (b) ARM has its own module_init/exit_section() functions, and now
>seems to have different logic than everybody else as a result..

No, you are right, I had forgotten that ARM is a special case :-( I
will add a similar hunk for ARM and submit that for the next -rc so
that all arches are on the same page here.


Jessica