commit b3e88217e2f95b004da89a0ff931e1dc45d3d094
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Dec 29 17:43:00 2017 +0100

    Linux 4.9.73

commit 37435f7e80ef9adc32a69013c18f135e3f434244
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Sat Dec 23 02:26:17 2017 +0000

    bpf/verifier: Fix states_equal() comparison of pointer and UNKNOWN
    
    An UNKNOWN_VALUE is not supposed to be derived from a pointer, unless
    pointer leaks are allowed.  Therefore, states_equal() must not treat
    a state with a pointer in a register as "equal" to a state with an
    UNKNOWN_VALUE in that register.
    
    This was fixed differently upstream, but the code around here was
    largely rewritten in 4.14 by commit f1174f77b50c "bpf/verifier: rework
    value tracking".  The bug can be detected by the bpf/verifier sub-test
    "pointer/scalar confusion in state equality check (way 1)".
    
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Cc: Edward Cree <ecree@solarflare.com>
    Cc: Jann Horn <jannh@google.com>
    Cc: Alexei Starovoitov <ast@kernel.org>
    Cc: Daniel Borkmann <daniel@iogearbox.net>

commit 69cf72b2879167364d2a97211fbb26ca0e374bcf
Author: Yelena Krivosheev <yelena@marvell.com>
Date:   Tue Dec 19 17:59:47 2017 +0100

    net: mvneta: eliminate wrong call to handle rx descriptor error
    
    commit 2eecb2e04abb62ef8ea7b43e1a46bdb5b99d1bf8 upstream.
    
    There are few reasons in mvneta_rx_swbm() function when received packet
    is dropped. mvneta_rx_error() should be called only if error bit [16]
    is set in rx descriptor.
    
    [gregory.clement@free-electrons.com: add fixes tag]
    Fixes: dc35a10f68d3 ("net: mvneta: bm: add support for hardware buffer management")
    Signed-off-by: Yelena Krivosheev <yelena@marvell.com>
    Tested-by: Dmitri Epshtein <dima@marvell.com>
    Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a57f99f484e51f27db87e38dfbcecec6fd3cf689
Author: Yelena Krivosheev <yelena@marvell.com>
Date:   Tue Dec 19 17:59:46 2017 +0100

    net: mvneta: use proper rxq_number in loop on rx queues
    
    commit ca5902a6547f662419689ca28b3c29a772446caa upstream.
    
    When adding the RX queue association with each CPU, a typo was made in
    the mvneta_cleanup_rxqs() function. This patch fixes it.
    
    [gregory.clement@free-electrons.com: add commit log and fixes tag]
    Fixes: 2dcf75e2793c ("net: mvneta: Associate RX queues with each CPU")
    Signed-off-by: Yelena Krivosheev <yelena@marvell.com>
    Tested-by: Dmitri Epshtein <dima@marvell.com>
    Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 405f3d7946fdebf71f81552fead04951c37946b2
Author: Yelena Krivosheev <yelena@marvell.com>
Date:   Tue Dec 19 17:59:45 2017 +0100

    net: mvneta: clear interface link status on port disable
    
    commit 4423c18e466afdfb02a36ee8b9f901d144b3c607 upstream.
    
    When port connect to PHY in polling mode (with poll interval 1 sec),
    port and phy link status must be synchronize in order don't loss link
    change event.
    
    [gregory.clement@free-electrons.com: add fixes tag]
    Fixes: c5aff18204da ("net: mvneta: driver for Marvell Armada 370/XP network unit")
    Signed-off-by: Yelena Krivosheev <yelena@marvell.com>
    Tested-by: Dmitri Epshtein <dima@marvell.com>
    Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 423716cf28157287b4c7be21474aea796ba39b51
