commit f0d0a93b0e81278e86c7d81c25a54ac4f4b739d2
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Tue Jan 23 19:50:18 2018 +0100

    Linux 4.4.113

commit 38bc402237f8cb68c5f3ab0292c6d5537af38847
Author: Jonas Gorski <jonas.gorski@gmail.com>
Date:   Sun Oct 29 16:27:21 2017 +0100

    MIPS: AR7: ensure the port type's FCR value is used
    
    commit 0a5191efe06b5103909206e4fbcff81d30283f8e upstream.
    
    Since commit aef9a7bd9b67 ("serial/uart/8250: Add tunable RX interrupt
    trigger I/F of FIFO buffers"), the port's default FCR value isn't used
    in serial8250_do_set_termios anymore, but copied over once in
    serial8250_config_port and then modified as needed.
    
    Unfortunately, serial8250_config_port will never be called if the port
    is shared between kernel and userspace, and the port's flag doesn't have
    UPF_BOOT_AUTOCONF, which would trigger a serial8250_config_port as well.
    
    This causes garbled output from userspace:
    
    [    5.220000] random: procd urandom read with 49 bits of entropy available
    ers
       [kee
    
    Fix this by forcing it to be configured on boot, resulting in the
    expected output:
    
    [    5.250000] random: procd urandom read with 50 bits of entropy available
    Press the [f] key and hit [enter] to enter failsafe mode
    Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level
    
    Fixes: aef9a7bd9b67 ("serial/uart/8250: Add tunable RX interrupt trigger I/F of FIFO buffers")
    Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Yoshihiro YUNOMAE <yoshihiro.yunomae.ez@hitachi.com>
    Cc: Florian Fainelli <f.fainelli@gmail.com>
    Cc: Nicolas Schichan <nschichan@freebox.fr>
    Cc: linux-mips@linux-mips.org
    Cc: linux-serial@vger.kernel.org
    Patchwork: https://patchwork.linux-mips.org/patch/17544/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Cc: James Hogan <jhogan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 11e619414b69b7f1e47baac72c5be589d86e5393
Author: Andi Kleen <ak@linux.intel.com>
Date:   Wed Jan 17 14:53:28 2018 -0800

    x86/retpoline: Optimize inline assembler for vmexit_fill_RSB
    
    commit 3f7d875566d8e79c5e0b2c9a413e91b2c29e0854 upstream.
    
    The generated assembler for the C fill RSB inline asm operations has
    several issues:
    
    - The C code sets up the loop register, which is then immediately
      overwritten in __FILL_RETURN_BUFFER with the same value again.
    
    - The C code also passes in the iteration count in another register, which
      is not used at all.
    
    Remove these two unnecessary operations. Just rely on the single constant
    passed to the macro for the iterations.
    
    Signed-off-by: Andi Kleen <ak@linux.intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: David Woodhouse <dwmw@amazon.co.uk>
    Cc: dave.hansen@intel.com
    Cc: gregkh@linuxfoundation.org
    Cc: torvalds@linux-foundation.org
    Cc: arjan@linux.intel.com
    Link: https://lkml.kernel.org/r/20180117225328.15414-1-andi@firstfloor.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 58f96ac5dba6b66d9fb4e0072e0e01df0360a43f
Author: zhenwei.pi <zhenwei.pi@youruncloud.com>
Date:   Thu Jan 18 09:04:52 2018 +0800

    x86/pti: Document fix wrong index
    
    commit 98f0fceec7f84d80bc053e49e596088573086421 upstream.
    
    In section <2. Runtime Cost>, fix wrong index.
    
    Signed-off-by: zhenwei.pi <zhenwei.pi@youruncloud.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: dave.hansen@linux.intel.com
    Link: https://lkml.kernel.org/r/1516237492-27739-1-git-send-email-zhenwei.pi@youruncloud.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6cb73eb8045157ea280f0a047777ea1f56547375
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Fri Jan 19 01:15:20 2018 +0900

    kprobes/x86: Disable optimizing on the function jumps to indirect thunk
    
    commit c86a32c09f8ced67971a2310e3b0dda4d1749007 upstream.
    
    Since indirect jump instructions will be replaced by jump
    to __x86_indirect_thunk_*, those jmp instruction must be
    treated as an indirect jump. Since optprobe prohibits to
    optimize probes in the function which uses an indirect jump,
    it also needs to find out the function which jump to
    __x86_indirect_thunk_* and disable optimization.
    
    Add a check that the jump target address is between the
    __indirect_thunk_start/end when optimizing kprobe.
    
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: David Woodhouse <dwmw@amazon.co.uk>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ananth N Mavinakayanahalli <ananth@linux.vnet.ibm.com>
    Cc: Arjan van de Ven <arjan@linux.intel.com>
    Cc: Greg Kroah-Hartman <gregkh@linux-foundation.org>
    Link: https://lkml.kernel.org/r/151629212062.10241.6991266100233002273.stgit@devbox
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9b8bd0d3586842716f5673e7a0922a9c9e1fcbfd
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Fri Jan 19 01:14:51 2018 +0900

    kprobes/x86: Blacklist indirect thunk functions for kprobes
    
    commit c1804a236894ecc942da7dc6c5abe209e56cba93 upstream.
    
    Mark __x86_indirect_thunk_* functions as blacklist for kprobes
    because those functions can be called from anywhere in the kernel
    including blacklist functions of kprobes.
    
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: David Woodhouse <dwmw@amazon.co.uk>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ananth N Mavinakayanahalli <ananth@linux.vnet.ibm.com>
    Cc: Arjan van de Ven <arjan@linux.intel.com>
    Cc: Greg Kroah-Hartman <gregkh@linux-foundation.org>
    Link: https://lkml.kernel.org/r/151629209111.10241.5444852823378068683.stgit@devbox
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 799dc737680a8074a0c7c2d3426b85f4c439377f
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Fri Jan 19 01:14:21 2018 +0900

    retpoline: Introduce start/end markers of indirect thunk
    
    commit 736e80a4213e9bbce40a7c050337047128b472ac upstream.
    
    Introduce start/end markers of __x86_indirect_thunk_* functions.
    To make it easy, consolidate .text.__x86.indirect_thunk.* sections
    to one .text.__x86.indirect_thunk section and put it in the
    end of kernel text section and adds __indirect_thunk_start/end
    so that other subsystem (e.g. kprobes) can identify it.
    
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: David Woodhouse <dwmw@amazon.co.uk>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ananth N Mavinakayanahalli <ananth@linux.vnet.ibm.com>
    Cc: Arjan van de Ven <arjan@linux.intel.com>
    Cc: Greg Kroah-Hartman <gregkh@linux-foundation.org>
    Link: https://lkml.kernel.org/r/151629206178.10241.6828804696410044771.stgit@devbox
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f59e7ce17ba327245c8feb312d447b09d3b98eba
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Thu Jan 18 16:28:26 2018 +0100

    x86/mce: Make machine check speculation protected
    
    commit 6f41c34d69eb005e7848716bbcafc979b35037d5 upstream.
    
    The machine check idtentry uses an indirect branch directly from the low
    level code. This evades the speculation protection.
    
    Replace it by a direct call into C code and issue the indirect call there
    so the compiler can apply the proper speculation protection.
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by:Borislav Petkov <bp@alien8.de>
    Reviewed-by: David Woodhouse <dwmw@amazon.co.uk>
    Niced-by: Peter Zijlstra <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/alpine.DEB.2.20.1801181626290.1847@nanos
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ff535919c1366b0218113f95c447d92c3aac0c1f
Author: Nicholas Piggin <npiggin@gmail.com>
Date:   Tue Nov 1 12:46:19 2016 +1100

    kbuild: modversions for EXPORT_SYMBOL() for asm
    
    commit 4efca4ed05cbdfd13ec3e8cb623fb77d6e4ab187 upstream.
    
    Allow architectures to create asm/asm-prototypes.h file that
    provides C prototypes for exported asm functions, which enables
    proper CRC versions to be generated for them.
    
    Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
    Signed-off-by: Michal Marek <mmarek@suse.com>
    [jkosina@suse.cz: folded cc6acc11cad1 fixup in as well ]
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6b1c99e275c034e4650044a7bb1a0bc274e1eb45
Author: Tom Lendacky <thomas.lendacky@amd.com>
Date:   Tue Dec 26 23:43:54 2017 -0600

    x86/cpu, x86/pti: Do not enable PTI on AMD processors
    
    commit 694d99d40972f12e59a3696effee8a376b79d7c8 upstream.
    
    AMD processors are not subject to the types of attacks that the kernel
    page table isolation feature protects against.  The AMD microarchitecture
    does not allow memory references, including speculative references, that
    access higher privileged data when running in a lesser privileged mode
    when that access would result in a page fault.
    
    Disable page table isolation by default on AMD processors by not setting
    the X86_BUG_CPU_INSECURE feature, which controls whether X86_FEATURE_PTI
    is set.
    
    Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Borislav Petkov <bp@suse.de>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20171227054354.20369.94587.stgit@tlendack-t1.amdoffice.net
    Cc: Nick Lowe <nick.lowe@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5ecd5c8388f060a02a6b97d9b99d9ea885903568
Author: Marc Zyngier <marc.zyngier@arm.com>
Date:   Tue Jan 16 10:23:47 2018 +0000

    arm64: KVM: Fix SMCCC handling of unimplemented SMC/HVC calls
    
    commit acfb3b883f6d6a4b5d27ad7fdded11f6a09ae6dd upstream.
    
    KVM doesn't follow the SMCCC when it comes to unimplemented calls,
    and inject an UNDEF instead of returning an error. Since firmware
    calls are now used for security mitigation, they are becoming more
    common, and the undef is counter productive.
    
    Instead, let's follow the SMCCC which states that -1 must be returned
    to the caller when getting an unknown function number.
    
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7e7b086ef2fec6b1bca061a3082fc1c2701999d5
Author: Dennis Yang <dennisyang@qnap.com>
Date:   Tue Dec 12 18:21:40 2017 +0800

    dm thin metadata: THIN_MAX_CONCURRENT_LOCKS should be 6
    
    commit 490ae017f54e55bde382d45ea24bddfb6d1a0aaf upstream.
    
    For btree removal, there is a corner case that a single thread
    could takes 6 locks which is more than THIN_MAX_CONCURRENT_LOCKS(5)
    and leads to deadlock.
    
    A btree removal might eventually call
    rebalance_children()->rebalance3() to rebalance entries of three
    neighbor child nodes when shadow_spine has already acquired two
    write locks. In rebalance3(), it tries to shadow and acquire the
    write locks of all three child nodes. However, shadowing a child
    node requires acquiring a read lock of the original child node and
    a write lock of the new block. Although the read lock will be
    released after block shadowing, shadowing the third child node
    in rebalance3() could still take the sixth lock.
    (2 write locks for shadow_spine +
     2 write locks for the first two child nodes's shadow +
     1 write lock for the last child node's shadow +
     1 read lock for the last child node)
    
    Signed-off-by: Dennis Yang <dennisyang@qnap.com>
    Acked-by: Joe Thornber <thornber@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9c7755af771ac1b4ef1fc0e552749aa80d23af32
Author: Joe Thornber <thornber@redhat.com>
Date:   Wed Dec 20 09:56:06 2017 +0000

    dm btree: fix serious bug in btree_split_beneath()
    
    commit bc68d0a43560e950850fc69b58f0f8254b28f6d6 upstream.
    
    When inserting a new key/value pair into a btree we walk down the spine of
    btree nodes performing the following 2 operations:
    
      i) space for a new entry
      ii) adjusting the first key entry if the new key is lower than any in the node.
    
    If the _root_ node is full, the function btree_split_beneath() allocates 2 new
    nodes, and redistibutes the root nodes entries between them.  The root node is
    left with 2 entries corresponding to the 2 new nodes.
    
    btree_split_beneath() then adjusts the spine to point to one of the two new
    children.  This means the first key is never adjusted if the new key was lower,
    ie. operation (ii) gets missed out.  This can result in the new key being
    'lost' for a period; until another low valued key is inserted that will uncover
    it.
    
    This is a serious bug, and quite hard to make trigger in normal use.  A
    reproducing test case ("thin create devices-in-reverse-order") is
    available as part of the thin-provision-tools project:
      https://github.com/jthornber/thin-provisioning-tools/blob/master/functional-tests/device-mapper/dm-tests.scm#L593
    
    Fix the issue by changing btree_split_beneath() so it no longer adjusts
    the spine.  Instead it unlocks both the new nodes, and lets the main
    loop in btree_insert_raw() relock the appropriate one and make any
    neccessary adjustments.
    
    Reported-by: Monty Pavel <monty_pavel@sina.com>
    Signed-off-by: Joe Thornber <thornber@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b7bd013a3fe033280bcc58903c51f087e4989229
