]> git.baikalelectronics.ru Git - kernel.git/commit
x86/umip: Fix insn_get_code_seg_params()'s return value
authorBorislav Petkov <bp@suse.de>
Thu, 23 Nov 2017 09:19:51 +0000 (10:19 +0100)
committerThomas Gleixner <tglx@linutronix.de>
Thu, 23 Nov 2017 19:17:59 +0000 (20:17 +0100)
commitc3b7208bed20d72eba5356361bbd128b3c6dda3c
tree04bd970b855884f0f104041c4662713841b750d3
parent3ecec1391e7902af6ed1e65207e216a4df803e05
x86/umip: Fix insn_get_code_seg_params()'s return value

In order to save on redundant structs definitions
insn_get_code_seg_params() was made to return two 4-bit values in a char
but clang complains:

  arch/x86/lib/insn-eval.c:780:10: warning: implicit conversion from 'int' to 'char'
  changes value from 132 to -124 [-Wconstant-conversion]
                  return INSN_CODE_SEG_PARAMS(4, 8);
                  ~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~
  ./arch/x86/include/asm/insn-eval.h:16:57: note: expanded from macro 'INSN_CODE_SEG_PARAMS'
  #define INSN_CODE_SEG_PARAMS(oper_sz, addr_sz) (oper_sz | (addr_sz << 4))

Those two values do get picked apart afterwards the opposite way of how
they were ORed so wrt to the LSByte, the return value is the same.

But this function returns -EINVAL in the error case, which is an int. So
make it return an int which is the native word size anyway and thus fix
the clang warning.

Reported-by: Kees Cook <keescook@google.com>
Reported-by: Nick Desaulniers <nick.desaulniers@gmail.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: ricardo.neri-calderon@linux.intel.com
Link: https://lkml.kernel.org/r/20171123091951.1462-1-bp@alien8.de
arch/x86/include/asm/insn-eval.h
arch/x86/kernel/umip.c
arch/x86/lib/insn-eval.c