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>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAK8P3a1bas4pex229aEE7P2HeTezxuF0NAgDDoBEpCpbi+0hAw@mail.gmail.com>
Date:   Thu, 24 Aug 2017 12:14:27 +0200
From:   Arnd Bergmann <arnd@...db.de>
To:     Josh Poimboeuf <jpoimboe@...hat.com>
Cc:     Linux Kernel Mailing List <linux-kernel@...r.kernel.org>
Subject: Re: gcc-8 objtool warnings

On Wed, Aug 23, 2017 at 6:01 PM, Josh Poimboeuf <jpoimboe@...hat.com> wrote:
> On Wed, Aug 23, 2017 at 03:38:02PM +0200, Arnd Bergmann wrote:
>> On Wed, Aug 23, 2017 at 2:48 PM, Josh Poimboeuf <jpoimboe@...hat.com> wrote:
>> > On Wed, Aug 23, 2017 at 02:22:34PM +0200, Arnd Bergmann wrote:
>> >> ...
>> >>
>> >> 0000000000000000 <put_cred_rcu.cold.1>:
>> >>    0:   e8 00 00 00 00          callq  5 <put_cred_rcu.cold.1+0x5>
>> >>                         1: R_X86_64_PC32        __sanitizer_cov_trace_pc-0x4
>> >>    5:   44 8b 8b 64 ff ff ff    mov    -0x9c(%rbx),%r9d
>> >>    c:   48 8b 8b 68 ff ff ff    mov    -0x98(%rbx),%rcx
>> >>   13:   44 89 e2                mov    %r12d,%edx
>> >>   16:   44 8b 83 60 ff ff ff    mov    -0xa0(%rbx),%r8d
>> >>   1d:   4c 89 ee                mov    %r13,%rsi
>> >>   20:   48 c7 c7 00 00 00 00    mov    $0x0,%rdi
>> >>                         23: R_X86_64_32S        .rodata.str1.8+0x28
>> >>   27:   e8 00 00 00 00          callq  2c <__kstrtab_creds_are_invalid+0x3>
>> >>                         28: R_X86_64_PC32       panic-0x4
>> >
>> > Thanks.  Can you send me one of the .o files?
>>
>> Attached here now.
>
> Ok, looks like I'll need to add support for this new pattern (jumping to
> a .cold section in .text.unlikely).
>
> I'm also about to start work on fixing that other issue you found with
> GCC's inefficient update of the stack pointer.
>
> I really appreciate your finding all these warnings (and getting advance
> GCC 8 testing).  Thanks again!

No worries. I've disabled the four warnings in objtool that triggered now
and almost all are gone, but I still get a few warnings after doing additional
randconfig builds.

find rand*/ -name \*success -mtime -2  -size +0c | xargs grep -v
"sibling call from callable instruction" | grep -v "call without frame
pointer save/setup" | grep -v "return with modified stack frame" | cut
-f 3- -d: | sort | uniq -c
      1  warning: objtool: adv76xx_log_status.cold.34()+0x338: stack
state mismatch: reg1[14]=-1+0 reg2[14]=-2-24
      1  warning: objtool: bnx2x_panic_dump.cold.125()+0x1c6:
unsupported stack register modification
      1  warning: objtool: cx25840_probe.cold.9()+0x189: stack state
mismatch: reg1[3]=-2-16 reg2[3]=-1+0
      1  warning: objtool: hpet_alloc.cold.6()+0x39d: stack state
mismatch: reg1[14]=-1+0 reg2[14]=-2-16
      1  warning: objtool: init_test_probes.cold.6()+0x3ae: leave
instruction with modified stack frame
      4  warning: objtool: lkdtm_ATOMIC_TIMING.cold.0()+0x0: leave
instruction with modified stack frame
      4  warning: objtool: lkdtm_ATOMIC_TIMING.cold.4()+0x0: leave
instruction with modified stack frame
      2  warning: objtool: lkdtm_REFCOUNT_TIMING.cold.1()+0x0: leave
instruction with modified stack frame
      3  warning: objtool: lkdtm_REFCOUNT_TIMING.cold.5()+0x0: leave
instruction with modified stack frame
      1  warning: objtool: mgsl_add_device.cold.27()+0x82: stack state
mismatch: reg1[15]=-2-16 reg2[15]=-1+0
      1  warning: objtool: mgsl_add_device.cold.41()+0x82: stack state
mismatch: reg1[15]=-2-16 reg2[15]=-1+0
      1  warning: objtool: mlx5_eswitch_disable_sriov.cold.19()+0xd0:
stack state mismatch: reg1[13]=-1+0 reg2[13]=-2-16
      1  warning: objtool: __oom_reap_task_mm.cold.10()+0x0: stack
state mismatch: cfa1=6+16 cfa2=7+8
      1  warning: objtool: __oom_reap_task_mm.cold.12()+0x0: stack
state mismatch: cfa1=6+16 cfa2=7+8
      2  warning: objtool: __oom_reap_task_mm.cold.3()+0x0: stack
state mismatch: cfa1=6+16 cfa2=7+8
      1  warning: objtool: __oom_reap_task_mm.cold.31()+0x0: stack
state mismatch: cfa1=6+16 cfa2=7+8
      1  warning: objtool: __oom_reap_task_mm.cold.7()+0x0: stack
