From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============4280041895008911008==" MIME-Version: 1.0 From: kernel test robot To: kbuild-all@lists.01.org Subject: Re: [RFC PATCH v3 09/13] module: Move kallsyms support into a separate file Date: Sat, 29 Jan 2022 14:52:39 +0800 Message-ID: <202201291433.XLcEC5fB-lkp@intel.com> In-Reply-To: <20220128203934.600247-10-atomlin@redhat.com> List-Id: --===============4280041895008911008== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi Aaron, [FYI, it's a private test report for your RFC patch.] [auto build test WARNING on a97ac8cb24a3c3ad74794adb83717ef1605d1b47] url: https://github.com/0day-ci/linux/commits/Aaron-Tomlin/module-core-c= ode-clean-up/20220129-044218 base: a97ac8cb24a3c3ad74794adb83717ef1605d1b47 config: arc-randconfig-s032-20220124 (https://download.01.org/0day-ci/archi= ve/20220129/202201291433.XLcEC5fB-lkp(a)intel.com/config) compiler: arceb-elf-gcc (GCC) 11.2.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/= make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # apt-get install sparse # sparse version: v0.6.4-dirty # https://github.com/0day-ci/linux/commit/fd6ae2d3fa439baa614e32c58= b4c2f0dd0faa186 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Aaron-Tomlin/module-core-code-clea= n-up/20220129-044218 git checkout fd6ae2d3fa439baa614e32c58b4c2f0dd0faa186 # save the config file to linux build tree mkdir build_dir COMPILER_INSTALL_PATH=3D$HOME/0day COMPILER=3Dgcc-11.2.0 make.cross= C=3D1 CF=3D'-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=3Dbuild_dir ARCH=3Da= rc SHELL=3D/bin/bash If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot sparse warnings: (new ones prefixed by >>) kernel/module/kallsyms.c: note: in included file: include/linux/module.h:386:3: sparse: sparse: symbol 'mod_tree' was not = declared. Should it be static? >> kernel/module/kallsyms.c:174:23: sparse: sparse: incorrect type in assig= nment (different address spaces) @@ expected struct mod_kallsyms [noder= ef] __rcu *kallsyms @@ got void * @@ kernel/module/kallsyms.c:174:23: sparse: expected struct mod_kallsym= s [noderef] __rcu *kallsyms kernel/module/kallsyms.c:174:23: sparse: got void * >> kernel/module/kallsyms.c:176:12: sparse: sparse: dereference of noderef = expression kernel/module/kallsyms.c:177:12: sparse: sparse: dereference of noderef = expression kernel/module/kallsyms.c:179:12: sparse: sparse: dereference of noderef = expression kernel/module/kallsyms.c:180:12: sparse: sparse: dereference of noderef = expression kernel/module/kallsyms.c:189:18: sparse: sparse: dereference of noderef = expression kernel/module/kallsyms.c:190:35: sparse: sparse: dereference of noderef = expression kernel/module/kallsyms.c:191:20: sparse: sparse: dereference of noderef = expression kernel/module/kallsyms.c:196:32: sparse: sparse: dereference of noderef = expression kernel/module/kallsyms.c:199:45: sparse: sparse: dereference of noderef = expression vim +174 kernel/module/kallsyms.c 159 = 160 /* 161 * We use the full symtab and strtab which layout_symtab arranged to 162 * be appended to the init section. Later we switch to the cut-down 163 * core-only ones. 164 */ 165 void add_kallsyms(struct module *mod, const struct load_info *info) 166 { 167 unsigned int i, ndst; 168 const Elf_Sym *src; 169 Elf_Sym *dst; 170 char *s; 171 Elf_Shdr *symsec =3D &info->sechdrs[info->index.sym]; 172 = 173 /* Set up to point into init section. */ > 174 mod->kallsyms =3D mod->init_layout.base + info->mod_kallsyms_init_o= ff; 175 = > 176 mod->kallsyms->symtab =3D (void *)symsec->sh_addr; 177 mod->kallsyms->num_symtab =3D symsec->sh_size / sizeof(Elf_Sym); 178 /* Make sure we get permanent strtab: don't use info->strtab. */ 179 mod->kallsyms->strtab =3D (void *)info->sechdrs[info->index.str].sh= _addr; 180 mod->kallsyms->typetab =3D mod->init_layout.base + info->init_typeo= ffs; 181 = 182 /* 183 * Now populate the cut down core kallsyms for after init 184 * and set types up while we still have access to sections. 185 */ 186 mod->core_kallsyms.symtab =3D dst =3D mod->core_layout.base + info-= >symoffs; 187 mod->core_kallsyms.strtab =3D s =3D mod->core_layout.base + info->s= troffs; 188 mod->core_kallsyms.typetab =3D mod->core_layout.base + info->core_t= ypeoffs; 189 src =3D mod->kallsyms->symtab; 190 for (ndst =3D i =3D 0; i < mod->kallsyms->num_symtab; i++) { 191 mod->kallsyms->typetab[i] =3D elf_type(src + i, info); 192 if (i =3D=3D 0 || is_livepatch_module(mod) || 193 is_core_symbol(src+i, info->sechdrs, info->hdr->e_shnum, 194 info->index.pcpu)) { 195 mod->core_kallsyms.typetab[ndst] =3D 196 mod->kallsyms->typetab[i]; 197 dst[ndst] =3D src[i]; 198 dst[ndst++].st_name =3D s - mod->core_kallsyms.strtab; 199 s +=3D strscpy(s, &mod->kallsyms->strtab[src[i].st_name], 200 KSYM_NAME_LEN) + 1; 201 } 202 } 203 mod->core_kallsyms.num_symtab =3D ndst; 204 } 205 = --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org --===============4280041895008911008==--