Author: Xinyu Lin <xinyu0123@gmail.com>
Date:   Sun Dec 17 20:13:39 2017 +0800

    libata: apply MAX_SEC_1024 to all LITEON EP1 series devices
    
    commit db5ff909798ef0099004ad50a0ff5fde92426fd1 upstream.
    
    LITEON EP1 has the same timeout issues as CX1 series devices.
    
    Revert max_sectors to the value of 1024.
    
    Fixes: e0edc8c54646 ("libata: apply MAX_SEC_1024 to all CX1-JB*-HP devices")
    Signed-off-by: Xinyu Lin <xinyu0123@gmail.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 082dfe6141f3a8adab45c7def0d1b1da17545f7c
Author: Stephane Grosjean <s.grosjean@peak-system.com>
Date:   Mon Jan 15 16:31:19 2018 +0100

    can: peak: fix potential bug in packet fragmentation
    
    commit d8a243af1a68395e07ac85384a2740d4134c67f4 upstream.
    
    In some rare conditions when running one PEAK USB-FD interface over
    a non high-speed USB controller, one useless USB fragment might be sent.
    This patch fixes the way a USB command is fragmented when its length is
    greater than 64 bytes and when the underlying USB controller is not a
    high-speed one.
    
    Signed-off-by: Stephane Grosjean <s.grosjean@peak-system.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2d5523bf47b4326ff1279613bfe69982bc4675c1
