• J
    objtool: Handle another GCC stack pointer adjustment bug · 0d0970ee
    Josh Poimboeuf 提交于
    The kbuild bot reported the following warning with GCC 4.4 and a
    randconfig:
    
      net/socket.o: warning: objtool: compat_sock_ioctl()+0x1083: stack state mismatch: cfa1=7+160 cfa2=-1+0
    
    This is caused by another GCC non-optimization, where it backs up and
    restores the stack pointer for no apparent reason:
    
        2f91:       48 89 e0                mov    %rsp,%rax
        2f94:       4c 89 e7                mov    %r12,%rdi
        2f97:       4c 89 f6                mov    %r14,%rsi
        2f9a:       ba 20 00 00 00          mov    $0x20,%edx
        2f9f:       48 89 c4                mov    %rax,%rsp
    
    This issue would have been happily ignored before the following commit:
    
      dd88a0a0 ("objtool: Handle GCC stack pointer adjustment bug")
    
    But now that objtool is paying attention to such stack pointer writes
    to/from a register, it needs to understand them properly.  In this case
    that means recognizing that the "mov %rsp, %rax" instruction is
    potentially a backup of the stack pointer.
    Reported-by: Nkbuild test robot <fengguang.wu@intel.com>
    Signed-off-by: NJosh Poimboeuf <jpoimboe@redhat.com>
    Cc: Alexander Potapenko <glider@google.com>
    Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Dmitriy Vyukov <dvyukov@google.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Matthias Kaehlcke <mka@chromium.org>
    Cc: Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Fixes: dd88a0a0 ("objtool: Handle GCC stack pointer adjustment bug")
    Link: http://lkml.kernel.org/r/8c7aa8e9a36fbbb6655d9d8e7cea58958c912da8.1505942196.git.jpoimboe@redhat.comSigned-off-by: NIngo Molnar <mingo@kernel.org>
    0d0970ee
check.c 46.6 KB