History

modpost: fix null pointer dereference

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

Max Kellermann committed 2 years ago

Commit 23dfd911 parent 44929bf1 file · +3 −1Browse files

Showing the changes to scripts (1 of 1 file). Show all

Unified · Split

scripts/mod/modpost.c+3−1
@@ -1050,7 +1050,9 @@ static void default_mismatch_handler(const char *modname, struct elf_info *elf, · 1049 unmodified lines
1050 sec_mismatch_count++;1050 sec_mismatch_count++;
1051 1051
1052 warn("%s: section mismatch in reference: %s+0x%x (section: %s) -> %s (section: %s)\n",1052 warn("%s: section mismatch in reference: %s+0x%x (section: %s) -> %s (section: %s)\n",
1053 modname, fromsym, (unsigned int)(faddr - from->st_value), fromsec, tosym, tosec);1053 modname, fromsym,
1054 (unsigned int)(faddr - (from ? from->st_value : 0)),
1055 fromsec, tosym, tosec);
1054 1056
1055 if (mismatch->mismatch == EXTABLE_TO_NON_TEXT) {1057 if (mismatch->mismatch == EXTABLE_TO_NON_TEXT) {
1056 if (match(tosec, mismatch->bad_tosec))1058 if (match(tosec, mismatch->bad_tosec))