Author: Dan Williams <dan.j.williams@intel.com>
Date:   Tue Dec 19 15:07:10 2017 -0800

    libnvdimm, pfn: fix start_pad handling for aligned namespaces
    
    commit 19deaa217bc04e83b59b5e8c8229eb0e53ad9efc upstream.
    
    The alignment checks at pfn driver startup fail to properly account for
    the 'start_pad' in the case where the namespace is misaligned relative
    to its internal alignment. This is typically triggered in 1G aligned
    namespace, but could theoretically trigger with small namespace
    alignments. When this triggers the kernel reports messages of the form:
    
        dax2.1: bad offset: 0x3c000000 dax disabled align: 0x40000000
    
    Fixes: 1ee6667cd8d1 ("libnvdimm, pfn, dax: fix initialization vs autodetect...")
    Reported-by: Jane Chu <jane.chu@oracle.com>
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 77b318a4e55836c44429c7c8396847b67d5aaa7f
Author: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
Date:   Tue Dec 12 17:59:15 2017 +0530

    powerpc/perf: Dereference BHRB entries safely
    
    commit f41d84dddc66b164ac16acf3f584c276146f1c48 upstream.
    
    It's theoretically possible that branch instructions recorded in
    BHRB (Branch History Rolling Buffer) entries have already been
    unmapped before they are processed by the kernel. Hence, trying to
    dereference such memory location will result in a crash. eg:
    
        Unable to handle kernel paging request for data at address 0xd000000019c41764
        Faulting instruction address: 0xc000000000084a14
        NIP [c000000000084a14] branch_target+0x4/0x70
        LR [c0000000000eb828] record_and_restart+0x568/0x5c0
        Call Trace:
        [c0000000000eb3b4] record_and_restart+0xf4/0x5c0 (unreliable)
        [c0000000000ec378] perf_event_interrupt+0x298/0x460
        [c000000000027964] performance_monitor_exception+0x54/0x70
        [c000000000009ba4] performance_monitor_common+0x114/0x120
    
    Fix it by deferefencing the addresses safely.
    
    Fixes: 691231846ceb ("powerpc/perf: Fix setting of "to" addresses for BHRB")
    Suggested-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Signed-off-by: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
    Reviewed-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    [mpe: Use probe_kernel_read() which is clearer, tweak change log]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2635a64d0e94636c8600487d4424f8655502c3f2
