lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <202207211650.VwbgQSZR-lkp@intel.com>
Date:   Thu, 21 Jul 2022 16:59:33 +0800
From:   kernel test robot <lkp@...el.com>
To:     Thomas Gleixner <tglx@...utronix.de>
Cc:     llvm@...ts.linux.dev, kbuild-all@...ts.01.org,
        Ammar Faizi <ammarfaizi2@...weeb.org>,
        GNU/Weeb Mailing List <gwml@...r.gnuweeb.org>,
        linux-kernel@...r.kernel.org
Subject: [ammarfaizi2-block:tglx/devel/depthtracking 45/45]
 arch/x86/kernel/callthunks.c:419:11: warning: variable 'nthunks' set but not
 used

tree:   https://github.com/ammarfaizi2/linux-block tglx/devel/depthtracking
head:   714d29e3e7e3faac27142424ae2533163ddd3a46
commit: 714d29e3e7e3faac27142424ae2533163ddd3a46 [45/45] x06/callthunks: Put thunks into compiler provided padding area
config: x86_64-randconfig-a005 (https://download.01.org/0day-ci/archive/20220721/202207211650.VwbgQSZR-lkp@intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 0c1b32717bcffcf8edf95294e98933bd4c1e76ed)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/ammarfaizi2/linux-block/commit/714d29e3e7e3faac27142424ae2533163ddd3a46
        git remote add ammarfaizi2-block https://github.com/ammarfaizi2/linux-block
        git fetch --no-tags ammarfaizi2-block tglx/devel/depthtracking
        git checkout 714d29e3e7e3faac27142424ae2533163ddd3a46
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash arch/x86/kernel/

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@...el.com>

All warnings (new ones prefixed by >>):

>> arch/x86/kernel/callthunks.c:419:11: warning: variable 'nthunks' set but not used [-Wunused-but-set-variable]
           int gap, nthunks = 0, idx = 0, padsize;
                    ^
>> arch/x86/kernel/callthunks.c:416:5: warning: no previous prototype for function 'setup_padding_thunks' [-Wmissing-prototypes]
   int setup_padding_thunks(s32 *start, s32 *end, struct thunk_mem_area *area,
       ^
   arch/x86/kernel/callthunks.c:416:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   int setup_padding_thunks(s32 *start, s32 *end, struct thunk_mem_area *area,
   ^
   static 
   arch/x86/kernel/callthunks.c:547:7: warning: variable 'ret' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
                   if (!vbuf)
                       ^~~~~
   arch/x86/kernel/callthunks.c:613:9: note: uninitialized use occurs here
           return ret;
                  ^~~
   arch/x86/kernel/callthunks.c:547:3: note: remove the 'if' if its condition is always false
                   if (!vbuf)
                   ^~~~~~~~~~
   arch/x86/kernel/callthunks.c:512:9: note: initialize the variable 'ret' to silence this warning
           int ret, text_size, size;
                  ^
                   = 0
   3 warnings generated.


vim +/nthunks +419 arch/x86/kernel/callthunks.c

   415	
 > 416	int setup_padding_thunks(s32 *start, s32 *end, struct thunk_mem_area *area,
   417				 struct module_layout *layout)
   418	{
 > 419		int gap, nthunks = 0, idx = 0, padsize;
   420		s32 *s;
   421	
   422		padsize = 1 << CONFIG_FUNCTION_PADDING_ORDER;
   423		if (callthunk_desc.template_size > padsize)
   424			return 0;
   425	
   426		gap = padsize - callthunk_desc.template_size;
   427	
   428		for (s = start; s < end; s++) {
   429			void *thunk, *tp, *dest = (void *)s + *s;
   430			unsigned long key = (unsigned long)dest;
   431			int fail, i;
   432			u8 opcode;
   433	
   434			if (is_inittext(layout, dest)) {
   435				prdbg("Ignoring init dest: %pS %px\n", dest, dest);
   436				continue;
   437			}
   438	
   439			/* Multiple symbols can have the same location. */
   440			if (btree_lookup64(&call_thunks, key)) {
   441				prdbg("Ignoring duplicate dest: %pS %px\n", dest, dest);
   442				continue;
   443			}
   444	
   445			thunk = tp = dest - 16;
   446			prdbg("Probing dest: %pS %px at %px\n", dest, dest, tp);
   447			pagefault_disable();
   448			fail = 0;
   449			for (i = 0; !fail && i < 16; i++) {
   450				if (get_kernel_nofault(opcode, tp + i)) {
   451					fail = 1;
   452				} else if (opcode != 0xcc) {
   453					fail = 2;
   454				}
   455			}
   456			pagefault_enable();
   457			switch (fail) {
   458			case 1:
   459				prdbg("Faulted for dest: %pS %px\n", dest, dest);
   460				nthunks++;
   461				continue;
   462			case 2:
   463				prdbg("No padding for dest: %pS %px\n", dest, dest);
   464				nthunks++;
   465				continue;
   466			}
   467	
   468			prdbg("Thunk for dest: %pS %px at %px\n", dest, dest, tp);
   469			memcpy(tp, callthunk_desc.template, callthunk_desc.template_size);
   470			tp += callthunk_desc.template_size;
   471	
   472			switch (gap) {
   473			case 0: break;
   474			case 1:
   475			case 2:
   476			case 3:
   477			case 4:
   478			case 5:
   479			case 6:
   480			case 7:
   481			case 8:
   482				memcpy(tp, x86_nops[gap], gap);
   483				break;
   484			default:
   485				__text_gen_insn(tp, JMP32_INSN_OPCODE, tp, dest,
   486						JMP32_INSN_SIZE);
   487				tp += JMP32_INSN_SIZE;
   488				*(u8*)tp = 0xcc;
   489				break;
   490			}
   491	
   492			if (area->dests) {
   493				prdbg("Insert %px at index %d\n", dest, idx);
   494				area->dests[idx++] = key;
   495			}
   496	
   497			fail = btree_insert64(&call_thunks, key, (void *)thunk, GFP_KERNEL);
   498			if (fail)
   499				return fail;
   500	
   501			area->nthunks++;
   502		}
   503		return 0;
   504	}
   505	

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