03 Apr, 2019

1 commit

  • commit 056d28d135bca0b1d0908990338e00e9dadaf057 upstream.

    If it is not in the default location, compilation fails at several points.

    Signed-off-by: Rolf Eike Beer
    Signed-off-by: Josh Poimboeuf
    Signed-off-by: Thomas Gleixner
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/91a25e992566a7968fedc89ec80e7f4c83ad0548.1553622500.git.jpoimboe@redhat.com
    Signed-off-by: Greg Kroah-Hartman

    Rolf Eike Beer
     

27 Mar, 2019

1 commit

  • commit 0c671812f152b628bd87c0af49da032cc2a2c319 upstream.

    Objtool uses over 512k of stack, thanks to the hash table embedded in
    the objtool_file struct. This causes an unnecessarily large stack
    allocation and breaks users with low stack limits.

    Move the struct off the stack.

    Fixes: 042ba73fe7eb ("objtool: Add several performance improvements")
    Reported-by: Vassili Karpov
    Signed-off-by: Josh Poimboeuf
    Signed-off-by: Thomas Gleixner
    Cc: Peter Zijlstra
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/df92dcbc4b84b02ffa252f46876df125fb56e2d7.1552954176.git.jpoimboe@redhat.com
    Signed-off-by: Greg Kroah-Hartman

    Josh Poimboeuf
     

17 Dec, 2018

2 commits

  • [ Upstream commit 22566c1603030f0a036ad564634b064ad1a55db2 ]

    Because find_symbol_by_name() traverses the same lists as
    read_symbols(), changing sym->name in place without copying it affects
    the result of find_symbol_by_name(). In the case where a ".cold"
    function precedes its parent in sec->symbol_list, it can result in a
    function being considered a parent of itself. This leads to function
    length being set to 0 and other consequent side-effects including a
    segfault in add_switch_table(). The effects of this bug are only
    visible when building with -ffunction-sections in KCFLAGS.

    Fix by copying the search string instead of modifying it in place.

    Signed-off-by: Artem Savkov
    Signed-off-by: Josh Poimboeuf
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Fixes: 13810435b9a7 ("objtool: Support GCC 8's cold subfunctions")
    Link: http://lkml.kernel.org/r/910abd6b5a4945130fd44f787c24e07b9e07c8da.1542736240.git.jpoimboe@redhat.com
    Signed-off-by: Ingo Molnar
    Signed-off-by: Sasha Levin

    Artem Savkov
     
  • [ Upstream commit 0b9301fb632f7111a3293a30cc5b20f1b82ed08d ]

    If read_symbols() fails during second list traversal (the one dealing
    with ".cold" subfunctions) it frees the symbol, but never deletes it
    from the list/hash_table resulting in symbol being freed again in
    elf_close(). Fix it by just returning an error, leaving cleanup to
    elf_close().

    Signed-off-by: Artem Savkov
    Signed-off-by: Josh Poimboeuf
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Fixes: 13810435b9a7 ("objtool: Support GCC 8's cold subfunctions")
    Link: http://lkml.kernel.org/r/beac5a9b7da9e8be90223459dcbe07766ae437dd.1542736240.git.jpoimboe@redhat.com
    Signed-off-by: Ingo Molnar
    Signed-off-by: Sasha Levin

    Artem Savkov
     

16 Aug, 2018

1 commit

  • Pull Kbuild updates from Masahiro Yamada:

    - verify depmod is installed before modules_install

    - support build salt in case build ids must be unique between builds

    - allow users to specify additional host compiler flags via HOST*FLAGS,
    and rename internal variables to KBUILD_HOST*FLAGS

    - update buildtar script to drop vax support, add arm64 support

    - update builddeb script for better debarch support

    - document the pit-fall of if_changed usage

    - fix parallel build of UML with O= option

    - make 'samples' target depend on headers_install to fix build errors

    - remove deprecated host-progs variable

    - add a new coccinelle script for refcount_t vs atomic_t check

    - improve double-test coccinelle script

    - misc cleanups and fixes

    * tag 'kbuild-v4.19' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: (41 commits)
    coccicheck: return proper error code on fail
    Coccinelle: doubletest: reduce side effect false positives
    kbuild: remove deprecated host-progs variable
    kbuild: make samples really depend on headers_install
    um: clean up archheaders recipe
    kbuild: add %asm-generic to no-dot-config-targets
    um: fix parallel building with O= option
    scripts: Add Python 3 support to tracing/draw_functrace.py
    builddeb: Add automatic support for sh{3,4}{,eb} architectures
    builddeb: Add automatic support for riscv* architectures
    builddeb: Add automatic support for m68k architecture
    builddeb: Add automatic support for or1k architecture
    builddeb: Add automatic support for sparc64 architecture
    builddeb: Add automatic support for mips{,64}r6{,el} architectures
    builddeb: Add automatic support for mips64el architecture
    builddeb: Add automatic support for ppc64 and powerpcspe architectures
    builddeb: Introduce functions to simplify kconfig tests in set_debarch
    builddeb: Drop check for 32-bit s390
    builddeb: Change architecture detection fallback to use dpkg-architecture
    builddeb: Skip architecture detection when KBUILD_DEBARCH is set
    ...

    Linus Torvalds
     

14 Aug, 2018

1 commit

  • Pull x86 asm updates from Thomas Gleixner:
    "The lowlevel and ASM code updates for x86:

    - Make stack trace unwinding more reliable

    - ASM instruction updates for better code generation

    - Various cleanups"

    * 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/entry/64: Add two more instruction suffixes
    x86/asm/64: Use 32-bit XOR to zero registers
    x86/build/vdso: Simplify 'cmd_vdso2c'
    x86/build/vdso: Remove unused vdso-syms.lds
    x86/stacktrace: Enable HAVE_RELIABLE_STACKTRACE for the ORC unwinder
    x86/unwind/orc: Detect the end of the stack
    x86/stacktrace: Do not fail for ORC with regs on stack
    x86/stacktrace: Clarify the reliable success paths
    x86/stacktrace: Remove STACKTRACE_DUMP_ONCE
    x86/stacktrace: Do not unwind after user regs
    x86/asm: Use CC_SET/CC_OUT in percpu_cmpxchg8b_double() to micro-optimize code generation

    Linus Torvalds
     

