Hi Ye, kernel test robot noticed the following build errors:
[auto build test ERROR on trace/for-next] [also build test ERROR on linus/master v6.15-rc7 next-20250523] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Ye-Bin/ftrace-fix-UAF-when-lookup-kallsym-after-ftrace-disabled/20250523-164234 base: https://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace for-next patch link: https://lore.kernel.org/r/20250523083945.3390587-3-yebin%40huaweicloud.com patch subject: [PATCH 2/2] ftrace: don't allocate ftrace module map config: s390-randconfig-001-20250524 (https://download.01.org/0day-ci/archive/20250524/202505240845.acz1ufat-...@intel.com/config) compiler: clang version 17.0.6 (https://github.com/llvm/llvm-project 6009708b4367171ccdbf4b5905cb6a803753fe18) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250524/202505240845.acz1ufat-...@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <l...@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202505240845.acz1ufat-...@intel.com/ All errors (new ones prefixed by >>): >> kernel/trace/ftrace.c:7825:37: error: incomplete definition of type 'struct >> module' 7825 | if (ftrace_disabled || (mod && !mod->num_ftrace_callsites)) { | ~~~^ include/linux/printk.h:400:8: note: forward declaration of 'struct module' 400 | struct module; | ^ 1 error generated. vim +7825 kernel/trace/ftrace.c 7806 7807 void ftrace_free_mem(struct module *mod, void *start_ptr, void *end_ptr) 7808 { 7809 unsigned long start = (unsigned long)(start_ptr); 7810 unsigned long end = (unsigned long)(end_ptr); 7811 struct ftrace_page **last_pg = &ftrace_pages_start; 7812 struct ftrace_page *tmp_page = NULL; 7813 struct ftrace_page *pg; 7814 struct dyn_ftrace *rec; 7815 struct dyn_ftrace key; 7816 struct ftrace_mod_map *mod_map = NULL; 7817 struct ftrace_init_func *func, *func_next; 7818 LIST_HEAD(clear_hash); 7819 7820 key.ip = start; 7821 key.flags = end; /* overload flags, as it is unsigned long */ 7822 7823 mutex_lock(&ftrace_lock); 7824 > 7825 if (ftrace_disabled || (mod && !mod->num_ftrace_callsites)) { 7826 mutex_unlock(&ftrace_lock); 7827 return; 7828 } 7829 7830 /* 7831 * If we are freeing module init memory, then check if 7832 * any tracer is active. If so, we need to save a mapping of 7833 * the module functions being freed with the address. 7834 */ 7835 if (mod && ftrace_ops_list != &ftrace_list_end) 7836 mod_map = allocate_ftrace_mod_map(mod, start, end); 7837 7838 for (pg = ftrace_pages_start; pg; last_pg = &pg->next, pg = *last_pg) { 7839 if (end < pg->records[0].ip || 7840 start >= (pg->records[pg->index - 1].ip + MCOUNT_INSN_SIZE)) 7841 continue; 7842 again: 7843 rec = bsearch(&key, pg->records, pg->index, 7844 sizeof(struct dyn_ftrace), 7845 ftrace_cmp_recs); 7846 if (!rec) 7847 continue; 7848 7849 /* rec will be cleared from hashes after ftrace_lock unlock */ 7850 add_to_clear_hash_list(&clear_hash, rec); 7851 7852 if (mod_map) 7853 save_ftrace_mod_rec(mod_map, rec); 7854 7855 pg->index--; 7856 ftrace_update_tot_cnt--; 7857 if (!pg->index) { 7858 *last_pg = pg->next; 7859 pg->next = tmp_page; 7860 tmp_page = pg; 7861 pg = container_of(last_pg, struct ftrace_page, next); 7862 if (!(*last_pg)) 7863 ftrace_pages = pg; 7864 continue; 7865 } 7866 memmove(rec, rec + 1, 7867 (pg->index - (rec - pg->records)) * sizeof(*rec)); 7868 /* More than one function may be in this block */ 7869 goto again; 7870 } 7871 mutex_unlock(&ftrace_lock); 7872 7873 list_for_each_entry_safe(func, func_next, &clear_hash, list) { 7874 clear_func_from_hashes(func); 7875 kfree(func); 7876 } 7877 /* Need to synchronize with ftrace_location_range() */ 7878 if (tmp_page) { 7879 synchronize_rcu(); 7880 ftrace_free_pages(tmp_page); 7881 } 7882 } 7883 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki