All of lore.kernel.org
 help / color / mirror / Atom feed
* [peterz-queue:x86/core 3/3] arch/x86/kernel/static_call.c:98 __static_call_transform() error: uninitialized symbol 'op'.
@ 2023-01-21 10:21 kernel test robot
  0 siblings, 0 replies; 4+ messages in thread
From: kernel test robot @ 2023-01-21 10:21 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: Peter Zijlstra <peterz@infradead.org>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git x86/core
head:   700f4c6d925823018a2d09f92de5405065d2ffec
commit: 700f4c6d925823018a2d09f92de5405065d2ffec [3/3] x86/static_call: Add support for Jcc tail-calls
:::::: branch date: 11 hours ago
:::::: commit date: 11 hours ago
config: i386-randconfig-m021 (https://download.01.org/0day-ci/archive/20230121/202301211834.noGVyk06-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-8) 11.3.0

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>

smatch warnings:
arch/x86/kernel/static_call.c:98 __static_call_transform() error: uninitialized symbol 'op'.

vim +/op +98 arch/x86/kernel/static_call.c

700f4c6d925823 Peter Zijlstra  2023-01-20   43  
700f4c6d925823 Peter Zijlstra  2023-01-20   44  asm (".global __static_call_return\n\t"
700f4c6d925823 Peter Zijlstra  2023-01-20   45       ".type __static_call_return, @function\n\t"
700f4c6d925823 Peter Zijlstra  2023-01-20   46       ASM_FUNC_ALIGN "\n\t"
700f4c6d925823 Peter Zijlstra  2023-01-20   47       "__static_call_return:\n\t"
700f4c6d925823 Peter Zijlstra  2023-01-20   48       ANNOTATE_NOENDBR
700f4c6d925823 Peter Zijlstra  2023-01-20   49       ANNOTATE_RETPOLINE_SAFE
700f4c6d925823 Peter Zijlstra  2023-01-20   50       "ret; int3\n\t"
700f4c6d925823 Peter Zijlstra  2023-01-20   51       ".size __static_call_return, . - __static_call_return \n\t");
700f4c6d925823 Peter Zijlstra  2023-01-20   52  
c27c753ea6fd12 Thomas Gleixner 2022-07-12   53  static void __ref __static_call_transform(void *insn, enum insn_type type,
c27c753ea6fd12 Thomas Gleixner 2022-07-12   54  					  void *func, bool modinit)
e6d6c071f22de2 Josh Poimboeuf  2020-08-18   55  {
3f2a8fc4b15de1 Peter Zijlstra  2021-01-18   56  	const void *emulate = NULL;
452cddbff74b6a Peter Zijlstra  2020-08-18   57  	int size = CALL_INSN_SIZE;
452cddbff74b6a Peter Zijlstra  2020-08-18   58  	const void *code;
700f4c6d925823 Peter Zijlstra  2023-01-20   59  	u8 op, buf[6];
700f4c6d925823 Peter Zijlstra  2023-01-20   60  
700f4c6d925823 Peter Zijlstra  2023-01-20   61  	if ((type == JMP || type == RET) && (op = __is_Jcc(insn)))
700f4c6d925823 Peter Zijlstra  2023-01-20   62  		type = JCC;
452cddbff74b6a Peter Zijlstra  2020-08-18   63  
452cddbff74b6a Peter Zijlstra  2020-08-18   64  	switch (type) {
452cddbff74b6a Peter Zijlstra  2020-08-18   65  	case CALL:
7825451fa4dc04 Peter Zijlstra  2022-09-15   66  		func = callthunks_translate_call_dest(func);
452cddbff74b6a Peter Zijlstra  2020-08-18   67  		code = text_gen_insn(CALL_INSN_OPCODE, insn, func);
3f2a8fc4b15de1 Peter Zijlstra  2021-01-18   68  		if (func == &__static_call_return0) {
3f2a8fc4b15de1 Peter Zijlstra  2021-01-18   69  			emulate = code;
3f2a8fc4b15de1 Peter Zijlstra  2021-01-18   70  			code = &xor5rax;
3f2a8fc4b15de1 Peter Zijlstra  2021-01-18   71  		}
3f2a8fc4b15de1 Peter Zijlstra  2021-01-18   72  
452cddbff74b6a Peter Zijlstra  2020-08-18   73  		break;
452cddbff74b6a Peter Zijlstra  2020-08-18   74  
452cddbff74b6a Peter Zijlstra  2020-08-18   75  	case NOP:
a89dfde3dc3c2d Peter Zijlstra  2021-03-12   76  		code = x86_nops[5];
452cddbff74b6a Peter Zijlstra  2020-08-18   77  		break;
452cddbff74b6a Peter Zijlstra  2020-08-18   78  
452cddbff74b6a Peter Zijlstra  2020-08-18   79  	case JMP:
452cddbff74b6a Peter Zijlstra  2020-08-18   80  		code = text_gen_insn(JMP32_INSN_OPCODE, insn, func);
452cddbff74b6a Peter Zijlstra  2020-08-18   81  		break;
452cddbff74b6a Peter Zijlstra  2020-08-18   82  
452cddbff74b6a Peter Zijlstra  2020-08-18   83  	case RET:
ee88d363d15617 Peter Zijlstra  2022-06-14   84  		if (cpu_feature_enabled(X86_FEATURE_RETHUNK))
770ae1b709528a Peter Zijlstra  2022-09-15   85  			code = text_gen_insn(JMP32_INSN_OPCODE, insn, x86_return_thunk);
ee88d363d15617 Peter Zijlstra  2022-06-14   86  		else
e463a09af2f067 Peter Zijlstra  2021-12-04   87  			code = &retinsn;
452cddbff74b6a Peter Zijlstra  2020-08-18   88  		break;
700f4c6d925823 Peter Zijlstra  2023-01-20   89  
700f4c6d925823 Peter Zijlstra  2023-01-20   90  	case JCC:
700f4c6d925823 Peter Zijlstra  2023-01-20   91  		if (!func) {
700f4c6d925823 Peter Zijlstra  2023-01-20   92  			func = __static_call_return;
700f4c6d925823 Peter Zijlstra  2023-01-20   93  			if (cpu_feature_enabled(X86_FEATURE_RETHUNK))
700f4c6d925823 Peter Zijlstra  2023-01-20   94  				func = x86_return_thunk;
700f4c6d925823 Peter Zijlstra  2023-01-20   95  		}
700f4c6d925823 Peter Zijlstra  2023-01-20   96  
700f4c6d925823 Peter Zijlstra  2023-01-20   97  		buf[0] = 0x0f;
700f4c6d925823 Peter Zijlstra  2023-01-20  @98  		__text_gen_insn(buf+1, op, insn+1, func, 5);
700f4c6d925823 Peter Zijlstra  2023-01-20   99  		code = buf;
700f4c6d925823 Peter Zijlstra  2023-01-20  100  		size = 6;
700f4c6d925823 Peter Zijlstra  2023-01-20  101  
700f4c6d925823 Peter Zijlstra  2023-01-20  102  		break;
452cddbff74b6a Peter Zijlstra  2020-08-18  103  	}
e6d6c071f22de2 Josh Poimboeuf  2020-08-18  104  
452cddbff74b6a Peter Zijlstra  2020-08-18  105  	if (memcmp(insn, code, size) == 0)
e6d6c071f22de2 Josh Poimboeuf  2020-08-18  106  		return;
e6d6c071f22de2 Josh Poimboeuf  2020-08-18  107  
c27c753ea6fd12 Thomas Gleixner 2022-07-12  108  	if (system_state == SYSTEM_BOOTING || modinit)
a945c8345ec0de Peter Zijlstra  2020-08-18  109  		return text_poke_early(insn, code, size);
a945c8345ec0de Peter Zijlstra  2020-08-18  110  
3f2a8fc4b15de1 Peter Zijlstra  2021-01-18  111  	text_poke_bp(insn, code, size, emulate);
e6d6c071f22de2 Josh Poimboeuf  2020-08-18  112  }
e6d6c071f22de2 Josh Poimboeuf  2020-08-18  113  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [peterz-queue:x86/core 3/3] arch/x86/kernel/static_call.c:98 __static_call_transform() error: uninitialized symbol 'op'.
@ 2023-01-23 12:02 Dan Carpenter
  2023-01-23 15:23 ` Peter Zijlstra
  0 siblings, 1 reply; 4+ messages in thread
From: Dan Carpenter @ 2023-01-23 12:02 UTC (permalink / raw)
  To: oe-kbuild, Peter Zijlstra; +Cc: lkp, oe-kbuild-all

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git x86/core
head:   700f4c6d925823018a2d09f92de5405065d2ffec
commit: 700f4c6d925823018a2d09f92de5405065d2ffec [3/3] x86/static_call: Add support for Jcc tail-calls
config: i386-randconfig-m021 (https://download.01.org/0day-ci/archive/20230121/202301211834.noGVyk06-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-8) 11.3.0

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>

smatch warnings:
arch/x86/kernel/static_call.c:98 __static_call_transform() error: uninitialized symbol 'op'.

vim +/op +98 arch/x86/kernel/static_call.c

c27c753ea6fd12 Thomas Gleixner 2022-07-12   53  static void __ref __static_call_transform(void *insn, enum insn_type type,
c27c753ea6fd12 Thomas Gleixner 2022-07-12   54  					  void *func, bool modinit)
e6d6c071f22de2 Josh Poimboeuf  2020-08-18   55  {
3f2a8fc4b15de1 Peter Zijlstra  2021-01-18   56  	const void *emulate = NULL;
452cddbff74b6a Peter Zijlstra  2020-08-18   57  	int size = CALL_INSN_SIZE;
452cddbff74b6a Peter Zijlstra  2020-08-18   58  	const void *code;
700f4c6d925823 Peter Zijlstra  2023-01-20   59  	u8 op, buf[6];
700f4c6d925823 Peter Zijlstra  2023-01-20   60  
700f4c6d925823 Peter Zijlstra  2023-01-20   61  	if ((type == JMP || type == RET) && (op = __is_Jcc(insn)))
700f4c6d925823 Peter Zijlstra  2023-01-20   62  		type = JCC;

Smatch is concerned that type can start as "JCC".

452cddbff74b6a Peter Zijlstra  2020-08-18   63  
452cddbff74b6a Peter Zijlstra  2020-08-18   64  	switch (type) {
452cddbff74b6a Peter Zijlstra  2020-08-18   65  	case CALL:
7825451fa4dc04 Peter Zijlstra  2022-09-15   66  		func = callthunks_translate_call_dest(func);
452cddbff74b6a Peter Zijlstra  2020-08-18   67  		code = text_gen_insn(CALL_INSN_OPCODE, insn, func);
3f2a8fc4b15de1 Peter Zijlstra  2021-01-18   68  		if (func == &__static_call_return0) {
3f2a8fc4b15de1 Peter Zijlstra  2021-01-18   69  			emulate = code;
3f2a8fc4b15de1 Peter Zijlstra  2021-01-18   70  			code = &xor5rax;
3f2a8fc4b15de1 Peter Zijlstra  2021-01-18   71  		}
3f2a8fc4b15de1 Peter Zijlstra  2021-01-18   72  
452cddbff74b6a Peter Zijlstra  2020-08-18   73  		break;
452cddbff74b6a Peter Zijlstra  2020-08-18   74  
452cddbff74b6a Peter Zijlstra  2020-08-18   75  	case NOP:
a89dfde3dc3c2d Peter Zijlstra  2021-03-12   76  		code = x86_nops[5];
452cddbff74b6a Peter Zijlstra  2020-08-18   77  		break;
452cddbff74b6a Peter Zijlstra  2020-08-18   78  
452cddbff74b6a Peter Zijlstra  2020-08-18   79  	case JMP:
452cddbff74b6a Peter Zijlstra  2020-08-18   80  		code = text_gen_insn(JMP32_INSN_OPCODE, insn, func);
452cddbff74b6a Peter Zijlstra  2020-08-18   81  		break;
452cddbff74b6a Peter Zijlstra  2020-08-18   82  
452cddbff74b6a Peter Zijlstra  2020-08-18   83  	case RET:
ee88d363d15617 Peter Zijlstra  2022-06-14   84  		if (cpu_feature_enabled(X86_FEATURE_RETHUNK))
770ae1b709528a Peter Zijlstra  2022-09-15   85  			code = text_gen_insn(JMP32_INSN_OPCODE, insn, x86_return_thunk);
ee88d363d15617 Peter Zijlstra  2022-06-14   86  		else
e463a09af2f067 Peter Zijlstra  2021-12-04   87  			code = &retinsn;
452cddbff74b6a Peter Zijlstra  2020-08-18   88  		break;
700f4c6d925823 Peter Zijlstra  2023-01-20   89  
700f4c6d925823 Peter Zijlstra  2023-01-20   90  	case JCC:
700f4c6d925823 Peter Zijlstra  2023-01-20   91  		if (!func) {
700f4c6d925823 Peter Zijlstra  2023-01-20   92  			func = __static_call_return;
700f4c6d925823 Peter Zijlstra  2023-01-20   93  			if (cpu_feature_enabled(X86_FEATURE_RETHUNK))
700f4c6d925823 Peter Zijlstra  2023-01-20   94  				func = x86_return_thunk;
700f4c6d925823 Peter Zijlstra  2023-01-20   95  		}
700f4c6d925823 Peter Zijlstra  2023-01-20   96  
700f4c6d925823 Peter Zijlstra  2023-01-20   97  		buf[0] = 0x0f;
700f4c6d925823 Peter Zijlstra  2023-01-20  @98  		__text_gen_insn(buf+1, op, insn+1, func, 5);
700f4c6d925823 Peter Zijlstra  2023-01-20   99  		code = buf;
700f4c6d925823 Peter Zijlstra  2023-01-20  100  		size = 6;
700f4c6d925823 Peter Zijlstra  2023-01-20  101  
700f4c6d925823 Peter Zijlstra  2023-01-20  102  		break;
452cddbff74b6a Peter Zijlstra  2020-08-18  103  	}
e6d6c071f22de2 Josh Poimboeuf  2020-08-18  104  
452cddbff74b6a Peter Zijlstra  2020-08-18  105  	if (memcmp(insn, code, size) == 0)
e6d6c071f22de2 Josh Poimboeuf  2020-08-18  106  		return;
e6d6c071f22de2 Josh Poimboeuf  2020-08-18  107  
c27c753ea6fd12 Thomas Gleixner 2022-07-12  108  	if (system_state == SYSTEM_BOOTING || modinit)
a945c8345ec0de Peter Zijlstra  2020-08-18  109  		return text_poke_early(insn, code, size);
a945c8345ec0de Peter Zijlstra  2020-08-18  110  
3f2a8fc4b15de1 Peter Zijlstra  2021-01-18  111  	text_poke_bp(insn, code, size, emulate);
e6d6c071f22de2 Josh Poimboeuf  2020-08-18  112  }

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [peterz-queue:x86/core 3/3] arch/x86/kernel/static_call.c:98 __static_call_transform() error: uninitialized symbol 'op'.
  2023-01-23 12:02 [peterz-queue:x86/core 3/3] arch/x86/kernel/static_call.c:98 __static_call_transform() error: uninitialized symbol 'op' Dan Carpenter
@ 2023-01-23 15:23 ` Peter Zijlstra
  2023-01-23 15:46   ` Dan Carpenter
  0 siblings, 1 reply; 4+ messages in thread
From: Peter Zijlstra @ 2023-01-23 15:23 UTC (permalink / raw)
  To: Dan Carpenter; +Cc: oe-kbuild, lkp, oe-kbuild-all

On Mon, Jan 23, 2023 at 03:02:54PM +0300, Dan Carpenter wrote:
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git x86/core
> head:   700f4c6d925823018a2d09f92de5405065d2ffec
> commit: 700f4c6d925823018a2d09f92de5405065d2ffec [3/3] x86/static_call: Add support for Jcc tail-calls
> config: i386-randconfig-m021 (https://download.01.org/0day-ci/archive/20230121/202301211834.noGVyk06-lkp@intel.com/config)
> compiler: gcc-11 (Debian 11.3.0-8) 11.3.0
> 
> If you fix the issue, kindly add following tag where applicable
> | Reported-by: kernel test robot <lkp@intel.com>
> | Reported-by: Dan Carpenter <error27@gmail.com>
> 
> smatch warnings:
> arch/x86/kernel/static_call.c:98 __static_call_transform() error: uninitialized symbol 'op'.
> 
> vim +/op +98 arch/x86/kernel/static_call.c
> 
> c27c753ea6fd12 Thomas Gleixner 2022-07-12   53  static void __ref __static_call_transform(void *insn, enum insn_type type,
> c27c753ea6fd12 Thomas Gleixner 2022-07-12   54  					  void *func, bool modinit)
> e6d6c071f22de2 Josh Poimboeuf  2020-08-18   55  {
> 3f2a8fc4b15de1 Peter Zijlstra  2021-01-18   56  	const void *emulate = NULL;
> 452cddbff74b6a Peter Zijlstra  2020-08-18   57  	int size = CALL_INSN_SIZE;
> 452cddbff74b6a Peter Zijlstra  2020-08-18   58  	const void *code;
> 700f4c6d925823 Peter Zijlstra  2023-01-20   59  	u8 op, buf[6];
> 700f4c6d925823 Peter Zijlstra  2023-01-20   60  
> 700f4c6d925823 Peter Zijlstra  2023-01-20   61  	if ((type == JMP || type == RET) && (op = __is_Jcc(insn)))
> 700f4c6d925823 Peter Zijlstra  2023-01-20   62  		type = JCC;
> 
> Smatch is concerned that type can start as "JCC".

It can't. What's the normal way to shut this kind of warnings up?

Something like BUG_ON(type==JCC); should squash that value I suppose,
but it does seems a bit crude.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [peterz-queue:x86/core 3/3] arch/x86/kernel/static_call.c:98 __static_call_transform() error: uninitialized symbol 'op'.
  2023-01-23 15:23 ` Peter Zijlstra
@ 2023-01-23 15:46   ` Dan Carpenter
  0 siblings, 0 replies; 4+ messages in thread
From: Dan Carpenter @ 2023-01-23 15:46 UTC (permalink / raw)
  To: Peter Zijlstra; +Cc: oe-kbuild, lkp, oe-kbuild-all

On Mon, Jan 23, 2023 at 04:23:21PM +0100, Peter Zijlstra wrote:
> On Mon, Jan 23, 2023 at 03:02:54PM +0300, Dan Carpenter wrote:
> > tree:   https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git x86/core
> > head:   700f4c6d925823018a2d09f92de5405065d2ffec
> > commit: 700f4c6d925823018a2d09f92de5405065d2ffec [3/3] x86/static_call: Add support for Jcc tail-calls
> > config: i386-randconfig-m021 (https://download.01.org/0day-ci/archive/20230121/202301211834.noGVyk06-lkp@intel.com/config)
> > compiler: gcc-11 (Debian 11.3.0-8) 11.3.0
> > 
> > If you fix the issue, kindly add following tag where applicable
> > | Reported-by: kernel test robot <lkp@intel.com>
> > | Reported-by: Dan Carpenter <error27@gmail.com>
> > 
> > smatch warnings:
> > arch/x86/kernel/static_call.c:98 __static_call_transform() error: uninitialized symbol 'op'.
> > 
> > vim +/op +98 arch/x86/kernel/static_call.c
> > 
> > c27c753ea6fd12 Thomas Gleixner 2022-07-12   53  static void __ref __static_call_transform(void *insn, enum insn_type type,
> > c27c753ea6fd12 Thomas Gleixner 2022-07-12   54  					  void *func, bool modinit)
> > e6d6c071f22de2 Josh Poimboeuf  2020-08-18   55  {
> > 3f2a8fc4b15de1 Peter Zijlstra  2021-01-18   56  	const void *emulate = NULL;
> > 452cddbff74b6a Peter Zijlstra  2020-08-18   57  	int size = CALL_INSN_SIZE;
> > 452cddbff74b6a Peter Zijlstra  2020-08-18   58  	const void *code;
> > 700f4c6d925823 Peter Zijlstra  2023-01-20   59  	u8 op, buf[6];
> > 700f4c6d925823 Peter Zijlstra  2023-01-20   60  
> > 700f4c6d925823 Peter Zijlstra  2023-01-20   61  	if ((type == JMP || type == RET) && (op = __is_Jcc(insn)))
> > 700f4c6d925823 Peter Zijlstra  2023-01-20   62  		type = JCC;
> > 
> > Smatch is concerned that type can start as "JCC".
> 
> It can't. What's the normal way to shut this kind of warnings up?
> 
> Something like BUG_ON(type==JCC); should squash that value I suppose,
> but it does seems a bit crude.

We could just ignore it.  These are one time only emails.

This code hasn't hit linux-next yet, so I don't have it on my system.
It may be that using the cross function DB silences the warning.

regards,
dan carpenter


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2023-01-23 15:47 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-01-23 12:02 [peterz-queue:x86/core 3/3] arch/x86/kernel/static_call.c:98 __static_call_transform() error: uninitialized symbol 'op' Dan Carpenter
2023-01-23 15:23 ` Peter Zijlstra
2023-01-23 15:46   ` Dan Carpenter
  -- strict thread matches above, loose matches on Subject: below --
2023-01-21 10:21 kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.