18 Jul, 2018

2 commits


14 Jul, 2018

1 commit

  • Clang puts its section header names in the '.strtab' section instead of
    '.shstrtab', which causes objtool to fail with a "can't find
    .shstrtab section" warning when attempting to write ORC metadata to an
    object file.

    If '.shstrtab' doesn't exist, use '.strtab' instead.

    Signed-off-by: Simon Ser
    Signed-off-by: Josh Poimboeuf
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Link: http://lkml.kernel.org/r/d1c1c3fe55872be433da7bc5e1860538506229ba.1531153015.git.jpoimboe@redhat.com
    Signed-off-by: Ingo Molnar

    Simon Ser
     

02 Jul, 2018

1 commit

  • Since the following commit:

    cd77849a69cf ("objtool: Fix GCC 8 cold subfunction detection for aliased functions")

    ... if the kernel is built with EXTRA_CFLAGS='-fno-reorder-functions',
    objtool can get stuck in an infinite loop.

    That flag causes the new GCC 8 cold subfunctions to be placed in .text
    instead of .text.unlikely. But it also has an unfortunate quirk: in the
    symbol table, the subfunction (e.g., nmi_panic.cold.7) is nested inside
    the parent (nmi_panic).

    That function overlap confuses objtool, and causes it to get into an
    infinite loop in next_insn_same_func(). Here's Allan's description of
    the loop:

    "Objtool iterates through the instructions in nmi_panic using
    next_insn_same_func. Once it reaches the end of nmi_panic at 0x534 it
    jumps to 0x528 as that's the start of nmi_panic.cold.7. However, since
    the instructions starting at 0x528 are still associated with nmi_panic
    objtool will get stuck in a loop, continually jumping back to 0x528
    after reaching 0x534."

    Fix it by shortening the length of the parent function so that the
    functions no longer overlap.

    Reported-and-analyzed-by: Allan Xavier
    Signed-off-by: Josh Poimboeuf
    Cc: Allan Xavier
    Cc: Andy Lutomirski
    Cc: Borislav Petkov
    Cc: Brian Gerst
    Cc: Denys Vlasenko
    Cc: H. Peter Anvin
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Link: http://lkml.kernel.org/r/9e704c52bee651129b036be14feda317ae5606ae.1530136978.git.jpoimboe@redhat.com
    Signed-off-by: Ingo Molnar

    Josh Poimboeuf
     

21 Jun, 2018

1 commit

  • The existing UNWIND_HINT_EMPTY annotations happen to be good indicators
    of where entry code calls into C code for the first time. So also use
    them to mark the end of the stack for the ORC unwinder.

    Use that information to set unwind->error if the ORC unwinder doesn't
    unwind all the way to the end. This will be needed for enabling
    HAVE_RELIABLE_STACKTRACE for the ORC unwinder so we can use it with the
    livepatch consistency model.

    Thanks to Jiri Slaby for teaching the ORCs about the unwind hints.

    Signed-off-by: Josh Poimboeuf
    Signed-off-by: Jiri Slaby
    Acked-by: Josh Poimboeuf
    Cc: Andy Lutomirski
    Cc: Borislav Petkov
    Cc: Brian Gerst
    Cc: Denys Vlasenko
    Cc: H. Peter Anvin
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Link: https://lkml.kernel.org/lkml/20180518064713.26440-5-jslaby@suse.cz
    Signed-off-by: Ingo Molnar

    Josh Poimboeuf
     

20 Jun, 2018

1 commit

  • machine_real_restart() is annotated as '__noreturn", so add it to the
    objtool noreturn list. This fixes the following warning with clang and
    CONFIG_CC_OPTIMIZE_FOR_SIZE=y:

    arch/x86/kernel/reboot.o: warning: objtool: native_machine_emergency_restart() falls through to next function machine_power_off()

    Reported-by: Matthias Kaehlcke
    Signed-off-by: Josh Poimboeuf
    Signed-off-by: Thomas Gleixner
    Tested-by: Matthias Kaehlcke
    Reviewed-by: Matthias Kaehlcke
    Link: https://lkml.kernel.org/r/791712792aa4431bdd55bf1beb33a169ddf3b4a2.1529423255.git.jpoimboe@redhat.com

    Josh Poimboeuf
     

06 Jun, 2018

1 commit

  • The kbuild test robot reported the following issue:

    kernel/time/posix-stubs.o: warning: objtool: sys_ni_posix_timers.cold.1()+0x0: unreachable instruction

    This file creates symbol aliases for the sys_ni_posix_timers() function.
    So there are multiple ELF function symbols for the same function:

    23: 0000000000000150 26 FUNC GLOBAL DEFAULT 1 __x64_sys_timer_create
    24: 0000000000000150 26 FUNC GLOBAL DEFAULT 1 sys_ni_posix_timers
    25: 0000000000000150 26 FUNC GLOBAL DEFAULT 1 __ia32_sys_timer_create
    26: 0000000000000150 26 FUNC GLOBAL DEFAULT 1 __x64_sys_timer_gettime

    Here's the corresponding cold subfunction:

    11: 0000000000000000 45 FUNC LOCAL DEFAULT 6 sys_ni_posix_timers.cold.1

    When analyzing overlapping functions, objtool only looks at the first
    one in the symbol list. The rest of the functions are basically ignored
    because they point to instructions which have already been analyzed.

    So in this case it analyzes the __x64_sys_timer_create() function, but
    then it fails to recognize that its cold subfunction is
    sys_ni_posix_timers.cold.1(), because the names are different.

    Make the subfunction detection a little smarter by associating each
    subfunction with the first function which jumps to it, since that's the
    one which will be analyzed.

    Unfortunately we still have to leave the original subfunction detection
    code in place, thanks to GCC switch tables. (See the comment for more
    details.)

    Fixes: 13810435b9a7 ("objtool: Support GCC 8's cold subfunctions")
    Reported-by: kbuild test robot
    Signed-off-by: Josh Poimboeuf
    Signed-off-by: Thomas Gleixner
    Cc: Peter Zijlstra
    Link: https://lkml.kernel.org/r/d3ba52662cbc8e3a64a3b64d44b4efc5674fd9ab.1527855808.git.jpoimboe@redhat.com

    Josh Poimboeuf
     