state mismatch: cfa1=6+16 cfa2=7+8
      2  warning: objtool: ppp_print_buffer.cold.7()+0x0: stack state
mismatch: cfa1=6+16 cfa2=7+8
      1  warning: objtool: rndis_msg_parser.cold.6()+0x0: stack state
mismatch: cfa1=6+16 cfa2=7+8
      6  warning: objtool: rodata_test.cold.0()+0x31: leave
instruction with modified stack frame
      3  warning: objtool: rodata_test.cold.0()+0x4a: leave
instruction with modified stack frame
      1  warning: objtool: show_free_areas.cold.110()+0x394: stack
state mismatch: reg1[15]=-1+0 reg2[15]=-2-32
      1  warning: objtool: show_free_areas.cold.116()+0x239: stack
state mismatch: reg1[12]=-1+0 reg2[12]=-2-32
      1  warning: objtool: show_free_areas.cold.129()+0x23a: stack
state mismatch: reg1[13]=-1+0 reg2[13]=-2-16
      1  warning: objtool: show_free_areas.cold.18()+0x3aa: stack
state mismatch: reg1[12]=-1+0 reg2[12]=-2-16
      1  warning: objtool: show_free_areas.cold.21()+0x3c1: stack
state mismatch: reg1[12]=-1+0 reg2[12]=-2-32
      1  warning: objtool: show_free_areas.cold.21()+0x3e2: stack
state mismatch: reg1[12]=-1+0 reg2[12]=-2-32
      1  warning: objtool: show_free_areas.cold.24()+0x3c1: stack
state mismatch: reg1[12]=-1+0 reg2[12]=-2-32
      1  warning: objtool: show_free_areas.cold.27()+0x239: stack
state mismatch: reg1[13]=-1+0 reg2[13]=-2-16
      1  warning: objtool: show_free_areas.cold.30()+0x239: stack
state mismatch: reg1[13]=-1+0 reg2[13]=-2-16
      1  warning: objtool: show_free_areas.cold.31()+0x23c: stack
state mismatch: reg1[13]=-1+0 reg2[13]=-2-56
      1  warning: objtool: show_free_areas.cold.34()+0x24b: stack
state mismatch: reg1[13]=-1+0 reg2[13]=-2-16
      1  warning: objtool: snic_alloc_vnic_res.cold.2()+0x2b1: stack
state mismatch: reg1[13]=-1+0 reg2[13]=-2-24
      1  warning: objtool: snic_alloc_vnic_res.cold.2()+0x352: stack
state mismatch: reg1[13]=-1+0 reg2[13]=-2-24
      1  warning: objtool: syscon_poweroff.cold.0()+0x10: leave
instruction with modified stack frame
      1  warning: objtool: tda18271c2_rf_cal_init.cold.13()+0x156:
stack state mismatch: reg1[13]=-1+0 reg2[13]=-2-24
      3  warning: objtool: tda18271c2_rf_cal_init.cold.6()+0x156:
stack state mismatch: reg1[13]=-1+0 reg2[13]=-2-24
      1  warning: objtool: tea5761_autodetection.cold.1()+0x3c: leave
instruction with modified stack frame
      1  warning: objtool: tea5761_autodetection.cold.5()+0x3c: leave
instruction with modified stack frame
      1  warning: objtool: test.cold.1()+0x7e: stack state mismatch:
reg1[3]=-1+0 reg2[3]=-2-32
      1  warning: objtool: test.cold.3()+0x6e: stack state mismatch:
reg1[12]=-1+0 reg2[12]=-2-32
      1  warning: objtool: test.cold.4()+0x7e: stack state mismatch:
reg1[3]=-1+0 reg2[3]=-2-32
      1  warning: objtool: test.cold.5()+0x90: stack state mismatch:
reg1[3]=-1+0 reg2[3]=-2-32
      1  warning: objtool: .text.unlikely: unexpected end of section
      1  warning: objtool: __twa_shutdown.cold.26()+0x1a: leave
instruction with modified stack frame
      1  warning: objtool: __twl_shutdown.cold.10()+0x1c: leave
instruction with modified stack frame
      1  warning: objtool: __twl_shutdown.cold.19()+0x1c: leave
instruction with modified stack frame
      1  warning: objtool: vc4_hvs_dump_state.cold.1()+0x1e: stack
state mismatch: reg1[14]=-1+0 reg2[14]=-2-16
      1  warning: objtool: vt596_dump_regs.cold.1()+0x1a: stack state
mismatch: cfa1=6+16 cfa2=7+8
      1  warning: objtool: wcn36xx_smd_start.cold.20()+0x32:
unsupported stack register modification
      1  warning: objtool: wsm_cmd_send.cold.18()+0x48: stack state
mismatch: reg1[14]=-1+0 reg2[14]=-2-24
      1  warning: objtool: xen_callback_vector.cold.18()+0x92: leave
instruction with modified stack frame
      1  warning: objtool: xlvbd_flush.cold.20()+0x3c: leave
instruction with modified stack frame
      1  warning: objtool: xlvbd_flush.cold.5()+0x3f: leave
instruction with modified stack frame

I'll send you some more object files as private mail.

      Arnd

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