Author: Chen-Yu Tsai <wens@csie.org>
Date:   Mon Dec 18 11:57:51 2017 +0800

    clk: sunxi: sun9i-mmc: Implement reset callback for reset controls
    
    commit 61d2f2a05765a5f57149efbd93e3e81a83cbc2c1 upstream.
    
    Our MMC host driver now issues a reset, instead of just deasserting
    the reset control, since commit c34eda69ad4c ("mmc: sunxi: Reset the
    device at probe time"). The sun9i-mmc clock driver does not support
    this, and will fail, which results in MMC not probing.
    
    This patch implements the reset callback by asserting the reset control,
    then deasserting it after a small delay.
    
    Fixes: 7a6fca879f59 ("clk: sunxi: Add driver for A80 MMC config clocks/resets")
    Signed-off-by: Chen-Yu Tsai <wens@csie.org>
    Acked-by: Philipp Zabel <p.zabel@pengutronix.de>
    Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
    Signed-off-by: Michael Turquette <mturquette@baylibre.com>
    Link: lkml.kernel.org/r/20171218035751.20661-1-wens@csie.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 18276e9bcd49d5d4bcbdbf41901a9dd996fdb1a7
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Thu Dec 21 00:49:14 2017 +0100

    kvm: x86: fix RSM when PCID is non-zero
    
    commit fae1a3e775cca8c3a9e0eb34443b310871a15a92 upstream.
    
    rsm_load_state_64() and rsm_enter_protected_mode() load CR3, then
    CR4 & ~PCIDE, then CR0, then CR4.
    
    However, setting CR4.PCIDE fails if CR3[11:0] != 0.  It's probably easier
    in the long run to replace rsm_enter_protected_mode() with an emulator
    callback that sets all the special registers (like KVM_SET_SREGS would
    do).  For now, set the PCID field of CR3 only after CR4.PCIDE is 1.
    
    Reported-by: Laszlo Ersek <lersek@redhat.com>
    Tested-by: Laszlo Ersek <lersek@redhat.com>
    Fixes: 660a5d517aaab9187f93854425c4c63f4a09195c
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e5c73b3b60e1b8d645749e0bdc93104ae6fa01f5
Author: Wanpeng Li <wanpeng.li@hotmail.com>
Date:   Thu Dec 7 00:30:08 2017 -0800

    KVM: X86: Fix load RFLAGS w/o the fixed bit
    
    commit d73235d17ba63b53dc0e1051dbc10a1f1be91b71 upstream.
    
     *** Guest State ***
     CR0: actual=0x0000000000000030, shadow=0x0000000060000010, gh_mask=fffffffffffffff7
     CR4: actual=0x0000000000002050, shadow=0x0000000000000000, gh_mask=ffffffffffffe871
     CR3 = 0x00000000fffbc000
     RSP = 0x0000000000000000  RIP = 0x0000000000000000
     RFLAGS=0x00000000         DR7 = 0x0000000000000400
            ^^^^^^^^^^
    
    The failed vmentry is triggered by the following testcase when ept=Y:
    
        #include <unistd.h>
        #include <sys/syscall.h>
        #include <string.h>
        #include <stdint.h>
        #include <linux/kvm.h>
        #include <fcntl.h>
        #include <sys/ioctl.h>
    
        long r[5];
        int main()
        {
            r[2] = open("/dev/kvm", O_RDONLY);
            r[3] = ioctl(r[2], KVM_CREATE_VM, 0);
            r[4] = ioctl(r[3], KVM_CREATE_VCPU, 7);
            struct kvm_regs regs = {
                    .rflags = 0,
            };
            ioctl(r[4], KVM_SET_REGS, &regs);
            ioctl(r[4], KVM_RUN, 0);
        }
    
    X86 RFLAGS bit 1 is fixed set, userspace can simply clearing bit 1
    of RFLAGS with KVM_SET_REGS ioctl which results in vmentry fails.
    This patch fixes it by oring X86_EFLAGS_FIXED during ioctl.
    
    Suggested-by: Jim Mattson <jmattson@google.com>
    Reviewed-by: David Hildenbrand <david@redhat.com>
    Reviewed-by: Quan Xu <quan.xu0@gmail.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Radim Krčmář <rkrcmar@redhat.com>
    Cc: Jim Mattson <jmattson@google.com>
    Signed-off-by: Wanpeng Li <wanpeng.li@hotmail.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 418dfce4fa630d9f9355451e583285045d612d9b
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date:   Mon Dec 4 12:11:02 2017 +0300

    pinctrl: cherryview: Mask all interrupts on Intel_Strago based systems
    
    commit d2b3c353595a855794f8b9df5b5bdbe8deb0c413 upstream.
    
    Guenter Roeck reported an interrupt storm on a prototype system which is
    based on Cyan Chromebook. The root cause turned out to be a incorrectly
    configured pin that triggers spurious interrupts. This will be fixed in
    coreboot but currently we need to prevent the interrupt storm from
    happening by masking all interrupts (but not GPEs) on those systems.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=197953
    Fixes: bcb48cca23ec ("pinctrl: cherryview: Do not mask all interrupts in probe")
    Reported-and-tested-by: Guenter Roeck <linux@roeck-us.net>
    Reported-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cb8b2fd1909eac2162ea73abf5c91053a05cf183
Author: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
Date:   Tue Nov 21 10:09:02 2017 +0100

    spi: xilinx: Detect stall with Unknown commands
    
    commit 5a1314fa697fc65cefaba64cd4699bfc3e6882a6 upstream.
    
    When the core is configured in C_SPI_MODE > 0, it integrates a
    lookup table that automatically configures the core in dual or quad mode
    based on the command (first byte on the tx fifo).
    
    Unfortunately, that list mode_?_memoy_*.mif does not contain all the
    supported commands by the flash.
    
    Since 4.14 spi-nor automatically tries to probe the flash using SFDP
    (command 0x5a), and that command is not part of the list_mode table.
    
    Whit the right combination of C_SPI_MODE and C_SPI_MEMORY this leads
    into a stall that can only be recovered with a soft rest.
    
    This patch detects this kind of stall and returns -EIO to the caller on
    those commands. spi-nor can handle this error properly:
    
    m25p80 spi0.0: Detected stall. Check C_SPI_MODE and C_SPI_MEMORY. 0x21 0x2404
    m25p80 spi0.0: SPI transfer failed: -5
    spi_master spi0: failed to transfer one message from queue
    m25p80 spi0.0: s25sl064p (8192 Kbytes)
    
    Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 373386ec3f70088a87cd0147d97e47cd1b59b51a
Author: Helge Deller <deller@gmx.de>
Date:   Tue Dec 12 21:52:26 2017 +0100

    parisc: Hide Diva-built-in serial aux and graphics card
    
    commit bcf3f1752a622f1372d3252d0fea8855d89812e7 upstream.
    
    Diva GSP card has built-in serial AUX port and ATI graphic card which simply
    don't work and which both don't have external connectors.  User Guides even
    mention that those devices shouldn't be used.
    So, prevent that Linux drivers try to enable those devices.
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 10b4a621f36791bcdca40ee4c513e721de9e3b32
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Fri Dec 15 03:07:18 2017 +0100

    PCI / PM: Force devices to D0 in pci_pm_thaw_noirq()
    
    commit 5839ee7389e893a31e4e3c9cf17b50d14103c902 upstream.
    
    It is incorrect to call pci_restore_state() for devices in low-power
    states (D1-D3), as that involves the restoration of MSI setup which
    requires MMIO to be operational and that is only the case in D0.
    
    However, pci_pm_thaw_noirq() may do that if the driver's "freeze"
    callbacks put the device into a low-power state, so fix it by making
    it force devices into D0 via pci_set_power_state() instead of trying
    to "update" their power state which is pointless.
    
    Fixes: e60514bd4485 (PCI/PM: Restore the status of PCI devices across hibernation)
    Reported-by: Thomas Gleixner <tglx@linutronix.de>
    Reported-by: Maarten Lankhorst <dev@mblankhorst.nl>
    Tested-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Maarten Lankhorst <dev@mblankhorst.nl>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Acked-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3176065495e17f1b7da86a104bf476b8ec0dcd38
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Dec 18 23:36:57 2017 +0100

    ALSA: usb-audio: Fix the missing ctl name suffix at parsing SU
    
    commit 5a15f289ee87eaf33f13f08a4909ec99d837ec5f upstream.
    
    The commit 89b89d121ffc ("ALSA: usb-audio: Add check return value for
    usb_string()") added the check of the return value from
    snd_usb_copy_string_desc(), which is correct per se, but it introduced
    a regression.  In the original code, either the "Clock Source",
    "Playback Source" or "Capture Source" suffix is added after the
    terminal string, while the commit changed it to add the suffix only
    when get_term_name() is failing.  It ended up with an incorrect ctl
    name like "PCM" instead of "PCM Capture Source".
    
    Also, even the original code has a similar bug: when the ctl name is
    generated from snd_usb_copy_string_desc() for the given iSelector, it
    also doesn't put the suffix.
    
    This patch addresses these issues: the suffix is added always when no
    static mapping is found.  Also the patch tries to put more comments
    and cleans up the if/else block for better readability in order to
    avoid the same pitfall again.
    
    Fixes: 89b89d121ffc ("ALSA: usb-audio: Add check return value for usb_string()")
    Reported-and-tested-by: Mauro Santos <registo.mailling@gmail.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit beab14a3eeb8e52b154db12c1fe802a27e10aa00
Author: Jussi Laako <jussi@sonarnerd.net>
Date:   Thu Dec 7 12:58:33 2017 +0200

    ALSA: usb-audio: Add native DSD support for Esoteric D-05X
    
    commit 866f7ed7d67936dcdbcddc111c8af878c918fe7c upstream.
    
    Adds VID:PID of Esoteric D-05X to the TEAC device id's.
    Renames the is_teac_50X_dac() function to is_teac_dsd_dac() to cover
    broader device family from the same corporation sharing the same USB
    audio implementation.
    
    Signed-off-by: Jussi Laako <jussi@sonarnerd.net>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cec92448c58eeb462eaec9677f3b41e61d589178
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Dec 14 16:44:12 2017 +0100

    ALSA: rawmidi: Avoid racy info ioctl via ctl device
    
    commit c1cfd9025cc394fd137a01159d74335c5ac978ce upstream.
    
    The rawmidi also allows to obtaining the information via ioctl of ctl
    API.  It means that user can issue an ioctl to the rawmidi device even
    when it's being removed as long as the control device is present.
    Although the code has some protection via the global register_mutex,
    its range is limited to the search of the corresponding rawmidi
    object, and the mutex is already unlocked at accessing the rawmidi
    object.  This may lead to a use-after-free.
    
    For avoiding it, this patch widens the application of register_mutex
    to the whole snd_rawmidi_info_select() function.  We have another
    mutex per rawmidi object, but this operation isn't very hot path, so
    it shouldn't matter from the performance POV.
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit becf7d87cda9c1afbe187d30590cd2c749bda3b6
Author: Johan Hovold <johan@kernel.org>
Date:   Sat Nov 11 16:38:44 2017 +0100

    mfd: twl6040: Fix child-node lookup
    
    commit 85e9b13cbb130a3209f21bd7933933399c389ffe upstream.
    
    Fix child-node lookup during probe, which ended up searching the whole
    device tree depth-first starting at the parent rather than just matching
    on its children.
    
    To make things worse, the parent node was prematurely freed, while the
    child node was leaked.
    
    Note that the CONFIG_OF compile guard can be removed as
    of_get_child_by_name() provides a !CONFIG_OF implementation which always
    fails.
    
    Fixes: 37e13cecaa14 ("mfd: Add support for Device Tree to twl6040")
    Fixes: ca2cad6ae38e ("mfd: Fix twl6040 build failure")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Acked-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f4c0796fdc8b09093037f6665efe350e6f81bb41
Author: Johan Hovold <johan@kernel.org>
Date:   Sat Nov 11 16:38:43 2017 +0100

    mfd: twl4030-audio: Fix sibling-node lookup
    
    commit 0a423772de2f3d7b00899987884f62f63ae00dcb 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 leaking any matching node.
    
    To make things worse, any matching node would not even necessarily be a
    child node as the whole device tree was searched depth-first starting at
    the parent.
    
    Fixes: 019a7e6b7b31 ("mfd: twl4030-audio: Add DT support")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Acked-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2db85cb211d0e5ce01922f1afec159769b408be7
Author: Jon Hunter <jonathanh@nvidia.com>
Date:   Tue Nov 14 14:43:27 2017 +0000

    mfd: cros ec: spi: Don't send first message too soon
    
    commit 15d8374874ded0bec37ef27f8301a6d54032c0e5 upstream.
    
    On the Tegra124 Nyan-Big chromebook the very first SPI message sent to
    the EC is failing.
    
    The Tegra SPI driver configures the SPI chip-selects to be active-high
    by default (and always has for many years). The EC SPI requires an
    active-low chip-select and so the Tegra chip-select is reconfigured to
    be active-low when the EC SPI driver calls spi_setup(). The problem is
    that if the first SPI message to the EC is sent too soon after
    reconfiguring the SPI chip-select, it fails.
    
    The EC SPI driver prevents back-to-back SPI messages being sent too
    soon by keeping track of the time the last transfer was sent via the
    variable 'last_transfer_ns'. To prevent the very first transfer being
    sent too soon, initialise the 'last_transfer_ns' variable after calling
    spi_setup() and before sending the first SPI message.
    
    Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
    Reviewed-by: Brian Norris <briannorris@chromium.org>
    Reviewed-by: Douglas Anderson <dianders@chromium.org>
    Acked-by: Benson Leung <bleung@chromium.org>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e81cff1cedefea0fcaf6fed805469eaf9a87192b
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date:   Thu Nov 30 13:39:27 2017 +0100

    crypto: mcryptd - protect the per-CPU queue with a lock
    
    commit 9abffc6f2efe46c3564c04312e52e07622d40e51 upstream.
    
    mcryptd_enqueue_request() grabs the per-CPU queue struct and protects
    access to it with disabled preemption. Then it schedules a worker on the
    same CPU. The worker in mcryptd_queue_worker() guards access to the same
    per-CPU variable with disabled preemption.
    
    If we take CPU-hotplug into account then it is possible that between
    queue_work_on() and the actual invocation of the worker the CPU goes
    down and the worker will be scheduled on _another_ CPU. And here the
    preempt_disable() protection does not work anymore. The easiest thing is
    to add a spin_lock() to guard access to the list.
    
    Another detail: mcryptd_queue_worker() is not processing more than
    MCRYPTD_BATCH invocation in a row. If there are still items left, then
    it will invoke queue_work() to proceed with more later. *I* would
    suggest to simply drop that check because it does not use a system
    workqueue and the workqueue is already marked as "CPU_INTENSIVE". And if
    preemption is required then the scheduler should do it.
    However if queue_work() is used then the work item is marked as CPU
    unbound. That means it will try to run on the local CPU but it may run
    on another CPU as well. Especially with CONFIG_DEBUG_WQ_FORCE_RR_CPU=y.
    Again, the preempt_disable() won't work here but lock which was
    introduced will help.
    In order to keep work-item on the local CPU (and avoid RR) I changed it
    to queue_work_on().
    
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d31a207aaf070edc94cffe6130f06e070711f3ce
Author: Dan Williams <dan.j.williams@intel.com>
Date:   Thu Nov 30 19:42:52 2017 -0800

    acpi, nfit: fix health event notification
    
    commit adf6895754e2503d994a765535fd1813f8834674 upstream.
    
    Integration testing with a BIOS that generates injected health event
    notifications fails to communicate those events to userspace. The nfit
    driver neglects to link the ACPI DIMM device with the necessary driver
    data so acpi_nvdimm_notify() fails this lookup:
    
            nfit_mem = dev_get_drvdata(dev);
            if (nfit_mem && nfit_mem->flags_attr)
                    sysfs_notify_dirent(nfit_mem->flags_attr);
    
    Add the necessary linkage when installing the notification handler and
    clean it up when the nfit driver instance is torn down.
    
    Cc: Toshi Kani <toshi.kani@hpe.com>
    Cc: Vishal Verma <vishal.l.verma@intel.com>
    Fixes: ba9c8dd3c222 ("acpi, nfit: add dimm device notification support")
    Reported-by: Daniel Osawa <daniel.k.osawa@intel.com>
    Tested-by: Daniel Osawa <daniel.k.osawa@intel.com>
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 54c74d38819df62c67f420bb654996637124ae30
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Dec 14 13:31:16 2017 +0100

    ACPI: APEI / ERST: Fix missing error handling in erst_reader()
    
    commit bb82e0b4a7e96494f0c1004ce50cec3d7b5fb3d1 upstream.
    
    The commit f6f828513290 ("pstore: pass allocated memory region back to
    caller") changed the check of the return value from erst_read() in
    erst_reader() in the following way:
    
            if (len == -ENOENT)
                    goto skip;
    -       else if (len < 0) {
    -               rc = -1;
    +       else if (len < sizeof(*rcd)) {
    +               rc = -EIO;
                    goto out;
    
    This introduced another bug: since the comparison with sizeof() is
    cast to unsigned, a negative len value doesn't hit any longer.
    As a result, when an error is returned from erst_read(), the code
    falls through, and it may eventually lead to some weird thing like
    memory corruption.
    
    This patch adds the negative error value check more explicitly for
    addressing the issue.
    
    Fixes: f6f828513290 (pstore: pass allocated memory region back to caller)
    Tested-by: Jerry Tang <jtang@suse.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Acked-by: Kees Cook <keescook@chromium.org>
    Reviewed-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>