19 May, 2018

1 commit

  • With the following commit:

    fd35c88b7417 ("objtool: Support GCC 8 switch tables")

    I added a "can't find switch jump table" warning, to stop covering up
    silent failures if add_switch_table() can't find anything.

    That warning found yet another bug in the objtool switch table detection
    logic. For cases 1 and 2 (as described in the comments of
    find_switch_table()), the find_symbol_containing() check doesn't adjust
    the offset for RIP-relative switch jumps.

    Incidentally, this bug was already fixed for case 3 with:

    6f5ec2993b1f ("objtool: Detect RIP-relative switch table references")

    However, that commit missed the fix for cases 1 and 2.

    The different cases are now starting to look more and more alike. So
    fix the bug by consolidating them into a single case, by checking the
    original dynamic jump instruction in the case 3 loop.

    This also simplifies the code and makes it more robust against future
    switch table detection issues -- of which I'm sure there will be many...

    Switch table detection has been the most fragile area of objtool, by
    far. I long for the day when we'll have a GCC plugin for annotating
    switch tables. Linus asked me to delay such a plugin due to the
    flakiness of the plugin infrastructure in older versions of GCC, so this
    rickety code is what we're stuck with for now. At least the code is now
    a little simpler than it was.

    Reported-by: kbuild test robot
    Signed-off-by: Josh Poimboeuf
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Link: http://lkml.kernel.org/r/f400541613d45689086329432f3095119ffbc328.1526674218.git.jpoimboe@redhat.com
    Signed-off-by: Ingo Molnar

    Josh Poimboeuf
     

15 May, 2018

1 commit

  • Typically a switch table can be found by detecting a .rodata access
    followed an indirect jump:

    1969: 4a 8b 0c e5 00 00 00 mov 0x0(,%r12,8),%rcx
    1970: 00
    196d: R_X86_64_32S .rodata+0x438
    1971: e9 00 00 00 00 jmpq 1976
    1972: R_X86_64_PC32 __x86_indirect_thunk_rcx-0x4

    Randy Dunlap reported a case (seen with GCC 4.8) where the .rodata
    access uses RIP-relative addressing:

    19bd: 48 8b 3d 00 00 00 00 mov 0x0(%rip),%rdi # 19c4
    19c0: R_X86_64_PC32 .rodata+0x45c
    19c4: e9 00 00 00 00 jmpq 19c9
    19c5: R_X86_64_PC32 __x86_indirect_thunk_rdi-0x4

    In this case the relocation addend needs to be adjusted accordingly in
    order to find the location of the switch table.

    The fix is for case 3 (as described in the comments), but also make the
    existing case 1 & 2 checks more precise by only adjusting the addend for
    R_X86_64_PC32 relocations.

    This fixes the following warnings:

    drivers/video/fbdev/omap2/omapfb/dss/dispc.o: warning: objtool: dispc_runtime_suspend()+0xbb8: sibling call from callable instruction with modified stack frame
    drivers/video/fbdev/omap2/omapfb/dss/dispc.o: warning: objtool: dispc_runtime_resume()+0xcc5: sibling call from callable instruction with modified stack frame

    Reported-by: Randy Dunlap
    Signed-off-by: Josh Poimboeuf
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Link: http://lkml.kernel.org/r/b6098294fd67afb69af8c47c9883d7a68bf0f8ea.1526305958.git.jpoimboe@redhat.com
    Signed-off-by: Ingo Molnar

    Josh Poimboeuf
     

14 May, 2018

