OSDN Git Service

script/sorttable: Fix some initialization problems
authorYinan Liu <yinan@linux.alibaba.com>
Tue, 18 Jan 2022 06:52:41 +0000 (14:52 +0800)
committerSteven Rostedt <rostedt@goodmis.org>
Tue, 18 Jan 2022 15:17:18 +0000 (10:17 -0500)
elf_mcount_loc and mcount_sort_thread definitions are not
initialized immediately within the function, which can cause
the judgment logic to use uninitialized values when the
initialization logic of subsequent code fails.

Link: https://lkml.kernel.org/r/20211212113358.34208-2-yinan@linux.alibaba.com
Link: https://lkml.kernel.org/r/20220118065241.42364-1-yinan@linux.alibaba.com
Fixes: 72b3942a173c ("scripts: ftrace - move the sort-processing in ftrace_init")
Tested-by: Nathan Chancellor <nathan@kernel.org>
Reviewed-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Yinan Liu <yinan@linux.alibaba.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
scripts/sorttable.h

index 1e8b779..deb7c1d 100644 (file)
@@ -199,6 +199,8 @@ static int compare_extable(const void *a, const void *b)
        return 0;
 }
 #ifdef MCOUNT_SORT_ENABLED
+pthread_t mcount_sort_thread;
+
 struct elf_mcount_loc {
        Elf_Ehdr *ehdr;
        Elf_Shdr *init_data_sec;
@@ -282,10 +284,9 @@ static int do_sort(Elf_Ehdr *ehdr,
        unsigned int shnum;
        unsigned int shstrndx;
 #ifdef MCOUNT_SORT_ENABLED
-       struct elf_mcount_loc mstruct;
+       struct elf_mcount_loc mstruct = {0};
        uint_t _start_mcount_loc = 0;
        uint_t _stop_mcount_loc = 0;
-       pthread_t mcount_sort_thread;
 #endif
 #if defined(SORTTABLE_64) && defined(UNWINDER_ORC_ENABLED)
        unsigned int orc_ip_size = 0;