| From da560e97a94a217794269bf19731d6a2c9340d5b Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 15 Feb 2024 15:13:21 +0100 |
| Subject: modpost: fix null pointer dereference |
| |
| From: Max Kellermann <max.kellermann@ionos.com> |
| |
| [ Upstream commit 23dfd914d2bfc4c9938b0084dffd7105de231d98 ] |
| |
| If the find_fromsym() call fails and returns NULL, the warn() call |
| will dereference this NULL pointer and cause the program to crash. |
| |
| This happened when I tried to build with "test_user_copy" module. |
| With this fix, it prints lots of warnings like this: |
| |
| WARNING: modpost: lib/test_user_copy: section mismatch in reference: (unknown)+0x4 (section: .text.fixup) -> (unknown) (section: .init.text) |
| |
| masahiroy@kernel.org: |
| The issue is reproduced with ARCH=arm allnoconfig + CONFIG_MODULES=y + |
| CONFIG_RUNTIME_TESTING_MENU=y + CONFIG_TEST_USER_COPY=m |
| |
| Signed-off-by: Max Kellermann <max.kellermann@ionos.com> |
| Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| scripts/mod/modpost.c | 4 +++- |
| 1 file changed, 3 insertions(+), 1 deletion(-) |
| |
| diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c |
| index 6568f8177e392..ce686ebf5591f 100644 |
| --- a/scripts/mod/modpost.c |
| +++ b/scripts/mod/modpost.c |
| @@ -1053,7 +1053,9 @@ static void default_mismatch_handler(const char *modname, struct elf_info *elf, |
| sec_mismatch_count++; |
| |
| warn("%s: section mismatch in reference: %s+0x%x (section: %s) -> %s (section: %s)\n", |
| - modname, fromsym, (unsigned int)(faddr - from->st_value), fromsec, tosym, tosec); |
| + modname, fromsym, |
| + (unsigned int)(faddr - (from ? from->st_value : 0)), |
| + fromsec, tosym, tosec); |
| |
| if (mismatch->mismatch == EXTABLE_TO_NON_TEXT) { |
| if (match(tosec, mismatch->bad_tosec)) |
| -- |
| 2.43.0 |
| |