4 commits

  • With GCC 8, some issues were found with the objtool switch table
    detection.

    1) In the .rodata section, immediately after the switch table, there can
    be another object which contains a pointer to the function which had
    the switch statement. In this case objtool wrongly considers the
    function pointer to be part of the switch table. Fix it by:

    a) making sure there are no pointers to the beginning of the
    function; and

    b) making sure there are no gaps in the switch table.

    Only the former was needed, the latter adds additional protection for
    future optimizations.

    2) In find_switch_table(), case 1 and case 2 are missing the check to
    ensure that the .rodata switch table data is anonymous, i.e. that it
    isn't already associated with an ELF symbol. Fix it by adding the
    same find_symbol_containing() check which is used for case 3.

    This fixes the following warnings with GCC 8:

    drivers/block/virtio_blk.o: warning: objtool: virtio_queue_rq()+0x0: stack state mismatch: cfa1=7+8 cfa2=7+72
    net/ipv6/icmp.o: warning: objtool: icmpv6_rcv()+0x0: stack state mismatch: cfa1=7+8 cfa2=7+64
    drivers/usb/core/quirks.o: warning: objtool: quirks_param_set()+0x0: stack state mismatch: cfa1=7+8 cfa2=7+48
    drivers/mtd/nand/raw/nand_hynix.o: warning: objtool: hynix_nand_decode_id()+0x0: stack state mismatch: cfa1=7+8 cfa2=7+24
    drivers/mtd/nand/raw/nand_samsung.o: warning: objtool: samsung_nand_decode_id()+0x0: stack state mismatch: cfa1=7+8 cfa2=7+32
    drivers/gpu/drm/nouveau/nvkm/subdev/top/gk104.o: warning: objtool: gk104_top_oneinit()+0x0: stack state mismatch: cfa1=7+8 cfa2=7+64

    Reported-by: Arnd Bergmann
    Reported-by: kbuild test robot
    Signed-off-by: Josh Poimboeuf
    Acked-by: Peter Zijlstra (Intel)
    Cc: David Laight
    Cc: Greg KH
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Randy Dunlap
    Cc: Thomas Gleixner
    Cc: damian
    Link: http://lkml.kernel.org/r/20180510224849.xwi34d6tzheb5wgw@treble
    Signed-off-by: Ingo Molnar

    Josh Poimboeuf
     
  • GCC 8 moves a lot of unlikely code out of line to "cold" subfunctions in
    .text.unlikely. Properly detect the new subfunctions and treat them as
    extensions of the original functions.

    This fixes a bunch of warnings like:

    kernel/cgroup/cgroup.o: warning: objtool: parse_cgroup_root_flags()+0x33: sibling call from callable instruction with modified stack frame
    kernel/cgroup/cgroup.o: warning: objtool: cgroup_addrm_files()+0x290: sibling call from callable instruction with modified stack frame
    kernel/cgroup/cgroup.o: warning: objtool: cgroup_apply_control_enable()+0x25b: sibling call from callable instruction with modified stack frame
    kernel/cgroup/cgroup.o: warning: objtool: rebind_subsystems()+0x325: sibling call from callable instruction with modified stack frame

    Reported-and-tested-by: damian
    Reported-by: Arnd Bergmann
    Signed-off-by: Josh Poimboeuf
    Acked-by: Peter Zijlstra (Intel)
    Cc: David Laight
    Cc: Greg KH
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Randy Dunlap
    Cc: Thomas Gleixner
    Link: http://lkml.kernel.org/r/0965e7fcfc5f31a276f0c7f298ff770c19b68706.1525923412.git.jpoimboe@redhat.com
    Signed-off-by: Ingo Molnar

    Josh Poimboeuf
     
  • Objtool has some crude logic for detecting static "noreturn" functions
    (aka "dead ends"). This is necessary for being able to correctly follow
    GCC code flow when such functions are called.

    It's remotely possible for two functions to call each other via sibling
    calls. If they don't have RET instructions, objtool's noreturn
    detection logic goes into a recursive loop:

    drivers/char/ipmi/ipmi_ssif.o: warning: objtool: return_hosed_msg()+0x0: infinite recursion (objtool bug!)
    drivers/char/ipmi/ipmi_ssif.o: warning: objtool: deliver_recv_msg()+0x0: infinite recursion (objtool bug!)

    Instead of reporting an error in this case, consider the functions to be
    non-dead-ends.

    Reported-and-tested-by: Randy Dunlap
    Signed-off-by: Josh Poimboeuf
    Acked-by: Peter Zijlstra (Intel)
    Cc: Arnd Bergmann
    Cc: David Laight
    Cc: Greg KH
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: damian
    Link: http://lkml.kernel.org/r/7cc156408c5781a1f62085d352ced1fe39fe2f91.1525923412.git.jpoimboe@redhat.com
    Signed-off-by: Ingo Molnar

    Josh Poimboeuf
     
  • …h/x86/include/asm/insn.h

    The following commit:

    ee6a7354a362: kprobes/x86: Prohibit probing on exception masking instructions

    Modified <asm/insn.h>, adding the insn_masking_exception() function.

    Sync the tooling version of the header to it, to fix this warning:

    Warning: synced file at 'tools/objtool/arch/x86/include/asm/insn.h' differs from latest kernel version at 'arch/x86/include/asm/insn.h'

    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Ricardo Neri <ricardo.neri-calderon@linux.intel.com>
    Cc: Francis Deslauriers <francis.deslauriers@efficios.com>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Alexei Starovoitov <ast@kernel.org>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: "H . Peter Anvin" <hpa@zytor.com>
    Cc: Yonghong Song <yhs@fb.com>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: "David S . Miller" <davem@davemloft.net>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>

    Ingo Molnar
     

17 Apr, 2018

1 commit

  • It may be useful to compile host programs with different flags (e.g.
    hardening). Ensure that objtool picks up the appropriate flags.

    Signed-off-by: Laura Abbott
    Signed-off-by: Josh Poimboeuf
    Cc: Linus Torvalds
    Cc: Masahiro Yamada
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: linux-kbuild@vger.kernel.org
    Link: http://lkml.kernel.org/r/05a360681176f1423cb2fde8faae3a0a0261afc5.1523560825.git.jpoimboe@redhat.com
    Signed-off-by: Ingo Molnar

    Laura Abbott
     

10 Apr, 2018

