From: Catalin Marinas <catalin.marinas@arm.com>
To: James Morse <james.morse@arm.com>
Cc: linux-modules@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
Luis Chamberlain <mcgrof@kernel.org>,
Will Deacon <will@kernel.org>,
Russell King <linux@armlinux.org.uk>,
Russell King <rmk+kernel@armlinux.org.uk>,
Jessica Yu <jeyu@kernel.org>,
Adam Johnston <adam.johnston@arm.com>
Subject: Re: [PATCH 2/3] arm64: module: Use module_init_layout_section() to spot init sections
Date: Wed, 2 Aug 2023 18:00:40 +0100 [thread overview]
Message-ID: <ZMqLuE9jSPi+RbGd@arm.com> (raw)
In-Reply-To: <20230801145409.8935-3-james.morse@arm.com>
On Tue, Aug 01, 2023 at 02:54:08PM +0000, James Morse wrote:
> Today module_frob_arch_sections() spots init sections from their
> 'init' prefix, and uses this to keep the init PLTs separate from the rest.
>
> module_emit_plt_entry() uses within_module_init() to determine if a
> location is in the init text or not, but this depends on whether
> core code thought this was an init section.
>
> Naturally the logic is different.
>
> module_init_layout_section() groups the init and exit text together if
> module unloading is disabled, as the exit code will never run. The result
> is kernels with this configuration can't load all their modules because
> there are not enough PLTs for the combined init+exit section.
>
> This results in the following:
> | WARNING: CPU: 2 PID: 51 at arch/arm64/kernel/module-plts.c:99 module_emit_plt_entry+0x184/0x1cc
> | Modules linked in: crct10dif_common
> | CPU: 2 PID: 51 Comm: modprobe Not tainted 6.5.0-rc4-yocto-standard-dirty #15208
> | Hardware name: QEMU KVM Virtual Machine, BIOS 0.0.0 02/06/2015
> | pstate: 20400005 (nzCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
> | pc : module_emit_plt_entry+0x184/0x1cc
> | lr : module_emit_plt_entry+0x94/0x1cc
> | sp : ffffffc0803bba60
> [...]
> | Call trace:
> | module_emit_plt_entry+0x184/0x1cc
> | apply_relocate_add+0x2bc/0x8e4
> | load_module+0xe34/0x1bd4
> | init_module_from_file+0x84/0xc0
> | __arm64_sys_finit_module+0x1b8/0x27c
> | invoke_syscall.constprop.0+0x5c/0x104
> | do_el0_svc+0x58/0x160
> | el0_svc+0x38/0x110
> | el0t_64_sync_handler+0xc0/0xc4
> | el0t_64_sync+0x190/0x194
>
> A previous patch exposed module_init_layout_section(), use that so the
> logic is the same.
>
> Reported-by: Adam Johnston <adam.johnston@arm.com>
> Tested-by: Adam Johnston <adam.johnston@arm.com>
> Fixes: 055f23b74b20 ("module: check for exit sections in layout_sections() instead of module_init_section()")
> Cc: <stable@vger.kernel.org> # 5.15.x: 60a0aab7463ee69 arm64: module-plts: inline linux/moduleloader.h
> Cc: <stable@vger.kernel.org> # 5.15.x
> Signed-off-by: James Morse <james.morse@arm.com>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
next prev parent reply other threads:[~2023-08-02 17:00 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-01 14:54 [PATCH 0/3] ARM/arm64: Fix loading of modules with an exit section James Morse
2023-08-01 14:54 ` [PATCH 1/3] module: Expose module_init_layout_section() James Morse
2023-08-01 14:54 ` [PATCH 2/3] arm64: module: Use module_init_layout_section() to spot init sections James Morse
2023-08-02 17:00 ` Catalin Marinas [this message]
2023-08-01 14:54 ` [PATCH 3/3] ARM: " James Morse
2023-08-01 17:14 ` [PATCH 0/3] ARM/arm64: Fix loading of modules with an exit section Luis Chamberlain
2023-08-02 16:28 ` James Morse
2023-08-03 10:20 ` Russell King (Oracle)
2023-08-03 20:43 ` Luis Chamberlain
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZMqLuE9jSPi+RbGd@arm.com \
--to=catalin.marinas@arm.com \
--cc=adam.johnston@arm.com \
--cc=james.morse@arm.com \
--cc=jeyu@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-modules@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=mcgrof@kernel.org \
--cc=rmk+kernel@armlinux.org.uk \
--cc=will@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).