Author: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Date:   Thu Jan 4 17:53:12 2018 +0100

    ARM: dts: kirkwood: fix pin-muxing of MPP7 on OpenBlocks A7
    
    commit 56aeb07c914a616ab84357d34f8414a69b140cdf upstream.
    
    MPP7 is currently muxed as "gpio", but this function doesn't exist for
    MPP7, only "gpo" is available. This causes the following error:
    
    kirkwood-pinctrl f1010000.pin-controller: unsupported function gpio on pin mpp7
    pinctrl core: failed to register map default (6): invalid type given
    kirkwood-pinctrl f1010000.pin-controller: error claiming hogs: -22
    kirkwood-pinctrl f1010000.pin-controller: could not claim hogs: -22
    kirkwood-pinctrl f1010000.pin-controller: unable to register pinctrl driver
    kirkwood-pinctrl: probe of f1010000.pin-controller failed with error -22
    
    So the pinctrl driver is not probed, all device drivers (including the
    UART driver) do a -EPROBE_DEFER, and therefore the system doesn't
    really boot (well, it boots, but with no UART, and no devices that
    require pin-muxing).
    
    Back when the Device Tree file for this board was introduced, the
    definition was already wrong. The pinctrl driver also always described
    as "gpo" this function for MPP7. However, between Linux 4.10 and 4.11,
    a hog pin failing to be muxed was turned from a simple warning to a
    hard error that caused the entire pinctrl driver probe to bail
    out. This is probably the result of commit 6118714275f0a ("pinctrl:
    core: Fix pinctrl_register_and_init() with pinctrl_enable()").
    
    This commit fixes the Device Tree to use the proper "gpo" function for
    MPP7, which fixes the boot of OpenBlocks A7, which was broken since
    Linux 4.11.
    
    Fixes: f24b56cbcd9d ("ARM: kirkwood: add support for OpenBlocks A7 platform")
    Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d5276c0137137dfa89402c52eceeb406f4950404
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Fri Jan 12 11:12:05 2018 +0100

    phy: work around 'phys' references to usb-nop-xceiv devices
    
    commit b7563e2796f8b23c98afcfea7363194227fa089d upstream.
    
    Stefan Wahren reports a problem with a warning fix that was merged
    for v4.15: we had lots of device nodes with a 'phys' property pointing
    to a device node that is not compliant with the binding documented in
    Documentation/devicetree/bindings/phy/phy-bindings.txt
    
    This generally works because USB HCD drivers that support both the generic
    phy subsystem and the older usb-phy subsystem ignore most errors from
    phy_get() and related calls and then use the usb-phy driver instead.
    
    However, it turns out that making the usb-nop-xceiv device compatible with
    the generic-phy binding changes the phy_get() return code from -EINVAL to
    -EPROBE_DEFER, and the dwc2 usb controller driver for bcm2835 now returns
    -EPROBE_DEFER from its probe function rather than ignoring the failure,
    breaking all USB support on raspberry-pi when CONFIG_GENERIC_PHY is
    enabled. The same code is used in the dwc3 driver and the usb_add_hcd()
    function, so a reasonable assumption would be that many other platforms
    are affected as well.
    
    I have reviewed all the related patches and concluded that "usb-nop-xceiv"
    is the only USB phy that is affected by the change, and since it is by far
    the most commonly referenced phy, all the other USB phy drivers appear
    to be used in ways that are are either safe in DT (they don't use the
    'phys' property), or in the driver (they already ignore -EPROBE_DEFER
    from generic-phy when usb-phy is available).
    
    To work around the problem, this adds a special case to _of_phy_get()
    so we ignore any PHY node that is compatible with "usb-nop-xceiv",
    as we know that this can never load no matter how much we defer. In the
    future, we might implement a generic-phy driver for "usb-nop-xceiv"
    and then remove this workaround.
    
    Since we generally want older kernels to also want to work with the
    fixed devicetree files, it would be good to backport the patch into
    stable kernels as well (3.13+ are possibly affected), even though they
    don't contain any of the patches that may have caused regressions.
    
    Fixes: 014d6da6cb25 ARM: dts: bcm283x: Fix DTC warnings about missing phy-cells
    Fixes: c5bbf358b790 arm: dts: nspire: Add missing #phy-cells to usb-nop-xceiv
    Fixes: 44e5dced2ef6 arm: dts: marvell: Add missing #phy-cells to usb-nop-xceiv
    Fixes: f568f6f554b8 ARM: dts: omap: Add missing #phy-cells to usb-nop-xceiv
    Fixes: d745d5f277bf ARM: dts: imx51-zii-rdu1: Add missing #phy-cells to usb-nop-xceiv
    Fixes: 915fbe59cbf2 ARM: dts: imx: Add missing #phy-cells to usb-nop-xceiv
    Link: https://marc.info/?l=linux-usb&m=151518314314753&w=2
    Link: https://patchwork.kernel.org/patch/10158145/
    Cc: Felipe Balbi <balbi@kernel.org>
    Cc: Eric Anholt <eric@anholt.net>
    Tested-by: Stefan Wahren <stefan.wahren@i2se.com>
    Acked-by: Rob Herring <robh@kernel.org>
    Tested-by: Hans Verkuil <hans.verkuil@cisco.com>
    Acked-by: Kishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cf3625004e6c9093dcaa233c6f553b7eba269b50
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Thu Jan 18 15:53:10 2018 -0500

    tracing: Fix converting enum's from the map in trace_event_eval_update()
    
    commit 1ebe1eaf2f02784921759992ae1fde1a9bec8fd0 upstream.
    
    Since enums do not get converted by the TRACE_EVENT macro into their values,
    the event format displaces the enum name and not the value. This breaks
    tools like perf and trace-cmd that need to interpret the raw binary data. To
    solve this, an enum map was created to convert these enums into their actual
    numbers on boot up. This is done by TRACE_EVENTS() adding a
    TRACE_DEFINE_ENUM() macro.
    
    Some enums were not being converted. This was caused by an optization that
    had a bug in it.
    
    All calls get checked against this enum map to see if it should be converted
    or not, and it compares the call's system to the system that the enum map
    was created under. If they match, then they call is processed.
    
    To cut down on the number of iterations needed to find the maps with a
    matching system, since calls and maps are grouped by system, when a match is
    made, the index into the map array is saved, so that the next call, if it
    belongs to the same system as the previous call, could start right at that
    array index and not have to scan all the previous arrays.
    
    The problem was, the saved index was used as the variable to know if this is
    a call in a new system or not. If the index was zero, it was assumed that
    the call is in a new system and would keep incrementing the saved index
    until it found a matching system. The issue arises when the first matching
    system was at index zero. The next map, if it belonged to the same system,
    would then think it was the first match and increment the index to one. If
    the next call belong to the same system, it would begin its search of the
    maps off by one, and miss the first enum that should be converted. This left
    a single enum not converted properly.
    
    Also add a comment to describe exactly what that index was for. It took me a
    bit too long to figure out what I was thinking when debugging this issue.
    
    Link: http://lkml.kernel.org/r/717BE572-2070-4C1E-9902-9F2E0FEDA4F8@oracle.com
    
    Fixes: 0c564a538aa93 ("tracing: Add TRACE_DEFINE_ENUM() macro to map enums to their values")
    Reported-by: Chuck Lever <chuck.lever@oracle.com>
    Teste-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b6306f3fdcaa21b1544433de50004d13ce59042b
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Jan 8 17:15:06 2018 -0800

    Input: twl4030-vibra - fix sibling-node lookup
    
    commit 5b189201993ab03001a398de731045bfea90c689 upstream.
    
    A helper purported to look up a child node based on its name was using
    the wrong of-helper and ended up prematurely freeing the parent of-node
    while searching the whole device tree depth-first starting at the parent
    node.
    
    Fixes: 64b9e4d803b1 ("input: twl4030-vibra: Support for DT booted kernel")
    Fixes: e661d0a04462 ("Input: twl4030-vibra - fix ERROR: Bad of_node_put() warning")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a89e1ac9b0da065fa95ddd33030dcd38231f2b27
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Jan 8 17:17:48 2018 -0800

    Input: twl6040-vibra - fix child-node lookup
    
    commit dcaf12a8b0bbdbfcfa2be8dff2c4948d9844b4ad upstream.
    
    Fix child-node lookup during probe, which ended up searching the whole
    device tree depth-first starting at parent rather than just matching on
    its children.
    
    Later sanity checks on node properties (which would likely be missing)
    should prevent this from causing much trouble however, especially as the
    original premature free of the parent node has already been fixed
    separately (but that "fix" was apparently never backported to stable).
    
    Fixes: e7ec014a47e4 ("Input: twl6040-vibra - update for device tree support")
    Fixes: c52c545ead97 ("Input: twl6040-vibra - fix DT node memory management")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Acked-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Tested-by: H. Nikolaus Schaller <hns@goldelico.com> (on Pyra OMAP5 hardware)
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8e70d4862271b9c7a8300273a3bb895a5c9dbc97
Author: H. Nikolaus Schaller <hns@goldelico.com>
Date:   Mon May 9 17:01:01 2016 -0700

    Input: twl6040-vibra - fix DT node memory management
    
    commit c52c545ead97fcc2f4f8ea38f1ae3c23211e09a8 upstream.
    
    commit e7ec014a47e4 ("Input: twl6040-vibra - update for device tree support")
    
    made the separate vibra DT node to a subnode of the twl6040.
    
    It now calls of_find_node_by_name() to locate the "vibra" subnode.
    This function has a side effect to call of_node_put on() for the twl6040
    parent node passed in as a parameter. This causes trouble later on.
    
    Solution: we must call of_node_get() before of_find_node_by_name()
    
    Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 47970b4ea09c7dc4bb610825a1e72915abb63aca
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Jan 8 17:20:18 2018 -0800

    Input: 88pm860x-ts - fix child-node lookup
    
    commit 906bf7daa0618d0ef39f4872ca42218c29a3631f upstream.
    
    Fix child node-lookup during probe, which ended up searching the whole
    device tree depth-first starting at parent rather than just matching on
    its children.
    
    To make things worse, the parent node was prematurely freed, while the
    child node was leaked.
    
    Fixes: 2e57d56747e6 ("mfd: 88pm860x: Device tree support")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7fd1335392891188b022f5fa518201710d5be3ac
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Tue Jan 16 12:20:18 2018 +0100

    x86/apic/vector: Fix off by one in error path
    
    commit 45d55e7bac4028af93f5fa324e69958a0b868e96 upstream.
    
    Keith reported the following warning:
    
    WARNING: CPU: 28 PID: 1420 at kernel/irq/matrix.c:222 irq_matrix_remove_managed+0x10f/0x120
      x86_vector_free_irqs+0xa1/0x180
      x86_vector_alloc_irqs+0x1e4/0x3a0
      msi_domain_alloc+0x62/0x130
    
    The reason for this is that if the vector allocation fails the error
    handling code tries to free the failed vector as well, which causes the
    above imbalance warning to trigger.
    
    Adjust the error path to handle this correctly.
    
    Fixes: b5dc8e6c21e7 ("x86/irq: Use hierarchical irqdomain to manage CPU interrupt vectors")
    Reported-by: Keith Busch <keith.busch@intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Keith Busch <keith.busch@intel.com>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/alpine.DEB.2.20.1801161217300.1823@nanos
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aa041f13f8c6761ba985a4aab42c0dab49ec4202
Author: Joe Lawrence <joe.lawrence@redhat.com>
Date:   Fri Nov 17 15:29:21 2017 -0800

    pipe: avoid round_pipe_size() nr_pages overflow on 32-bit
    
    commit d3f14c485867cfb2e0c48aa88c41d0ef4bf5209c upstream.
    
    round_pipe_size() contains a right-bit-shift expression which may
    overflow, which would cause undefined results in a subsequent
    roundup_pow_of_two() call.
    
      static inline unsigned int round_pipe_size(unsigned int size)
      {
              unsigned long nr_pages;
    
              nr_pages = (size + PAGE_SIZE - 1) >> PAGE_SHIFT;
              return roundup_pow_of_two(nr_pages) << PAGE_SHIFT;
      }
    
    PAGE_SIZE is defined as (1UL << PAGE_SHIFT), so:
      - 4 bytes wide on 32-bit (0 to 0xffffffff)
      - 8 bytes wide on 64-bit (0 to 0xffffffffffffffff)
    
    That means that 32-bit round_pipe_size(), nr_pages may overflow to 0:
    
      size=0x00000000    nr_pages=0x0
      size=0x00000001    nr_pages=0x1
      size=0xfffff000    nr_pages=0xfffff
      size=0xfffff001    nr_pages=0x0         << !
      size=0xffffffff    nr_pages=0x0         << !
    
    This is bad because roundup_pow_of_two(n) is undefined when n == 0!
    
    64-bit is not a problem as the unsigned int size is 4 bytes wide
    (similar to 32-bit) and the larger, 8 byte wide unsigned long, is
    sufficient to handle the largest value of the bit shift expression:
    
      size=0xffffffff    nr_pages=100000
    
    Modify round_pipe_size() to return 0 if n == 0 and updates its callers to
    handle accordingly.
    
    Link: http://lkml.kernel.org/r/1507658689-11669-3-git-send-email-joe.lawrence@redhat.com
    Signed-off-by: Joe Lawrence <joe.lawrence@redhat.com>
    Reported-by: Mikulas Patocka <mpatocka@redhat.com>
    Reviewed-by: Mikulas Patocka <mpatocka@redhat.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: Michael Kerrisk <mtk.manpages@gmail.com>
    Cc: Randy Dunlap <rdunlap@infradead.org>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Dong Jinguang <dongjinguang@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1782af2835fe6fbff6265a53fb85847fb9c58137
Author: Andi Kleen <ak@linux.intel.com>
Date:   Tue Jan 16 12:52:28 2018 -0800

    module: Add retpoline tag to VERMAGIC
    
    commit 6cfb521ac0d5b97470883ff9b7facae264b7ab12 upstream.
    
    Add a marker for retpoline to the module VERMAGIC. This catches the case
    when a non RETPOLINE compiled module gets loaded into a retpoline kernel,
    making it insecure.
    
    It doesn't handle the case when retpoline has been runtime disabled.  Even
    in this case the match of the retcompile status will be enforced.  This
    implies that even with retpoline run time disabled all modules loaded need
    to be recompiled.
    
    Signed-off-by: Andi Kleen <ak@linux.intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Acked-by: David Woodhouse <dwmw@amazon.co.uk>
    Cc: rusty@rustcorp.com.au
    Cc: arjan.van.de.ven@intel.com
    Cc: jeyu@kernel.org
    Cc: torvalds@linux-foundation.org
    Link: https://lkml.kernel.org/r/20180116205228.4890-1-andi@firstfloor.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fba063e6dfb413e06b9daa5d45b164761172f5ed
Author: Tom Lendacky <thomas.lendacky@amd.com>
Date:   Sat Jan 13 17:27:30 2018 -0600

    x86/retpoline: Add LFENCE to the retpoline/RSB filling RSB macros
    
    commit 28d437d550e1e39f805d99f9f8ac399c778827b7 upstream.
    
    The PAUSE instruction is currently used in the retpoline and RSB filling
    macros as a speculation trap.  The use of PAUSE was originally suggested
    because it showed a very, very small difference in the amount of
    cycles/time used to execute the retpoline as compared to LFENCE.  On AMD,
    the PAUSE instruction is not a serializing instruction, so the pause/jmp
    loop will use excess power as it is speculated over waiting for return
    to mispredict to the correct target.
    
    The RSB filling macro is applicable to AMD, and, if software is unable to
    verify that LFENCE is serializing on AMD (possible when running under a
    hypervisor), the generic retpoline support will be used and, so, is also
    applicable to AMD.  Keep the current usage of PAUSE for Intel, but add an
    LFENCE instruction to the speculation trap for AMD.
    
    The same sequence has been adopted by GCC for the GCC generated retpolines.
    
    Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Borislav Petkov <bp@alien8.de>
    Acked-by: David Woodhouse <dwmw@amazon.co.uk>
    Acked-by: Arjan van de Ven <arjan@linux.intel.com>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Paul Turner <pjt@google.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Tim Chen <tim.c.chen@linux.intel.com>
    Cc: Jiri Kosina <jikos@kernel.org>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Greg Kroah-Hartman <gregkh@linux-foundation.org>
    Cc: Kees Cook <keescook@google.com>
    Link: https://lkml.kernel.org/r/20180113232730.31060.36287.stgit@tlendack-t1.amdoffice.net
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8bd58b61d2faacdacd05287a3bbb32ad226b5428
Author: Xunlei Pang <xlpang@redhat.com>
Date:   Wed May 10 21:03:37 2017 +0800

    sched/deadline: Zero out positive runtime after throttling constrained tasks
    
    commit ae83b56a56f8d9643dedbee86b457fa1c5d42f59 upstream.
    
    When a contrained task is throttled by dl_check_constrained_dl(),
    it may carry the remaining positive runtime, as a result when
    dl_task_timer() fires and calls replenish_dl_entity(), it will
    not be replenished correctly due to the positive dl_se->runtime.
    
    This patch assigns its runtime to 0 if positive after throttling.
    
    Signed-off-by: Xunlei Pang <xlpang@redhat.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Acked-by: Daniel Bristot de Oliveira <bristot@redhat.com>
    Cc: Juri Lelli <juri.lelli@arm.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Luca Abeni <luca.abeni@santannapisa.it>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Fixes: df8eac8cafce ("sched/deadline: Throttle a constrained deadline task activated after the deadline)
    Link: http://lkml.kernel.org/r/1494421417-27550-1-git-send-email-xlpang@redhat.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Cc: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ec7a002d7796a1831d171159366d71fbcc8bf049
Author: Tomas Henzl <thenzl@redhat.com>
Date:   Mon Mar 20 16:42:48 2017 +0100

    scsi: hpsa: fix volume offline state
    
    commit eb94588dabec82e012281608949a860f64752914 upstream.
    
    In a previous patch a hpsa_scsi_dev_t.volume_offline update line has
    been removed, so let us put it back..
    
    Fixes: 85b29008d8 (hpsa: update check for logical volume status)
    Signed-off-by: Tomas Henzl <thenzl@redhat.com>
    Acked-by: Don Brace <don.brace@microsemi.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Cc: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b78f2d36e7378f43ba849e90e1f9dbfedd09eaf9
Author: Eric Biggers <ebiggers@google.com>
Date:   Fri Dec 29 18:15:23 2017 -0600

    af_key: fix buffer overread in parse_exthdrs()
    
    commit 4e765b4972af7b07adcb1feb16e7a525ce1f6b28 upstream.
    
    If a message sent to a PF_KEY socket ended with an incomplete extension
    header (fewer than 4 bytes remaining), then parse_exthdrs() read past
    the end of the message, into uninitialized memory.  Fix it by returning
    -EINVAL in this case.
    
    Reproducer:
    
            #include <linux/pfkeyv2.h>
            #include <sys/socket.h>
            #include <unistd.h>
    
            int main()
            {
                    int sock = socket(PF_KEY, SOCK_RAW, PF_KEY_V2);
                    char buf[17] = { 0 };
                    struct sadb_msg *msg = (void *)buf;
    
                    msg->sadb_msg_version = PF_KEY_V2;
                    msg->sadb_msg_type = SADB_DELETE;
                    msg->sadb_msg_len = 2;
    
                    write(sock, buf, 17);
            }
    
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 48907f2535aa4b5951a0863b8bc7526402388c8d
Author: Eric Biggers <ebiggers@google.com>
Date:   Fri Dec 29 18:13:05 2017 -0600

    af_key: fix buffer overread in verify_address_len()
    
    commit 06b335cb51af018d5feeff5dd4fd53847ddb675a upstream.
    
    If a message sent to a PF_KEY socket ended with one of the extensions
    that takes a 'struct sadb_address' but there were not enough bytes
    remaining in the message for the ->sa_family member of the 'struct
    sockaddr' which is supposed to follow, then verify_address_len() read
    past the end of the message, into uninitialized memory.  Fix it by
    returning -EINVAL in this case.
    
    This bug was found using syzkaller with KMSAN.
    
    Reproducer:
    
            #include <linux/pfkeyv2.h>
            #include <sys/socket.h>
            #include <unistd.h>
    
            int main()
            {
                    int sock = socket(PF_KEY, SOCK_RAW, PF_KEY_V2);
                    char buf[24] = { 0 };
                    struct sadb_msg *msg = (void *)buf;
                    struct sadb_address *addr = (void *)(msg + 1);
    
                    msg->sadb_msg_version = PF_KEY_V2;
                    msg->sadb_msg_type = SADB_DELETE;
                    msg->sadb_msg_len = 3;
                    addr->sadb_address_len = 1;
                    addr->sadb_address_exttype = SADB_EXT_ADDRESS_SRC;
    
                    write(sock, buf, 24);
            }
    
    Reported-by: Alexander Potapenko <glider@google.com>
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 478a7fa82ff78be3b7aa94a9994fe0544b931f53
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Jan 10 10:53:18 2018 +0100

    ALSA: hda - Apply the existing quirk to iMac 14,1
    
    commit 031f335cda879450095873003abb03ae8ed3b74a upstream.
    
    iMac 14,1 requires the same quirk as iMac 12,2, using GPIO 2 and 3 for
    headphone and speaker output amps.  Add the codec SSID quirk entry
    (106b:0600) accordingly.
    
    BugLink: http://lkml.kernel.org/r/CAEw6Zyteav09VGHRfD5QwsfuWv5a43r0tFBNbfcHXoNrxVz7ew@mail.gmail.com
    Reported-by: Freaky <freaky2000@gmail.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a4d7639d5fb65070e43f679493341f1ec4212e6e
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Jan 10 08:34:28 2018 +0100

    ALSA: hda - Apply headphone noise quirk for another Dell XPS 13 variant
    
    commit e4c9fd10eb21376f44723c40ad12395089251c28 upstream.
    
    There is another Dell XPS 13 variant (SSID 1028:082a) that requires
    the existing fixup for reducing the headphone noise.
    This patch adds the quirk entry for that.
    
    BugLink: http://lkml.kernel.org/r/CAHXyb9ZCZJzVisuBARa+UORcjRERV8yokez=DP1_5O5isTz0ZA@mail.gmail.com
    Reported-and-tested-by: Francisco G. <frangio.1@gmail.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 80547bb6154d02279e446526a7d3daf7d5aa15db
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Jan 10 23:48:05 2018 +0100

    ALSA: pcm: Remove yet superfluous WARN_ON()
    
    commit 23b19b7b50fe1867da8d431eea9cd3e4b6328c2c upstream.
    
    muldiv32() contains a snd_BUG_ON() (which is morphed as WARN_ON() with
    debug option) for checking the case of 0 / 0.  This would be helpful
    if this happens only as a logical error; however, since the hw refine
    is performed with any data set provided by user, the inconsistent
    values that can trigger such a condition might be passed easily.
    Actually, syzbot caught this by passing some zero'ed old hw_params
    ioctl.
    
    So, having snd_BUG_ON() there is simply superfluous and rather
    harmful to give unnecessary confusions.  Let's get rid of it.
    
    Reported-by: syzbot+7e6ee55011deeebce15d@syzkaller.appspotmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 58c82be944f58561e77eb9db5039a4b0eca96ac5
Author: Li Jinyue <lijinyue@huawei.com>
Date:   Thu Dec 14 17:04:54 2017 +0800

    futex: Prevent overflow by strengthen input validation
    
    commit fbe0e839d1e22d88810f3ee3e2f1479be4c0aa4a upstream.
    
    UBSAN reports signed integer overflow in kernel/futex.c:
    
     UBSAN: Undefined behaviour in kernel/futex.c:2041:18
     signed integer overflow:
     0 - -2147483648 cannot be represented in type 'int'
    
    Add a sanity check to catch negative values of nr_wake and nr_requeue.
    
    Signed-off-by: Li Jinyue <lijinyue@huawei.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: peterz@infradead.org
    Cc: dvhart@infradead.org
    Link: https://lkml.kernel.org/r/1513242294-31786-1-git-send-email-lijinyue@huawei.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f1fcb9d2926c378e39adf42ef3446e08b2d63895
Author: Hannes Reinecke <hare@suse.de>
Date:   Fri Apr 7 09:34:12 2017 +0200

    scsi: sg: disable SET_FORCE_LOW_DMA
    
    commit 745dfa0d8ec26b24f3304459ff6e9eacc5c8351b upstream.
    
    The ioctl SET_FORCE_LOW_DMA has never worked since the initial git
    check-in, and the respective setting is nowadays handled correctly. So
    disable it entirely.
    
    Signed-off-by: Hannes Reinecke <hare@suse.com>
    Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
    Tested-by: Johannes Thumshirn <jthumshirn@suse.de>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 451725c3e785dfc3ede6c65184b96c213181995a
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Sun Jan 14 22:13:29 2018 +0100

    x86/retpoline: Remove compile time warning
    
    commit b8b9ce4b5aec8de9e23cabb0a26b78641f9ab1d6 upstream.
    
    Remove the compile time warning when CONFIG_RETPOLINE=y and the compiler
    does not have retpoline support. Linus rationale for this is:
    
      It's wrong because it will just make people turn off RETPOLINE, and the
      asm updates - and return stack clearing - that are independent of the
      compiler are likely the most important parts because they are likely the
      ones easiest to target.
    
      And it's annoying because most people won't be able to do anything about
      it. The number of people building their own compiler? Very small. So if
      their distro hasn't got a compiler yet (and pretty much nobody does), the
      warning is just annoying crap.
    
      It is already properly reported as part of the sysfs interface. The
      compile-time warning only encourages bad things.
    
    Fixes: 76b043848fd2 ("x86/retpoline: Add initial retpoline support")
    Requested-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: David Woodhouse <dwmw@amazon.co.uk>
    Cc: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: gnomes@lxorguk.ukuu.org.uk
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: thomas.lendacky@amd.com
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Jiri Kosina <jikos@kernel.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Kees Cook <keescook@google.com>
    Cc: Tim Chen <tim.c.chen@linux.intel.com>
    Cc: Greg Kroah-Hartman <gregkh@linux-foundation.org>
    Link: https://lkml.kernel.org/r/CA+55aFzWgquv4i6Mab6bASqYXg3ErV3XDFEYf=GEcCDQg5uAtw@mail.gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eebc3f8adee0a6f43a4789ef0bf5c5b35de8cfe4
Author: David Woodhouse <dwmw@amazon.co.uk>
Date:   Fri Jan 12 11:11:27 2018 +0000

    x86/retpoline: Fill return stack buffer on vmexit
    
    commit 117cc7a908c83697b0b737d15ae1eb5943afe35b upstream.
    
    In accordance with the Intel and AMD documentation, we need to overwrite
    all entries in the RSB on exiting a guest, to prevent malicious branch
    target predictions from affecting the host kernel. This is needed both
    for retpoline and for IBRS.
    
    [ak: numbers again for the RSB stuffing labels]
    
    Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: gnomes@lxorguk.ukuu.org.uk
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: thomas.lendacky@amd.com
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Jiri Kosina <jikos@kernel.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Kees Cook <keescook@google.com>
    Cc: Tim Chen <tim.c.chen@linux.intel.com>
    Cc: Greg Kroah-Hartman <gregkh@linux-foundation.org>
    Cc: Paul Turner <pjt@google.com>
    Link: https://lkml.kernel.org/r/1515755487-8524-1-git-send-email-dwmw@amazon.co.uk
    Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
    Signed-off-by: Razvan Ghitulete <rga@amazon.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f72655b837eb4320a1ffebbd0e0ebe92ce1e5314
Author: Andi Kleen <ak@linux.intel.com>
Date:   Thu Jan 11 21:46:33 2018 +0000

    x86/retpoline/irq32: Convert assembler indirect jumps
    
    commit 7614e913db1f40fff819b36216484dc3808995d4 upstream.
    
    Convert all indirect jumps in 32bit irq inline asm code to use non
    speculative sequences.
    
    Signed-off-by: Andi Kleen <ak@linux.intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Arjan van de Ven <arjan@linux.intel.com>
    Acked-by: Ingo Molnar <mingo@kernel.org>
    Cc: gnomes@lxorguk.ukuu.org.uk
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: thomas.lendacky@amd.com
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Jiri Kosina <jikos@kernel.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Kees Cook <keescook@google.com>
    Cc: Tim Chen <tim.c.chen@linux.intel.com>
    Cc: Greg Kroah-Hartman <gregkh@linux-foundation.org>
    Cc: Paul Turner <pjt@google.com>
    Link: https://lkml.kernel.org/r/1515707194-20531-12-git-send-email-dwmw@amazon.co.uk
    Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
    Signed-off-by: Razvan Ghitulete <rga@amazon.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7e5bb301bd2fdd62cbee7b26a8234cccb6731849
Author: David Woodhouse <dwmw@amazon.co.uk>
Date:   Thu Jan 11 21:46:32 2018 +0000

    x86/retpoline/checksum32: Convert assembler indirect jumps
    
    commit 5096732f6f695001fa2d6f1335a2680b37912c69 upstream.
    
    Convert all indirect jumps in 32bit checksum assembler code to use
    non-speculative sequences when CONFIG_RETPOLINE is enabled.
    
    Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Arjan van de Ven <arjan@linux.intel.com>
    Acked-by: Ingo Molnar <mingo@kernel.org>
    Cc: gnomes@lxorguk.ukuu.org.uk
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: thomas.lendacky@amd.com
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Jiri Kosina <jikos@kernel.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Kees Cook <keescook@google.com>
    Cc: Tim Chen <tim.c.chen@linux.intel.com>
    Cc: Greg Kroah-Hartman <gregkh@linux-foundation.org>
    Cc: Paul Turner <pjt@google.com>
    Link: https://lkml.kernel.org/r/1515707194-20531-11-git-send-email-dwmw@amazon.co.uk
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6b222e7483af4fd8f632efbf3b91025c2359b10a
Author: David Woodhouse <dwmw@amazon.co.uk>
Date:   Thu Jan 11 21:46:31 2018 +0000

    x86/retpoline/xen: Convert Xen hypercall indirect jumps
    
    commit ea08816d5b185ab3d09e95e393f265af54560350 upstream.
    
    Convert indirect call in Xen hypercall to use non-speculative sequence,
    when CONFIG_RETPOLINE is enabled.
    
    Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Arjan van de Ven <arjan@linux.intel.com>
    Acked-by: Ingo Molnar <mingo@kernel.org>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Cc: gnomes@lxorguk.ukuu.org.uk
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: thomas.lendacky@amd.com
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Jiri Kosina <jikos@kernel.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Kees Cook <keescook@google.com>
    Cc: Tim Chen <tim.c.chen@linux.intel.com>
    Cc: Greg Kroah-Hartman <gregkh@linux-foundation.org>
    Cc: Paul Turner <pjt@google.com>
    Link: https://lkml.kernel.org/r/1515707194-20531-10-git-send-email-dwmw@amazon.co.uk
    Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d2beed45635e3c430bc6d84ff8e6c6e8cb2e10b4
Author: David Woodhouse <dwmw@amazon.co.uk>
Date:   Thu Jan 11 21:46:30 2018 +0000

    x86/retpoline/hyperv: Convert assembler indirect jumps
    
    commit e70e5892b28c18f517f29ab6e83bd57705104b31 upstream.
    
    Convert all indirect jumps in hyperv inline asm code to use non-speculative
    sequences when CONFIG_RETPOLINE is enabled.
    
    Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Arjan van de Ven <arjan@linux.intel.com>
    Acked-by: Ingo Molnar <mingo@kernel.org>
    Cc: gnomes@lxorguk.ukuu.org.uk
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: thomas.lendacky@amd.com
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Jiri Kosina <jikos@kernel.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Kees Cook <keescook@google.com>
    Cc: Tim Chen <tim.c.chen@linux.intel.com>
    Cc: Greg Kroah-Hartman <gregkh@linux-foundation.org>
    Cc: Paul Turner <pjt@google.com>
    Link: https://lkml.kernel.org/r/1515707194-20531-9-git-send-email-dwmw@amazon.co.uk
    [ backport to 4.4, hopefully correct, not tested... - gregkh ]
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7153a6d5ff050050555066f58ac3458c5efc699b
Author: David Woodhouse <dwmw@amazon.co.uk>
Date:   Thu Jan 11 21:46:29 2018 +0000

    x86/retpoline/ftrace: Convert ftrace assembler indirect jumps
    
    commit 9351803bd803cdbeb9b5a7850b7b6f464806e3db upstream.
    
    Convert all indirect jumps in ftrace assembler code to use non-speculative
    sequences when CONFIG_RETPOLINE is enabled.
    
    Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Arjan van de Ven <arjan@linux.intel.com>
    Acked-by: Ingo Molnar <mingo@kernel.org>
    Cc: gnomes@lxorguk.ukuu.org.uk
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: thomas.lendacky@amd.com
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Jiri Kosina <jikos@kernel.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Kees Cook <keescook@google.com>
    Cc: Tim Chen <tim.c.chen@linux.intel.com>
    Cc: Greg Kroah-Hartman <gregkh@linux-foundation.org>
    Cc: Paul Turner <pjt@google.com>
    Link: https://lkml.kernel.org/r/1515707194-20531-8-git-send-email-dwmw@amazon.co.uk
    Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
    Signed-off-by: Razvan Ghitulete <rga@amazon.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 028083cb02db69237e73950576bc81ac579693dc
Author: David Woodhouse <dwmw@amazon.co.uk>
Date:   Thu Jan 11 21:46:28 2018 +0000

    x86/retpoline/entry: Convert entry assembler indirect jumps
    
    commit 2641f08bb7fc63a636a2b18173221d7040a3512e upstream.
    
    Convert indirect jumps in core 32/64bit entry assembler code to use
    non-speculative sequences when CONFIG_RETPOLINE is enabled.
    
    Don't use CALL_NOSPEC in entry_SYSCALL_64_fastpath because the return
    address after the 'call' instruction must be *precisely* at the
    .Lentry_SYSCALL_64_after_fastpath label for stub_ptregs_64 to work,
    and the use of alternatives will mess that up unless we play horrid
    games to prepend with NOPs and make the variants the same length. It's
    not worth it; in the case where we ALTERNATIVE out the retpoline, the
    first instruction at __x86.indirect_thunk.rax is going to be a bare
    jmp *%rax anyway.
    
    Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Ingo Molnar <mingo@kernel.org>
    Acked-by: Arjan van de Ven <arjan@linux.intel.com>
    Cc: gnomes@lxorguk.ukuu.org.uk
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: thomas.lendacky@amd.com
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Jiri Kosina <jikos@kernel.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Kees Cook <keescook@google.com>
    Cc: Tim Chen <tim.c.chen@linux.intel.com>
    Cc: Greg Kroah-Hartman <gregkh@linux-foundation.org>
    Cc: Paul Turner <pjt@google.com>
    Link: https://lkml.kernel.org/r/1515707194-20531-7-git-send-email-dwmw@amazon.co.uk
    Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
    Signed-off-by: Razvan Ghitulete <rga@amazon.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9fe55976f0c8acfd7408bf693b6d171587b62129
Author: David Woodhouse <dwmw@amazon.co.uk>
Date:   Thu Jan 11 21:46:27 2018 +0000

    x86/retpoline/crypto: Convert crypto assembler indirect jumps
    
    commit 9697fa39efd3fc3692f2949d4045f393ec58450b upstream.
    
    Convert all indirect jumps in crypto assembler code to use non-speculative
    sequences when CONFIG_RETPOLINE is enabled.
    
    Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Arjan van de Ven <arjan@linux.intel.com>
    Acked-by: Ingo Molnar <mingo@kernel.org>
    Cc: gnomes@lxorguk.ukuu.org.uk
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: thomas.lendacky@amd.com
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Jiri Kosina <jikos@kernel.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Kees Cook <keescook@google.com>
    Cc: Tim Chen <tim.c.chen@linux.intel.com>
    Cc: Greg Kroah-Hartman <gregkh@linux-foundation.org>
    Cc: Paul Turner <pjt@google.com>
    Link: https://lkml.kernel.org/r/1515707194-20531-6-git-send-email-dwmw@amazon.co.uk
    Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9f789bc5711bcacb5df003594b992f0c1cc19df4
Author: David Woodhouse <dwmw@amazon.co.uk>
Date:   Thu Jan 11 21:46:26 2018 +0000

    x86/spectre: Add boot time option to select Spectre v2 mitigation
    
    commit da285121560e769cc31797bba6422eea71d473e0 upstream.
    
    Add a spectre_v2= option to select the mitigation used for the indirect
    branch speculation vulnerability.
    
    Currently, the only option available is retpoline, in its various forms.
    This will be expanded to cover the new IBRS/IBPB microcode features.
    
    The RETPOLINE_AMD feature relies on a serializing LFENCE for speculation
    control. For AMD hardware, only set RETPOLINE_AMD if LFENCE is a
    serializing instruction, which is indicated by the LFENCE_RDTSC feature.
    
    [ tglx: Folded back the LFENCE/AMD fixes and reworked it so IBRS
            integration becomes simple ]
    
    Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: gnomes@lxorguk.ukuu.org.uk
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: thomas.lendacky@amd.com
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Jiri Kosina <jikos@kernel.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Kees Cook <keescook@google.com>
    Cc: Tim Chen <tim.c.chen@linux.intel.com>
    Cc: Greg Kroah-Hartman <gregkh@linux-foundation.org>
    Cc: Paul Turner <pjt@google.com>
    Link: https://lkml.kernel.org/r/1515707194-20531-5-git-send-email-dwmw@amazon.co.uk
    Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3c5e10905263dbe9fbc621d1889b85e9c867da25
Author: David Woodhouse <dwmw@amazon.co.uk>
Date:   Thu Jan 11 21:46:25 2018 +0000

    x86/retpoline: Add initial retpoline support
    
    commit 76b043848fd22dbf7f8bf3a1452f8c70d557b860 upstream.
    
    Enable the use of -mindirect-branch=thunk-extern in newer GCC, and provide
    the corresponding thunks. Provide assembler macros for invoking the thunks
    in the same way that GCC does, from native and inline assembler.
    
    This adds X86_FEATURE_RETPOLINE and sets it by default on all CPUs. In
    some circumstances, IBRS microcode features may be used instead, and the
    retpoline can be disabled.
    
    On AMD CPUs if lfence is serialising, the retpoline can be dramatically
    simplified to a simple "lfence; jmp *\reg". A future patch, after it has
    been verified that lfence really is serialising in all circumstances, can
    enable this by setting the X86_FEATURE_RETPOLINE_AMD feature bit in addition
    to X86_FEATURE_RETPOLINE.
    
    Do not align the retpoline in the altinstr section, because there is no
    guarantee that it stays aligned when it's copied over the oldinstr during
    alternative patching.
    
    [ Andi Kleen: Rename the macros, add CONFIG_RETPOLINE option, export thunks]
    [ tglx: Put actual function CALL/JMP in front of the macros, convert to
            symbolic labels ]
    [ dwmw2: Convert back to numeric labels, merge objtool fixes ]
    
    Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Arjan van de Ven <arjan@linux.intel.com>
    Acked-by: Ingo Molnar <mingo@kernel.org>
    Cc: gnomes@lxorguk.ukuu.org.uk
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: thomas.lendacky@amd.com
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Jiri Kosina <jikos@kernel.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Kees Cook <keescook@google.com>
    Cc: Tim Chen <tim.c.chen@linux.intel.com>
    Cc: Greg Kroah-Hartman <gregkh@linux-foundation.org>
    Cc: Paul Turner <pjt@google.com>
    Link: https://lkml.kernel.org/r/1515707194-20531-4-git-send-email-dwmw@amazon.co.uk
    Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
    [ 4.4 backport: removed objtool annotation since there is no objtool ]
    Signed-off-by: Razvan Ghitulete <rga@amazon.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 675901851fd2a00c7a70bcf327303efba3b81e2f
Author: Masahiro Yamada <yamada.masahiro@socionext.com>
Date:   Tue Jun 14 14:58:54 2016 +0900

    kconfig.h: use __is_defined() to check if MODULE is defined
    
    commit 4f920843d248946545415c1bf6120942048708ed upstream.
    
    The macro MODULE is not a config option, it is a per-file build
    option.  So, config_enabled(MODULE) is not sensible.  (There is
    another case in include/linux/export.h, where config_enabled() is
    used against a non-config option.)
    
    This commit renames some macros in include/linux/kconfig.h for the
    use for non-config macros and replaces config_enabled(MODULE) with
    __is_defined(MODULE).
    
    I am keeping config_enabled() because it is still referenced from
    some places, but I expect it would be deprecated in the future.
    
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: Michal Marek <mmarek@suse.com>
    Signed-off-by: Razvan Ghitulete <rga@amazon.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a88693d006986b8fc9ae5036852ac0156106de2a
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Mon Jan 11 10:54:54 2016 -0500

    EXPORT_SYMBOL() for asm
    
    commit 22823ab419d8ed884195cfa75483fd3a99bb1462 upstream.
    
    Add asm-usable variants of EXPORT_SYMBOL/EXPORT_SYMBOL_GPL.  This
    commit just adds the default implementation; most of the architectures
    can simply add export.h to asm/Kbuild and start using <asm/export.h>
    from assembler.  The rest needs to have their <asm/export.h> define
    everal macros and then explicitly include <asm-generic/export.h>
    
    One area where the things might diverge from default is the alignment;
    normally it's 8 bytes on 64bit targets and 4 on 32bit ones, both for
    unsigned long and for struct kernel_symbol.  Unfortunately, amd64 and
    m68k are unusual - m68k aligns to 2 bytes (for both) and amd64 aligns
    struct kernel_symbol to 16 bytes.  For those we'll need asm/export.h to
    override the constants used by generic version - KSYM_ALIGN and KCRC_ALIGN
    for kernel_symbol and unsigned long resp.  And no, __alignof__ would not
    do the trick - on amd64 __alignof__ of struct kernel_symbol is 8, not 16.
    
    More serious source of unpleasantness is treatment of function
    descriptors on architectures that have those.  Things like ppc64,
    parisc, ia64, etc.  need more than the address of the first insn to
    call an arbitrary function.  As the result, their representation of
    pointers to functions is not the typical "address of the entry point" -
    it's an address of a small static structure containing all the required
    information (including the entry point, of course).  Sadly, the asm-side
    conventions differ in what the function name refers to - entry point or
    the function descriptor.  On ppc64 we do the latter;
            bar: .quad foo
    is what void (*bar)(void) = foo; turns into and the rare places where
    we need to explicitly work with the label of entry point are dealt with
    as DOTSYM(foo).  For our purposes it's ideal - generic macros are usable.
    However, parisc would have foo and P%foo used for label of entry point
    and address of the function descriptor and
            bar: .long P%foo
    woudl be used instead.  ia64 goes similar to parisc in that respect,
    except that there it's @fptr(foo) rather than P%foo.  Such architectures
    need to define KSYM_FUNC that would turn a function name into whatever
    is needed to refer to function descriptor.
    
    What's more, on such architectures we need to know whether we are exporting
    a function or an object - in assembler we have to tell that explicitly, to
    decide whether we want EXPORT_SYMBOL(foo) produce e.g.
            __ksymtab_foo: .quad foo
    or
            __ksymtab_foo: .quad @fptr(foo)
    
    For that reason we introduce EXPORT_DATA_SYMBOL{,_GPL}(), to be used for
    exports of data objects.  On normal architectures it's the same thing
    as EXPORT_SYMBOL{,_GPL}(), but on parisc-like ones they differ and the
    right one needs to be used.  Most of the exports are functions, so we
    keep EXPORT_SYMBOL for those...
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Razvan Ghitulete <rga@amazon.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b8e7a489b51810992ba3266bfd9e043709e07267
Author: Andy Lutomirski <luto@kernel.org>
Date:   Tue Apr 26 12:23:25 2016 -0700

    x86/asm: Make asm/alternative.h safe from assembly
    
    commit f005f5d860e0231fe212cfda8c1a3148b99609f4 upstream.
    
    asm/alternative.h isn't directly useful from assembly, but it
    shouldn't break the build.
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/e5b693fcef99fe6e80341c9e97a002fb23871e91.1461698311.git.luto@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Razvan Ghitulete <rga@amazon.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b76ac90af34dc08f057da15aa34584a0a3d381b5
Author: Adam Borowski <kilobyte@angband.pl>
Date:   Sun Dec 11 02:09:18 2016 +0100

    x86/kbuild: enable modversions for symbols exported from asm
    
    commit 334bb773876403eae3457d81be0b8ea70f8e4ccc upstream.
    
    Commit 4efca4ed ("kbuild: modversions for EXPORT_SYMBOL() for asm") adds
    modversion support for symbols exported from asm files. Architectures
    must include C-style declarations for those symbols in asm/asm-prototypes.h
    in order for them to be versioned.
    
    Add these declarations for x86, and an architecture-independent file that
    can be used for common symbols.
    
    With f27c2f6 reverting 8ab2ae6 ("default exported asm symbols to zero") we
    produce a scary warning on x86, this commit fixes that.
    
    Signed-off-by: Adam Borowski <kilobyte@angband.pl>
    Tested-by: Kalle Valo <kvalo@codeaurora.org>
    Acked-by: Nicholas Piggin <npiggin@gmail.com>
    Tested-by: Peter Wu <peter@lekensteyn.nl>
    Tested-by: Oliver Hartkopp <socketcan@hartkopp.net>
    Signed-off-by: Michal Marek <mmarek@suse.com>
    Signed-off-by: Razvan Ghitulete <rga@amazon.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cfc8c1d61e46fd3c60a34a5b1962eeeb03222a3d
Author: Andrey Ryabinin <aryabinin@virtuozzo.com>
Date:   Fri Sep 29 17:15:36 2017 +0300

    x86/asm: Use register variable to get stack pointer value
    
    commit 196bd485ee4f03ce4c690bfcf38138abfcd0a4bc upstream.
    
    Currently we use current_stack_pointer() function to get the value
    of the stack pointer register. Since commit:
    
      f5caf621ee35 ("x86/asm: Fix inline asm call constraints for Clang")
    
    ... we have a stack register variable declared. It can be used instead of
    current_stack_pointer() function which allows to optimize away some
    excessive "mov %rsp, %<dst>" instructions:
    
     -mov    %rsp,%rdx
     -sub    %rdx,%rax
     -cmp    $0x3fff,%rax
     -ja     ffffffff810722fd <ist_begin_non_atomic+0x2d>
    
     +sub    %rsp,%rax
     +cmp    $0x3fff,%rax
     +ja     ffffffff810722fa <ist_begin_non_atomic+0x2a>
    
    Remove current_stack_pointer(), rename __asm_call_sp to current_stack_pointer
    and use it instead of the removed function.
    
    Signed-off-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
    Reviewed-by: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/20170929141537.29167-1-aryabinin@virtuozzo.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    [dwmw2: We want ASM_CALL_CONSTRAINT for retpoline]
    Signed-off-by: David Woodhouse <dwmw@amazon.co.ku>
    Signed-off-by: Razvan Ghitulete <rga@amazon.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 416f66509fce36e128ea2d9e62739a21f1a1d04d
Author: Andy Lutomirski <luto@kernel.org>
Date:   Sun Sep 17 09:03:50 2017 -0700

    x86/mm/32: Move setup_clear_cpu_cap(X86_FEATURE_PCID) earlier
    
    commit b8b7abaed7a49b350f8ba659ddc264b04931d581 upstream.
    
    Otherwise we might have the PCID feature bit set during cpu_init().
    
    This is just for robustness.  I haven't seen any actual bugs here.
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bpetkov@suse.de>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Fixes: cba4671af755 ("x86/mm: Disable PCID on 32-bit kernels")
    Link: http://lkml.kernel.org/r/b16dae9d6b0db5d9801ddbebbfd83384097c61f3.1505663533.git.luto@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 642ce1bb5ea64b1d036dff04a005d9bbe28ab5b4
Author: Tom Lendacky <thomas.lendacky@amd.com>
Date:   Mon Jan 8 16:09:32 2018 -0600

    x86/cpu/AMD: Use LFENCE_RDTSC in preference to MFENCE_RDTSC
    
    commit 9c6a73c75864ad9fa49e5fa6513e4c4071c0e29f upstream.
    
    With LFENCE now a serializing instruction, use LFENCE_RDTSC in preference
    to MFENCE_RDTSC.  However, since the kernel could be running under a
    hypervisor that does not support writing that MSR, read the MSR back and
    verify that the bit has been set successfully.  If the MSR can be read
    and the bit is set, then set the LFENCE_RDTSC feature, otherwise set the
    MFENCE_RDTSC feature.
    
    Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Reviewed-by: Borislav Petkov <bp@suse.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Tim Chen <tim.c.chen@linux.intel.com>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Greg Kroah-Hartman <gregkh@linux-foundation.org>
    Cc: David Woodhouse <dwmw@amazon.co.uk>
    Cc: Paul Turner <pjt@google.com>
    Link: https://lkml.kernel.org/r/20180108220932.12580.52458.stgit@tlendack-t1.amdoffice.net
    Signed-off-by: Razvan Ghitulete <rga@amazon.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 20c28c04a6bc2ebd60fa20e5c3a6bf3bfa736d81
Author: Tom Lendacky <thomas.lendacky@amd.com>
Date:   Mon Jan 8 16:09:21 2018 -0600

    x86/cpu/AMD: Make LFENCE a serializing instruction
    
    commit e4d0e84e490790798691aaa0f2e598637f1867ec upstream.
    
    To aid in speculation control, make LFENCE a serializing instruction
    since it has less overhead than MFENCE.  This is done by setting bit 1
    of MSR 0xc0011029 (DE_CFG).  Some families that support LFENCE do not
    have this MSR.  For these families, the LFENCE instruction is already
    serializing.
    
    Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Reviewed-by: Borislav Petkov <bp@suse.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Tim Chen <tim.c.chen@linux.intel.com>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Greg Kroah-Hartman <gregkh@linux-foundation.org>
    Cc: David Woodhouse <dwmw@amazon.co.uk>
    Cc: Paul Turner <pjt@google.com>
    Link: https://lkml.kernel.org/r/20180108220921.12580.71694.stgit@tlendack-t1.amdoffice.net
    Signed-off-by: Razvan Ghitulete <rga@amazon.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e6c591e7a430197777a6456a3cd2db38fffd7647
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Mon Apr 25 17:35:29 2016 +0200

    gcov: disable for COMPILE_TEST
    
    commit cc622420798c4bcf093785d872525087a7798db9 upstream.
    
    Enabling gcov is counterproductive to compile testing: it significantly
    increases the kernel image size, compile time, and it produces lots
    of false positive "may be used uninitialized" warnings as the result
    of missed optimizations.
    
    This is in line with how UBSAN_SANITIZE_ALL and PROFILE_ALL_BRANCHES
    work, both of which have similar problems.
    
    With an ARM allmodconfig kernel, I see the build time drop from
    283 minutes CPU time to 225 minutes, and the vmlinux size drops
    from 43MB to 26MB.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Acked-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
    Signed-off-by: Michal Marek <mmarek@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>