1 commit

  • I tried building using a freshly built Make (4.2.1-69-g8a731d1), but
    already the objtool build broke with

    orc_dump.c: In function ‘orc_dump’:
    orc_dump.c:106:2: error: ‘elf_getshnum’ is deprecated [-Werror=deprecated-declarations]
    if (elf_getshdrnum(elf, &nr_sections)) {

    Turns out that with that new Make, the backslash was not removed, so cpp
    didn't see a #include directive, grep found nothing, and
    -DLIBELF_USE_DEPRECATED was wrongly put in CFLAGS.

    Now, that new Make behaviour is documented in their NEWS file:

    * WARNING: Backward-incompatibility!
    Number signs (#) appearing inside a macro reference or function invocation
    no longer introduce comments and should not be escaped with backslashes:
    thus a call such as:
    foo := $(shell echo '#')
    is legal. Previously the number sign needed to be escaped, for example:
    foo := $(shell echo '\#')
    Now this latter will resolve to "\#". If you want to write makefiles
    portable to both versions, assign the number sign to a variable:
    C := \#
    foo := $(shell echo '$C')
    This was claimed to be fixed in 3.81, but wasn't, for some reason.
    To detect this change search for 'nocomment' in the .FEATURES variable.

    This also fixes up the two make-cmd instances to replace # with $(pound)
    rather than with \#. There might very well be other places that need
    similar fixup in preparation for whatever future Make release contains
    the above change, but at least this builds an x86_64 defconfig with the
    new make.

    Link: https://bugzilla.kernel.org/show_bug.cgi?id=197847
    Cc: Randy Dunlap
    Signed-off-by: Rasmus Villemoes
    Signed-off-by: Masahiro Yamada

    Rasmus Villemoes
     

27 Mar, 2018

1 commit

  • Since the ORC unwinder was made the default on x86_64, Clang-built
    defconfig kernels have triggered some new objtool warnings:

    drivers/gpu/drm/i915/i915_gpu_error.o: warning: objtool: i915_error_printf()+0x6c: return with modified stack frame
    drivers/gpu/drm/i915/intel_display.o: warning: objtool: pipe_config_err()+0xa6: return with modified stack frame

    The problem is that objtool has never seen clang-built binaries before.

    Shockingly enough, objtool is apparently able to follow the code flow
    mostly fine, except for one instruction sequence. Instead of a LEAVE
    instruction, clang restores RSP and RBP the long way:

    67c: 48 89 ec mov %rbp,%rsp
    67f: 5d pop %rbp

    Teach objtool about this new code sequence.

    Reported-and-test-by: Matthias Kaehlcke
    Signed-off-by: Josh Poimboeuf
    Cc: Linus Torvalds
    Cc: Matthias Kaehlcke
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Link: http://lkml.kernel.org/r/fce88ce81c356eedcae7f00ed349cfaddb3363cc.1521741586.git.jpoimboe@redhat.com
    Signed-off-by: Ingo Molnar

    Josh Poimboeuf
     

07 Mar, 2018

1 commit

  • Fix the objtool build when cross-compiling a 64-bit kernel on a 32-bit
    host. This also simplifies read_retpoline_hints() a bit and makes its
    implementation similar to most of the other annotation reading
    functions.

    Reported-by: Sven Joachim
    Signed-off-by: Josh Poimboeuf
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Fixes: b5bc2231b8ad ("objtool: Add retpoline validation")
    Link: http://lkml.kernel.org/r/2ca46c636c23aa9c9d57d53c75de4ee3ddf7a7df.1520380691.git.jpoimboe@redhat.com
    Signed-off-by: Ingo Molnar

    Josh Poimboeuf
     

28 Feb, 2018

1 commit

  • Continue the switch table detection whack-a-mole. Add a check to
    distinguish KASAN data reads from switch data reads. The switch jump
    tables in .rodata have relocations associated with them.

    This fixes the following warning:

    crypto/asymmetric_keys/x509_cert_parser.o: warning: objtool: x509_note_pkey_algo()+0xa4: sibling call from callable instruction with modified stack frame

    Reported-by: Arnd Bergmann
    Signed-off-by: Josh Poimboeuf
    Signed-off-by: Thomas Gleixner
    Tested-by: Arnd Bergmann
    Cc: Peter Zijlstra
    Link: https://lkml.kernel.org/r/d7c8853022ad47d158cb81e953a40469fc08a95e.1519784382.git.jpoimboe@redhat.com

    Josh Poimboeuf
     

21 Feb, 2018

3 commits

  • David allowed retpolines in .init.text, except for modules, which will
    trip up objtool retpoline validation, fix that.

    Requested-by: David Woodhouse
    Signed-off-by: Peter Zijlstra (Intel)
    Acked-by: Thomas Gleixner
    Acked-by: Josh Poimboeuf
    Cc: Andy Lutomirski
    Cc: Arjan van de Ven
    Cc: Borislav Petkov
    Cc: Dan Williams
    Cc: Dave Hansen
    Cc: David Woodhouse
    Cc: Greg Kroah-Hartman
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Signed-off-by: Ingo Molnar

    Peter Zijlstra
     
  • David requested a objtool validation pass for CONFIG_RETPOLINE=y enabled
    builds, where it validates no unannotated indirect jumps or calls are
    left.

    Add an additional .discard.retpoline_safe section to allow annotating
    the few indirect sites that are required and safe.

    Requested-by: David Woodhouse
    Signed-off-by: Peter Zijlstra (Intel)
    Reviewed-by: David Woodhouse
    Acked-by: Thomas Gleixner
    Acked-by: Josh Poimboeuf
    Cc: Andy Lutomirski
    Cc: Arjan van de Ven
    Cc: Borislav Petkov
    Cc: Dan Williams
    Cc: Dave Hansen
    Cc: Greg Kroah-Hartman
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Signed-off-by: Ingo Molnar

    Peter Zijlstra
     
  • Use the existing global variables instead of passing them around and
    creating duplicate global variables.

    Signed-off-by: Peter Zijlstra (Intel)
    Acked-by: Thomas Gleixner
    Acked-by: Josh Poimboeuf
    Cc: Andy Lutomirski
    Cc: Arjan van de Ven
    Cc: Borislav Petkov
    Cc: Dan Williams
    Cc: Dave Hansen
    Cc: David Woodhouse
    Cc: Greg Kroah-Hartman
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Signed-off-by: Ingo Molnar

    Peter Zijlstra
     

15 Feb, 2018

2 commits

  • Pull x86 PTI and Spectre related fixes and updates from Ingo Molnar:
    "Here's the latest set of Spectre and PTI related fixes and updates:

    Spectre:
    - Add entry code register clearing to reduce the Spectre attack
    surface
    - Update the Spectre microcode blacklist
    - Inline the KVM Spectre helpers to get close to v4.14 performance
    again.
    - Fix indirect_branch_prediction_barrier()
    - Fix/improve Spectre related kernel messages
    - Fix array_index_nospec_mask() asm constraint
    - KVM: fix two MSR handling bugs

    PTI:
    - Fix a paranoid entry PTI CR3 handling bug
    - Fix comments

    objtool:
    - Fix paranoid_entry() frame pointer warning
    - Annotate WARN()-related UD2 as reachable
    - Various fixes
    - Add Add Peter Zijlstra as objtool co-maintainer

    Misc:
    - Various x86 entry code self-test fixes
    - Improve/simplify entry code stack frame generation and handling
    after recent heavy-handed PTI and Spectre changes. (There's two
    more WIP improvements expected here.)
    - Type fix for cache entries

    There's also some low risk non-fix changes I've included in this
    branch to reduce backporting conflicts:

    - rename a confusing x86_cpu field name
    - de-obfuscate the naming of single-TLB flushing primitives"

    * 'x86-pti-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (41 commits)
    x86/entry/64: Fix CR3 restore in paranoid_exit()
    x86/cpu: Change type of x86_cache_size variable to unsigned int
    x86/spectre: Fix an error message
    x86/cpu: Rename cpu_data.x86_mask to cpu_data.x86_stepping
    selftests/x86/mpx: Fix incorrect bounds with old _sigfault
    x86/mm: Rename flush_tlb_single() and flush_tlb_one() to __flush_tlb_one_[user|kernel]()
    x86/speculation: Add dependency
    nospec: Move array_index_nospec() parameter checking into separate macro
    x86/speculation: Fix up array_index_nospec_mask() asm constraint
    x86/debug: Use UD2 for WARN()
    x86/debug, objtool: Annotate WARN()-related UD2 as reachable
    objtool: Fix segfault in ignore_unreachable_insn()
    selftests/x86: Disable tests requiring 32-bit support on pure 64-bit systems
    selftests/x86: Do not rely on "int $0x80" in single_step_syscall.c
    selftests/x86: Do not rely on "int $0x80" in test_mremap_vdso.c
    selftests/x86: Fix build bug caused by the 5lvl test which has been moved to the VM directory
    selftests/x86/pkeys: Remove unused functions
    selftests/x86: Clean up and document sscanf() usage
    selftests/x86: Fix vDSO selftest segfault for vsyscall=none
    x86/entry/64: Remove the unused 'icebp' macro
    ...

    Linus Torvalds
     
  • Peter Zijlstra's patch for converting WARN() to use UD2 triggered a
    bunch of false "unreachable instruction" warnings, which then triggered
    a seg fault in ignore_unreachable_insn().

    The seg fault happened when it tried to dereference a NULL 'insn->func'
    pointer. Thanks to static_cpu_has(), some functions can jump to a
    non-function area in the .altinstr_aux section. That breaks
    ignore_unreachable_insn()'s assumption that it's always inside the
    original function.

    Make sure ignore_unreachable_insn() only follows jumps within the
    current function.

    Reported-by: Borislav Petkov
    Signed-off-by: Josh Poimboeuf
    Signed-off-by: Peter Zijlstra (Intel)
    Cc: Andy Lutomirski
    Cc: Arjan van de Ven
    Cc: Brian Gerst
    Cc: Denys Vlasenko
    Cc: H. Peter Anvin
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: kbuild test robot
    Link: http://lkml.kernel.org/r/bace77a60d5af9b45eddb8f8fb9c776c8de657ef.1518130694.git.jpoimboe@redhat.com
    Signed-off-by: Ingo Molnar

    Josh Poimboeuf
     

09 Feb, 2018

1 commit

  • Linus reported that GCC-7.3 generated a switch-table construct that
    confused objtool. It turns out that, in particular due to KASAN, it is
    possible to have unrelated .rodata usage in between the .rodata setup
    for the switch-table and the following indirect jump.

    The simple linear reverse search from the indirect jump would hit upon
    the KASAN .rodata usage first and fail to find a switch_table,
    resulting in a spurious 'sibling call with modified stack frame'
    warning.

    Fix this by creating a 'jump-stack' which we can 'unwind' during
    reversal, thereby skipping over much of the in-between code.

    This is not fool proof by any means, but is sufficient to make the
    known cases work. Future work would be to construct more comprehensive
    flow analysis code.

    Reported-and-tested-by: Linus Torvalds
    Signed-off-by: Peter Zijlstra (Intel)
    Acked-by: Josh Poimboeuf
    Cc: Borislav Petkov
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Link: http://lkml.kernel.org/r/20180208130232.GF25235@hirez.programming.kicks-ass.net
    Signed-off-by: Ingo Molnar

    Peter Zijlstra
     

05 Feb, 2018

1 commit

  • Pull spectre/meltdown updates from Thomas Gleixner:
    "The next round of updates related to melted spectrum:

    - The initial set of spectre V1 mitigations:

    - Array index speculation blocker and its usage for syscall,
    fdtable and the n180211 driver.

    - Speculation barrier and its usage in user access functions

    - Make indirect calls in KVM speculation safe

    - Blacklisting of known to be broken microcodes so IPBP/IBSR are not
    touched.

    - The initial IBPB support and its usage in context switch

    - The exposure of the new speculation MSRs to KVM guests.

    - A fix for a regression in x86/32 related to the cpu entry area

    - Proper whitelisting for known to be safe CPUs from the mitigations.

    - objtool fixes to deal proper with retpolines and alternatives

    - Exclude __init functions from retpolines which speeds up the boot
    process.

    - Removal of the syscall64 fast path and related cleanups and
    simplifications

    - Removal of the unpatched paravirt mode which is yet another source
    of indirect unproteced calls.

    - A new and undisputed version of the module mismatch warning

    - A couple of cleanup and correctness fixes all over the place

    Yet another step towards full mitigation. There are a few things still
    missing like the RBS underflow mitigation for Skylake and other small
    details, but that's being worked on.

    That said, I'm taking a belated christmas vacation for a week and hope
    that everything is magically solved when I'm back on Feb 12th"

    * 'x86-pti-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (37 commits)
    KVM/SVM: Allow direct access to MSR_IA32_SPEC_CTRL
    KVM/VMX: Allow direct access to MSR_IA32_SPEC_CTRL
    KVM/VMX: Emulate MSR_IA32_ARCH_CAPABILITIES
    KVM/x86: Add IBPB support
    KVM/x86: Update the reverse_cpuid list to include CPUID_7_EDX
    x86/speculation: Fix typo IBRS_ATT, which should be IBRS_ALL
    x86/pti: Mark constant arrays as __initconst
    x86/spectre: Simplify spectre_v2 command line parsing
    x86/retpoline: Avoid retpolines for built-in __init functions
    x86/kvm: Update spectre-v1 mitigation
    KVM: VMX: make MSR bitmaps per-VCPU
    x86/paravirt: Remove 'noreplace-paravirt' cmdline option
    x86/speculation: Use Indirect Branch Prediction Barrier in context switch
    x86/cpuid: Fix up "virtual" IBRS/IBPB/STIBP feature bits on Intel
    x86/spectre: Fix spelling mistake: "vunerable"-> "vulnerable"
    x86/spectre: Report get_user mitigation for spectre_v1
    nl80211: Sanitize array index in parse_txq_params
    vfs, fdtable: Prevent bounds-check bypass via speculative execution
    x86/syscall: Sanitize syscall table de-references under speculation
    x86/get_user: Use pointer masking to limit speculation
    ...

    Linus Torvalds
     

04 Feb, 2018

1 commit

  • Pull hardened usercopy whitelisting from Kees Cook:
    "Currently, hardened usercopy performs dynamic bounds checking on slab
    cache objects. This is good, but still leaves a lot of kernel memory
    available to be copied to/from userspace in the face of bugs.

    To further restrict what memory is available for copying, this creates
    a way to whitelist specific areas of a given slab cache object for
    copying to/from userspace, allowing much finer granularity of access
    control.

    Slab caches that are never exposed to userspace can declare no
    whitelist for their objects, thereby keeping them unavailable to
    userspace via dynamic copy operations. (Note, an implicit form of
    whitelisting is the use of constant sizes in usercopy operations and
    get_user()/put_user(); these bypass all hardened usercopy checks since
    these sizes cannot change at runtime.)

    This new check is WARN-by-default, so any mistakes can be found over
    the next several releases without breaking anyone's system.

    The series has roughly the following sections:
    - remove %p and improve reporting with offset
    - prepare infrastructure and whitelist kmalloc
    - update VFS subsystem with whitelists
    - update SCSI subsystem with whitelists
    - update network subsystem with whitelists
    - update process memory with whitelists
    - update per-architecture thread_struct with whitelists
    - update KVM with whitelists and fix ioctl bug
    - mark all other allocations as not whitelisted
    - update lkdtm for more sensible test overage"

    * tag 'usercopy-v4.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux: (38 commits)
    lkdtm: Update usercopy tests for whitelisting
    usercopy: Restrict non-usercopy caches to size 0
    kvm: x86: fix KVM_XEN_HVM_CONFIG ioctl
    kvm: whitelist struct kvm_vcpu_arch
    arm: Implement thread_struct whitelist for hardened usercopy
    arm64: Implement thread_struct whitelist for hardened usercopy
    x86: Implement thread_struct whitelist for hardened usercopy
    fork: Provide usercopy whitelisting for task_struct
    fork: Define usercopy region in thread_stack slab caches
    fork: Define usercopy region in mm_struct slab caches
    net: Restrict unwhitelisted proto caches to size 0
    sctp: Copy struct sctp_sock.autoclose to userspace using put_user()
    sctp: Define usercopy region in SCTP proto slab cache
    caif: Define usercopy region in caif proto slab cache
    ip: Define usercopy region in IP proto slab cache
    net: Define usercopy region in struct proto slab cache
    scsi: Define usercopy region in scsi_sense_cache slab cache
    cifs: Define usercopy region in cifs_request slab cache
    vxfs: Define usercopy region in vxfs_inode slab cache
    ufs: Define usercopy region in ufs_inode_cache slab cache
    ...

    Linus Torvalds
     

30 Jan, 2018

3 commits

  • With the following fix:

    2a0098d70640 ("objtool: Fix seg fault with gold linker")

    ... a seg fault was avoided, but the original seg fault condition in
    objtool wasn't fixed. Replace the seg fault with an error message.

    Suggested-by: Ingo Molnar
    Signed-off-by: Josh Poimboeuf
    Cc: Andy Lutomirski
    Cc: Borislav Petkov
    Cc: Dave Hansen
    Cc: David Woodhouse
    Cc: Greg Kroah-Hartman
    Cc: Guenter Roeck
    Cc: H. Peter Anvin
    Cc: Juergen Gross
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Link: http://lkml.kernel.org/r/dc4585a70d6b975c99fc51d1957ccdde7bd52f3a.1517284349.git.jpoimboe@redhat.com
    Signed-off-by: Ingo Molnar

    Josh Poimboeuf
     
  • Now that the previous patch gave objtool the ability to read retpoline
    alternatives, it shows a new warning:

    arch/x86/entry/entry_64.o: warning: objtool: .entry_trampoline: don't know how to handle alternatives at end of section

    This is due to the JMP_NOSPEC in entry_SYSCALL_64_trampoline().

    Previously, objtool ignored this situation because it wasn't needed, and
    it would have required a bit of extra code. Now that this case exists,
    add proper support for it.

    Signed-off-by: Josh Poimboeuf
    Cc: Andy Lutomirski
    Cc: Borislav Petkov
    Cc: Dave Hansen
    Cc: David Woodhouse
    Cc: Greg Kroah-Hartman
    Cc: Guenter Roeck
    Cc: H. Peter Anvin
    Cc: Juergen Gross
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Link: http://lkml.kernel.org/r/2a30a3c2158af47d891a76e69bb1ef347e0443fd.1517284349.git.jpoimboe@redhat.com
    Signed-off-by: Ingo Molnar

    Josh Poimboeuf
     
  • Currently objtool requires all retpolines to be:

    a) patched in with alternatives; and

    b) annotated with ANNOTATE_NOSPEC_ALTERNATIVE.

    If you forget to do both of the above, objtool segfaults trying to
    dereference a NULL 'insn->call_dest' pointer.

    Avoid that situation and print a more helpful error message:

    quirks.o: warning: objtool: efi_delete_dummy_variable()+0x99: unsupported intra-function call
    quirks.o: warning: objtool: If this is a retpoline, please patch it in with alternatives and annotate it with ANNOTATE_NOSPEC_ALTERNATIVE.

    Future improvements can be made to make objtool smarter with respect to
    retpolines, but this is a good incremental improvement for now.

    Reported-and-tested-by: Guenter Roeck
    Signed-off-by: Josh Poimboeuf
    Cc: Andy Lutomirski
    Cc: Borislav Petkov
    Cc: Dave Hansen
    Cc: David Woodhouse
    Cc: Greg Kroah-Hartman
    Cc: H. Peter Anvin
    Cc: Juergen Gross
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Link: http://lkml.kernel.org/r/819e50b6d9c2e1a22e34c1a636c0b2057cc8c6e5.1517284349.git.jpoimboe@redhat.com
    Signed-off-by: Ingo Molnar

    Josh Poimboeuf
     

18 Jan, 2018

1 commit

  • Pull x86 pti bits and fixes from Thomas Gleixner:
    "This last update contains:

    - An objtool fix to prevent a segfault with the gold linker by
    changing the invocation order. That's not just for gold, it's a
    general robustness improvement.

    - An improved error message for objtool which spares tearing hairs.

    - Make KASAN fail loudly if there is not enough memory instead of
    oopsing at some random place later

    - RSB fill on context switch to prevent RSB underflow and speculation
    through other units.

    - Make the retpoline/RSB functionality work reliably for both Intel
    and AMD

    - Add retpoline to the module version magic so mismatch can be
    detected

    - A small (non-fix) update for cpufeatures which prevents cpu feature
    clashing for the upcoming extra mitigation bits to ease
    backporting"

    * 'x86-pti-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    module: Add retpoline tag to VERMAGIC
    x86/cpufeature: Move processor tracing out of scattered features
    objtool: Improve error message for bad file argument
    objtool: Fix seg fault with gold linker
    x86/retpoline: Add LFENCE to the retpoline/RSB filling RSB macros
    x86/retpoline: Fill RSB on context switch for affected CPUs
    x86/kasan: Panic if there is not enough memory to boot

    Linus Torvalds
     

16 Jan, 2018

2 commits

  • If a nonexistent file is supplied to objtool, it complains with a
    non-helpful error:

    open: No such file or directory

    Improve it to:

    objtool: Can't open 'foo': No such file or directory

    Reported-by: Markus
    Signed-off-by: Josh Poimboeuf
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Link: http://lkml.kernel.org/r/406a3d00a21225eee2819844048e17f68523ccf6.1516025651.git.jpoimboe@redhat.com
    Signed-off-by: Ingo Molnar

    Josh Poimboeuf
     
  • In preparation for refactoring the usercopy checks to pass offset to
    the hardened usercopy report, this renames report_usercopy() to the
    more accurate usercopy_abort(), marks it as noreturn because it is,
    adds a hopefully helpful comment for anyone investigating such reports,
    makes the function available to the slab allocators, and adds new "detail"
    and "offset" arguments.

    Signed-off-by: Kees Cook

    Kees Cook
     

15 Jan, 2018

1 commit

  • Pull x86 pti updates from Thomas Gleixner:
    "This contains:

    - a PTI bugfix to avoid setting reserved CR3 bits when PCID is
    disabled. This seems to cause issues on a virtual machine at least
    and is incorrect according to the AMD manual.

    - a PTI bugfix which disables the perf BTS facility if PTI is
    enabled. The BTS AUX buffer is not globally visible and causes the
    CPU to fault when the mapping disappears on switching CR3 to user
    space. A full fix which restores BTS on PTI is non trivial and will
    be worked on.

    - PTI bugfixes for EFI and trusted boot which make sure that the user
    space visible page table entries have the NX bit cleared

    - removal of dead code in the PTI pagetable setup functions

    - add PTI documentation

    - add a selftest for vsyscall to verify that the kernel actually
    implements what it advertises.

    - a sysfs interface to expose vulnerability and mitigation
    information so there is a coherent way for users to retrieve the
    status.

    - the initial spectre_v2 mitigations, aka retpoline:

    + The necessary ASM thunk and compiler support

    + The ASM variants of retpoline and the conversion of affected ASM
    code

    + Make LFENCE serializing on AMD so it can be used as speculation
    trap

    + The RSB fill after vmexit

    - initial objtool support for retpoline

    As I said in the status mail this is the most of the set of patches
    which should go into 4.15 except two straight forward patches still on
    hold:

    - the retpoline add on of LFENCE which waits for ACKs

    - the RSB fill after context switch

    Both should be ready to go early next week and with that we'll have
    covered the major holes of spectre_v2 and go back to normality"

    * 'x86-pti-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (28 commits)
    x86,perf: Disable intel_bts when PTI
    security/Kconfig: Correct the Documentation reference for PTI
    x86/pti: Fix !PCID and sanitize defines
    selftests/x86: Add test_vsyscall
    x86/retpoline: Fill return stack buffer on vmexit
    x86/retpoline/irq32: Convert assembler indirect jumps
    x86/retpoline/checksum32: Convert assembler indirect jumps
    x86/retpoline/xen: Convert Xen hypercall indirect jumps
    x86/retpoline/hyperv: Convert assembler indirect jumps
    x86/retpoline/ftrace: Convert ftrace assembler indirect jumps
    x86/retpoline/entry: Convert entry assembler indirect jumps
    x86/retpoline/crypto: Convert crypto assembler indirect jumps
    x86/spectre: Add boot time option to select Spectre v2 mitigation
    x86/retpoline: Add initial retpoline support
    objtool: Allow alternatives to be ignored
    objtool: Detect jumps to retpoline thunks
    x86/pti: Make unpoison of pgd for trusted boot work for real
    x86/alternatives: Fix optimize_nops() checking
    sysfs/cpu: Fix typos in vulnerability documentation
    x86/cpu/AMD: Use LFENCE_RDTSC in preference to MFENCE_RDTSC
    ...

    Linus Torvalds
     

14 Jan, 2018

1 commit

  • patch(1) loses the x bit. So if a user follows our patching
    instructions in Documentation/admin-guide/README.rst, their kernel will
    not compile.

    Fixes: 3bd51c5a371de ("objtool: Move kernel headers/code sync check to a script")
    Reported-by: Nicolas Bock
    Reported-by Joakim Tjernlund
    Cc: Ingo Molnar
    Cc: Josh Poimboeuf
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrew Morton