commit b8ce8232fcc37fe7a97db79ea0a5f32098c25e72
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Dec 29 17:53:50 2017 +0100

    Linux 4.14.10

commit af1eddcc176e36104f50abf32b14cb979385d9f6
Author: John Einar Reitan <john.einar@gmail.com>
Date:   Sun Dec 24 00:03:44 2017 +0100

    Revert "ipmi_si: fix memory leak on new_smi"
    
    This reverts commit c97e41076a298dbc4e910c33048e553658388eed, which
    incorrectly was taken from upstream c0a32fe13cd323ca9420500b16fd69589c9ba91e.
    
    The referenced memory leak doesn't exist on the 4.14 stable branch as
    the new logic of doing the kzalloc hasn't moved to this function.
    By adding this kfree we actually end up doing double kfree as all callers of
    smi_add does a kfree on error.
    
    Sample with SLAB_FREELIST_HARDENED=y:
    
    ipmi_si: Adding ACPI-specified kcs state machine
    IPMI System Interface driver.
    ipmi_si: probing via SPMI
    ipmi_si: SPMI: io 0xca2 regsize 1 spacing 1 irq 0
    (NULL device *): SPMI-specified kcs state machine: duplicate
    ------------[ cut here ]------------
    kernel BUG at mm/slub.c:295!
    invalid opcode: 0000 [#1] SMP
    Modules linked in:
    CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.14.8-gentoo-r1 #5
    Hardware name: Supermicro X9SCL/X9SCM/X9SCL/X9SCM, BIOS 2.2 02/20/2015
    task: ffff88080c208000 task.stack: ffffc90000020000
    RIP: 0010:kfree+0xf5/0x157
    RSP: 0000:ffffc90000023e58 EFLAGS: 00010246
    RAX: ffff88080b2e6200 RBX: ffff88080b2e6200 RCX: ffff88080b2e6200
    RDX: 000000000000008e RSI: ffff88082fc1cd60 RDI: ffff88080c003080
    RBP: ffffc90000002808 R08: 000000000001cd60 R09: ffffffff814da10e
    R10: ffffea00202cb980 R11: 000000000000005c R12: ffffffff814da10e
    R13: 00000000ffffffed R14: ffffffff82317bd0 R15: 0000000000000003
    FS:  0000000000000000(0000) GS:ffff88082fc00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000000000000000 CR3: 0000000002e09001 CR4: 00000000001606f0
    Call Trace:
     init_ipmi_si+0x493/0x5c7
     ? cleanup_ipmi_si+0x84/0x84
     ? set_debug_rodata+0xc/0xc
     ? kthread+0x4c/0x11c
     do_one_initcall+0x94/0x13d
     ? set_debug_rodata+0xc/0xc
     kernel_init_freeable+0x112/0x18e
     ? rest_init+0xa0/0xa0
     kernel_init+0x5/0xe1
     ret_from_fork+0x22/0x30
    Code: 24 18 49 8b 7a 30 48 8b 37 65 48 8b 56 08 65 48 03 35 3a 29 e2 7e 4c 3b 56 10 75 39 48 8b 0e 48 63 47 20 48 01 d8 48 39 cb 75 02 <0f> 0b 49 89 c0 4c 33
     87 40 01 00 00 4c 31 c1 48 89 08 48 8d 4a
    ---[ end trace 4ac2e2c100842676 ]---
    
    Signed-off-by: John Einar Reitan <john.einar@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 646809937c02396f06a38a38ac686eff1b5e85fb
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 c00802d53ddf3724602c1da0344c6fcaf9001358
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 b7c0181c47c4369cfccd97bca7e9e211026aa94c
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 01b1a29e32c13c69c0fd8a70e6cd66ac91316862
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 166f39bc340d0eb739d31ddd347df593d7b6ff97
Author: Vishal Verma <vishal.l.verma@intel.com>
Date:   Mon Dec 18 09:28:39 2017 -0700

    libnvdimm, btt: Fix an incompatibility in the log layout
    
    commit 24e3a7fb60a9187e5df90e5fa655ffc94b9c4f77 upstream.
    
    Due to a spec misinterpretation, the Linux implementation of the BTT log
    area had different padding scheme from other implementations, such as
    UEFI and NVML.
    
    This fixes the padding scheme, and defaults to it for new BTT layouts.
    We attempt to detect the padding scheme in use when probing for an
    existing BTT. If we detect the older/incompatible scheme, we continue
    using it.
    
    Reported-by: Juston Li <juston.li@intel.com>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Fixes: 5212e11fde4d ("nd_btt: atomic sector updates")
    Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6d80b15a226e59ebbc3ca8c14b65885bc8ffb2b9
Author: Dan Williams <dan.j.williams@intel.com>
Date:   Mon Dec 4 14:07:43 2017 -0800

    libnvdimm, dax: fix 1GB-aligned namespaces vs physical misalignment
    
    commit 41fce90f26333c4fa82e8e43b9ace86c4e8a0120 upstream.
    
    The following namespace configuration attempt:
    
        # ndctl create-namespace -e namespace0.0 -m devdax -a 1G -f
        libndctl: ndctl_dax_enable: dax0.1: failed to enable
          Error: namespace0.0: failed to enable
    
        failed to reconfigure namespace: No such device or address
    
    ...fails when the backing memory range is not physically aligned to 1G:
    
        # cat /proc/iomem | grep Persistent
        210000000-30fffffff : Persistent Memory (legacy)
    
    In the above example the 4G persistent memory range starts and ends on a
    256MB boundary.
    
    We handle this case correctly when needing to handle cases that violate
    section alignment (128MB) collisions against "System RAM", and we simply
    need to extend that padding/truncation for the 1GB alignment use case.
    
    Fixes: 315c562536c4 ("libnvdimm, pfn: add 'align' attribute...")
    Reported-and-tested-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 e7681f90a45a8f0eb6da8c0dc68a8334e3ed2251
Author: Maxime Ripard <maxime.ripard@free-electrons.com>
Date:   Thu Dec 7 16:58:50 2017 +0100

    drm/sun4i: Fix error path handling
    
    commit 92411f6d7f1afcc95e54295d40e96a75385212ec upstream.
    
    The commit 4c7f16d14a33 ("drm/sun4i: Fix TCON clock and regmap
    initialization sequence") moved a bunch of logic around, but forgot to
    update the gotos after the introduction of the err_free_dotclock label.
    
    It means that if we fail later that the one introduced in that commit,
    we'll just to the old label which isn't free the clock we created. This
    will result in a breakage as soon as someone tries to do something with
    that clock, since its resources will have been long reclaimed.
    
    Fixes: 4c7f16d14a33 ("drm/sun4i: Fix TCON clock and regmap initialization sequence")
    Reviewed-by: Chen-Yu Tsai <wens@csie.org>
    Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/f83c1cebc731f0b4251f5ddd7b38c718cd79bb0b.1512662253.git-series.maxime.ripard@free-electrons.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6209cb514d977e323a7dad1b0ee7e83fc906215d
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Mon Dec 4 13:25:13 2017 +0000

    drm/i915: Flush pending GTT writes before unbinding
    
    commit 2797c4a11f373b2545c2398ccb02e362ee66a142 upstream.
    
    From the shrinker paths, we want to relinquish the GPU and GGTT access to
    the object, releasing the backing storage back to the system for
    swapout. As a part of that process we would unpin the pages, marking
    them for access by the CPU (for the swapout/swapin). However, if that
    process was interrupted after unbind the vma, we missed a flush of the
    inflight GGTT writes before we made that GTT space available again for
    reuse, with the prospect that we would redirect them to another page.
    
    The bug dates back to the introduction of multiple GGTT vma, but the
    code itself dates to commit 02bef8f98d26 ("drm/i915: Unbind closed vma
    for i915_gem_object_unbind()").
    
    Fixes: 02bef8f98d26 ("drm/i915: Unbind closed vma for i915_gem_object_unbind()")
    Fixes: c5ad54cf7dd8 ("drm/i915: Use partial view in mmap fault handler")
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20171204132513.7303-1-chris@chris-wilson.co.uk
    (cherry picked from commit 5888fc9eac3c2ff96e76aeeb865fdb46ab2d711e)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a971d10f67df27a16cce5084092e151dba3e037d
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 e2d769198ff7cb3eecb60a427706d498d87aa0a0
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 6461005967ed1a92ad67f8d864fdb3f0794a8682
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 6cc3f6f10240df375f6d7457187b467c1817bdad
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 41e1386388dc53bc0b9d7744fd1a99567d737fed
Author: Wanpeng Li <wanpeng.li@hotmail.com>
Date:   Mon Dec 4 22:21:30 2017 -0800

    KVM: MMU: Fix infinite loop when there is no available mmu page
    
    commit ed52870f4676489124d8697fd00e6ae6c504e586 upstream.
    
    The below test case can cause infinite loop in kvm when ept=0.
    
        #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);
            ioctl(r[4], KVM_RUN, 0);
        }
    
    It doesn't setup the memory regions, mmu_alloc_shadow/direct_roots() in
    kvm return 1 when kvm fails to allocate root page table which can result
    in beblow infinite loop:
    
        vcpu_run() {
            for (;;) {
                    r = vcpu_enter_guest()::kvm_mmu_reload() returns 1
                    if (r <= 0)
                            break;
                    if (need_resched())
                            cond_resched();
          }
        }
    
    This patch fixes it by returning -ENOSPC when there is no available kvm mmu
    page for root page table.
    
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Radim Krčmář <rkrcmar@redhat.com>
    Fixes: 26eeb53cf0f (KVM: MMU: Bail out immediately if there is no available mmu page)
    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 5aa30b450a8b8b6c8a0921e00e900c0ab9b8c4ae
Author: Laurent Vivier <lvivier@redhat.com>
Date:   Tue Dec 12 18:23:56 2017 +0100

    KVM: PPC: Book3S HV: Fix pending_pri value in kvmppc_xive_get_icp()
    
    commit 7333b5aca412d6ad02667b5a513485838a91b136 upstream.
    
    When we migrate a VM from a POWER8 host (XICS) to a POWER9 host
    (XICS-on-XIVE), we have an error:
    
    qemu-kvm: Unable to restore KVM interrupt controller state \
              (0xff000000) for CPU 0: Invalid argument
    
    This is because kvmppc_xics_set_icp() checks the new state
    is internaly consistent, and especially:
    
    ...
       1129         if (xisr == 0) {
       1130                 if (pending_pri != 0xff)
       1131                         return -EINVAL;
    ...
    
    On the other side, kvmppc_xive_get_icp() doesn't set
    neither the pending_pri value, nor the xisr value (set to 0)
    (and kvmppc_xive_set_icp() ignores the pending_pri value)
    
    As xisr is 0, pending_pri must be set to 0xff.
    
    Fixes: 5af50993850a ("KVM: PPC: Book3S HV: Native usage of the XIVE interrupt controller")
    Signed-off-by: Laurent Vivier <lvivier@redhat.com>
    Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8708f682836827e8c593e370430a3156766b2fe2
Author: Cédric Le Goater <clg@kaod.org>
Date:   Tue Dec 12 12:02:04 2017 +0000

    KVM: PPC: Book3S: fix XIVE migration of pending interrupts
    
    commit dc1c4165d189350cb51bdd3057deb6ecd164beda upstream.
    
    When restoring a pending interrupt, we are setting the Q bit to force
    a retrigger in xive_finish_unmask(). But we also need to force an EOI
    in this case to reach the same initial state : P=1, Q=0.
    
    This can be done by not setting 'old_p' for pending interrupts which
    will inform xive_finish_unmask() that an EOI needs to be sent.
    
    Fixes: 5af50993850a ("KVM: PPC: Book3S HV: Native usage of the XIVE interrupt controller")
    Suggested-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Signed-off-by: Cédric Le Goater <clg@kaod.org>
    Reviewed-by: Laurent Vivier <lvivier@redhat.com>
    Tested-by: Laurent Vivier <lvivier@redhat.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4e9cca9267feb13658a3bb6785a5649b76e684e0
Author: Marc Zyngier <marc.zyngier@arm.com>
Date:   Thu Dec 7 11:45:45 2017 +0000

    KVM: arm/arm64: Fix HYP unmapping going off limits
    
    commit 7839c672e58bf62da8f2f0197fefb442c02ba1dd upstream.
    
    When we unmap the HYP memory, we try to be clever and unmap one
    PGD at a time. If we start with a non-PGD aligned address and try
    to unmap a whole PGD, things go horribly wrong in unmap_hyp_range
    (addr and end can never match, and it all goes really badly as we
    keep incrementing pgd and parse random memory as page tables...).
    
    The obvious fix is to let unmap_hyp_range do what it does best,
    which is to iterate over a range.
    
    The size of the linear mapping, which begins at PAGE_OFFSET, can be
    easily calculated by subtracting PAGE_OFFSET form high_memory, because
    high_memory is defined as the linear map address of the last byte of
    DRAM, plus one.
    
    The size of the vmalloc region is given trivially by VMALLOC_END -
    VMALLOC_START.
    
    Reported-by: Andre Przywara <andre.przywara@arm.com>
    Tested-by: Andre Przywara <andre.przywara@arm.com>
    Reviewed-by: Christoffer Dall <christoffer.dall@linaro.org>
    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 8a74c8e87e46fa85fbd0c73273c831559c25d576
Author: Julien Thierry <julien.thierry@arm.com>
Date:   Wed Dec 6 17:09:49 2017 +0000

    arm64: kvm: Prevent restoring stale PMSCR_EL1 for vcpu
    
    commit bfe766cf65fb65e68c4764f76158718560bdcee5 upstream.
    
    When VHE is not present, KVM needs to save and restores PMSCR_EL1 when
    possible. If SPE is used by the host, value of PMSCR_EL1 cannot be saved
    for the guest.
    If the host starts using SPE between two save+restore on the same vcpu,
    restore will write the value of PMSCR_EL1 read during the first save.
    
    Make sure __debug_save_spe_nvhe clears the value of the saved PMSCR_EL1
    when the guest cannot use SPE.
    
    Signed-off-by: Julien Thierry <julien.thierry@arm.com>
    Cc: Christoffer Dall <christoffer.dall@linaro.org>
    Cc: Marc Zyngier <marc.zyngier@arm.com>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Reviewed-by: Will Deacon <will.deacon@arm.com>
    Reviewed-by: Christoffer Dall <christoffer.dall@linaro.org>
    Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit efc9b7ae524dfbd4cb9122d2f1d4e9c33d0f11dd
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 ed1918e287547d92a795729993ce8e6ca7940eda
Author: Maxime Chevallier <maxime.chevallier@smile.fr>
Date:   Mon Nov 27 15:16:32 2017 +0100

    spi: a3700: Fix clk prescaling for coefficient over 15
    
    commit 251c201bf4f8b5bf4f1ccb4f8920eed2e1f57580 upstream.
    
    The Armada 3700 SPI controller has 2 ranges of prescaler coefficients.
    One ranging from 0 to 15 by steps of 1, and one ranging from 0 to 30 by
    steps of 2.
    
    This commit fixes the prescaler coefficients that are over 15 so that it
    uses the correct range of values. The prescaling coefficient is rounded
    to the upper value if it is odd.
    
    This was tested on Espressobin with spidev and a locigal analyser.
    
    Signed-off-by: Maxime Chevallier <maxime.chevallier@smile.fr>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e8f28db0f737690e3d7ecb26cfaf60c7af74f7e5
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 1b1f78c02c79d8e5398d3a0cbf45c4a3dee2e9ee
Author: John David Anglin <dave.anglin@bell.net>
Date:   Mon Nov 13 19:35:33 2017 -0500

    Revert "parisc: Re-enable interrupts early"
    
    commit 9352aeada4d8d8753fc0e414fbfe8fdfcb68a12c upstream.
    
    This reverts commit 5c38602d83e584047906b41b162ababd4db4106d.
    
    Interrupts can't be enabled early because the register saves are done on
    the thread stack prior to switching to the IRQ stack.  This caused stack
    overflows and the thread stack needed increasing to 32k.  Even then,
    stack overflows still occasionally occurred.
    
    Background:
    Even with a 32 kB thread stack, I have seen instances where the thread
    stack overflowed on the mx3210 buildd.  Detection of stack overflow only
    occurs when we have an external interrupt.  When an external interrupt
    occurs, we switch to the thread stack if we are not already on a kernel
    stack.  Then, registers and specials are saved to the kernel stack.
    
    The bug occurs in intr_return where interrupts are reenabled prior to
    returning from the interrupt.  This was done incase we need to schedule
    or deliver signals.  However, it introduces the possibility that
    multiple external interrupts may occur on the thread stack and cause a
    stack overflow.  These might not be detected and cause the kernel to
    misbehave in random ways.
    
    This patch changes the code back to only reenable interrupts when we are
    going to schedule or deliver signals.  As a result, we generally return
    from an interrupt before reenabling interrupts.  This minimizes the
    growth of the thread stack.
    
    Fixes: 5c38602d83e5 ("parisc: Re-enable interrupts early")
    Signed-off-by: John David Anglin <dave.anglin@bell.net>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 13a41fbd867ae482650aab1cee068e1f7f5ad94a
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 117b8b85e5777b76128a808533c4f711be564360
Author: Helge Deller <deller@gmx.de>
Date:   Tue Dec 12 21:32:16 2017 +0100

    parisc: Fix indenting in puts()
    
    commit 203c110b39a89b48156c7450504e454fedb7f7f6 upstream.
    
    Static analysis tools complain that we intended to have curly braces
    around this indent block. In this case this assumption is wrong, so fix
    the indenting.
    
    Fixes: 2f3c7b8137ef ("parisc: Add core code for self-extracting kernel")
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 482b6942a8c1e5110a44787f6e72e0d0775bf4c0
Author: Helge Deller <deller@gmx.de>
Date:   Tue Dec 12 21:25:41 2017 +0100

    parisc: Align os_hpmc_size on word boundary
    
    commit 0ed9d3de5f8f97e6efd5ca0e3377cab5f0451ead upstream.
    
    The os_hpmc_size variable sometimes wasn't aligned at word boundary and thus
    triggered the unaligned fault handler at startup.
    Fix it by aligning it properly.
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3ef1c33f98c82876555813e301aca7a765f28f92
Author: Shaohua Li <shli@fb.com>
Date:   Wed Dec 20 11:10:17 2017 -0700

    block-throttle: avoid double charge
    
    commit 111be883981748acc9a56e855c8336404a8e787c upstream.
    
    If a bio is throttled and split after throttling, the bio could be
    resubmited and enters the throttling again. This will cause part of the
    bio to be charged multiple times. If the cgroup has an IO limit, the
    double charge will significantly harm the performance. The bio split
    becomes quite common after arbitrary bio size change.
    
    To fix this, we always set the BIO_THROTTLED flag if a bio is throttled.
    If the bio is cloned/split, we copy the flag to new bio too to avoid a
    double charge. However, cloned bio could be directed to a new disk,
    keeping the flag be a problem. The observation is we always set new disk
    for the bio in this case, so we can clear the flag in bio_set_dev().
    
    This issue exists for a long time, arbitrary bio size change just makes
    it worse, so this should go into stable at least since v4.2.
    
    V1-> V2: Not add extra field in bio based on discussion with Tejun
    
    Cc: Vivek Goyal <vgoyal@redhat.com>
    Acked-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Shaohua Li <shli@fb.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f349652293fb79fbd5768dfc18605200177b74d7
Author: Jens Axboe <axboe@kernel.dk>
Date:   Wed Dec 20 13:13:58 2017 -0700

    block: unalign call_single_data in struct request
    
    commit 4ccafe032005e9b96acbef2e389a4de5b1254add upstream.
    
    A previous change blindly added massive alignment to the
    call_single_data structure in struct request. This ballooned it in size
    from 296 to 320 bytes on my setup, for no valid reason at all.
    
    Use the unaligned struct __call_single_data variant instead.
    
    Fixes: 966a967116e69 ("smp: Avoid using two cache lines for struct call_single_data")
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d8f477a5cd2021552b135764b77df7c39b7dc504
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 2c7b98ffac666d4f54d1b57b82c3341f473f7dc5
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 39384674586f371503728661d0ded892c348717a
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 70709c277cdcee4e1700e9155a316700ba1446b9
Author: Guneshwor Singh <guneshwor.o.singh@intel.com>
Date:   Thu Dec 7 18:06:20 2017 +0530

    ALSA: hda - Add vendor id for Cannonlake HDMI codec
    
    commit 2b4584d00a6bc02b63ab3c7213060d41a74bdff1 upstream.
    
    Cannonlake HDMI codec has the same nid as Geminilake. This adds the
    codec entry for it.
    
    Signed-off-by: Guneshwor Singh <guneshwor.o.singh@intel.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7a6a8463978679e3453785270543abadecb07ab7
Author: Kailang Yang <kailang@realtek.com>
Date:   Thu Dec 14 15:28:58 2017 +0800

    ALSA: hda/realtek - Fix Dell AIO LineOut issue
    
    commit 9226665159f0367ad08bc7d5dd194aeadb90316f upstream.
    
    Dell AIO had LineOut jack.
    Add LineOut verb into this patch.
    
    [ Additional notes:
      the ALC274 codec seems requiring the fixed pin / DAC connections for
      HP / line-out pins for enabling EQ for speakers; i.e. the HP / LO
      pins expect to be connected with NID 0x03 while keeping the speaker
      with NID 0x02.  However, by adding a new line-out pin, the
      auto-parser assigns the NID 0x02 for HP/LO pins as primary outputs.
      As an easy workaround, we provide the preferred_pairs[] to map
      forcibly for these pins. -- tiwai ]
    
    Fixes: 75ee94b20b46 ("ALSA: hda - fix headset mic problem for Dell machines with alc274")
    Signed-off-by: Kailang Yang <kailang@realtek.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 065a28657370ce3a7ebbc13030ba6231db4a6138
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 637de99c7a1523b31aedb83537b0fcba8775663e
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 6300daa071b21eec1e7411609a09f050966b392e
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 de3b66c01edc8ac2bea82c0337e75f6b5498bf37
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 f09fca41e29c68944e75ab5f65a2efcfcc88aceb
Author: Stephan Mueller <smueller@chronox.de>
Date:   Fri Dec 8 11:50:37 2017 +0100

    crypto: af_alg - fix race accessing cipher request
    
    commit d53c5135792319e095bb126bc43b2ee98586f7fe upstream.
    
    When invoking an asynchronous cipher operation, the invocation of the
    callback may be performed before the subsequent operations in the
    initial code path are invoked. The callback deletes the cipher request
    data structure which implies that after the invocation of the
    asynchronous cipher operation, this data structure must not be accessed
    any more.
    
    The setting of the return code size with the request data structure must
    therefore be moved before the invocation of the asynchronous cipher
    operation.
    
    Fixes: e870456d8e7c ("crypto: algif_skcipher - overhaul memory management")
    Fixes: d887c52d6ae4 ("crypto: algif_aead - overhaul memory management")
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Stephan Mueller <smueller@chronox.de>
    Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c692698ebebed838627aa3879e30959c4a75f033
Author: Stephan Mueller <smueller@chronox.de>
Date:   Wed Nov 29 12:02:23 2017 +0100

    crypto: af_alg - wait for data at beginning of recvmsg
    
    commit 11edb555966ed2c66c533d17c604f9d7e580a829 upstream.
    
    The wait for data is a non-atomic operation that can sleep and therefore
    potentially release the socket lock. The release of the socket lock
    allows another thread to modify the context data structure. The waiting
    operation for new data therefore must be called at the beginning of
    recvmsg. This prevents a race condition where checks of the members of
    the context data structure are performed by recvmsg while there is a
    potential for modification of these values.
    
    Fixes: e870456d8e7c ("crypto: algif_skcipher - overhaul memory management")
    Fixes: d887c52d6ae4 ("crypto: algif_aead - overhaul memory management")
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Stephan Mueller <smueller@chronox.de>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 88990591f0b0e7d4aedf0255fc26a09a2f899212
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 29082870f58a9b0c793bea745de52a07c74f09aa
Author: Eric Biggers <ebiggers@google.com>
Date:   Wed Nov 29 01:18:57 2017 -0800

    crypto: skcipher - set walk.iv for zero-length inputs
    
    commit 2b4f27c36bcd46e820ddb9a8e6fe6a63fa4250b8 upstream.
    
    All the ChaCha20 algorithms as well as the ARM bit-sliced AES-XTS
    algorithms call skcipher_walk_virt(), then access the IV (walk.iv)
    before checking whether any bytes need to be processed (walk.nbytes).
    
    But if the input is empty, then skcipher_walk_virt() doesn't set the IV,
    and the algorithms crash trying to use the uninitialized IV pointer.
    
    Fix it by setting the IV earlier in skcipher_walk_virt().  Also fix it
    for the AEAD walk functions.
    
    This isn't a perfect solution because we can't actually align the IV to
    ->cra_alignmask unless there are bytes to process, for one because the
    temporary buffer for the aligned IV is freed by skcipher_walk_done(),
    which is only called when there are bytes to process.  Thus, algorithms
    that require aligned IVs will still need to avoid accessing the IV when
    walk.nbytes == 0.  Still, many algorithms/architectures are fine with
    IVs having any alignment, and even for those that aren't, a misaligned
    pointer bug is much less severe than an uninitialized pointer bug.
    
    This change also matches the behavior of the older blkcipher_walk API.
    
    Fixes: 0cabf2af6f5a ("crypto: skcipher - Fix crash on zero-length input")
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 94e0c5ab52e2bdc1ddbaec32ca0e477a2737eb04
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 7a5d5789819417d67ccb6c81f9339ee75f97370a
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>

commit 752d01704ad18371fa6d15ef16f5dea7972be821
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Sat Dec 23 19:45:11 2017 +0100

    x86/cpu_entry_area: Prevent wraparound in setup_cpu_entry_area_ptes() on 32bit
    
    commit f6c4fd506cb626e4346aa81688f255e593a7c5a0 upstream.
    
    The loop which populates the CPU entry area PMDs can wrap around on 32bit
    machines when the number of CPUs is small.
    
    It worked wonderful for NR_CPUS=64 for whatever reason and the moron who
    wrote that code did not bother to test it with !SMP.
    
    Check for the wraparound to fix it.
    
    Fixes: 92a0f81d8957 ("x86/cpu_entry_area: Move it out of the fixmap")
    Reported-by: kernel test robot <fengguang.wu@intel.com>
    Signed-off-by: Thomas "Feels stupid" Gleixner <tglx@linutronix.de>
    Tested-by: Borislav Petkov <bp@alien8.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 763f7eaf606281ccfaa2f95445219f797697ed70
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Sun Dec 17 10:56:29 2017 +0100

    init: Invoke init_espfix_bsp() from mm_init()
    
    commit 613e396bc0d4c7604fba23256644e78454c68cf6 upstream.
    
    init_espfix_bsp() needs to be invoked before the page table isolation
    initialization. Move it into mm_init() which is the place where pti_init()
    will be added.
    
    While at it get rid of the #ifdeffery and provide proper stub functions.
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3440093266b786d8b8b2506ea788f4462437cd7a
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Wed Dec 20 18:51:31 2017 +0100

    x86/cpu_entry_area: Move it out of the fixmap
    
    commit 92a0f81d89571e3e8759366e050ee05cc545ef99 upstream.
    
    Put the cpu_entry_area into a separate P4D entry. The fixmap gets too big
    and 0-day already hit a case where the fixmap PTEs were cleared by
    cleanup_highmap().
    
    Aside of that the fixmap API is a pain as it's all backwards.
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1b0eddf0a1d1beabc2f3b23bf807758667c30fc7
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Wed Dec 20 18:28:54 2017 +0100

    x86/cpu_entry_area: Move it to a separate unit
    
    commit ed1bbc40a0d10e0c5c74fe7bdc6298295cf40255 upstream.
    
    Separate the cpu_entry_area code out of cpu/common.c and the fixmap.
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b6167aeb9faf5966daca3f9f973e1b428a43510c
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Tue Dec 5 13:34:47 2017 +0100

    x86/mm: Create asm/invpcid.h
    
    commit 1a3b0caeb77edeac5ce5fa05e6a61c474c9a9745 upstream.
    
    Unclutter tlbflush.h a little.
    
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: David Laight <David.Laight@aculab.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: Eduardo Valentin <eduval@amazon.com>
    Cc: Greg KH <gregkh@linuxfoundation.org>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: aliguori@amazon.com
    Cc: daniel.gruss@iaik.tugraz.at
    Cc: hughd@google.com
    Cc: keescook@google.com
    Cc: linux-mm@kvack.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit acefb4516bcecc7d084205e00fe2de589d8259bc
Author: Dave Hansen <dave.hansen@linux.intel.com>
Date:   Mon Dec 4 15:07:56 2017 +0100

    x86/mm: Put MMU to hardware ASID translation in one place
    
    commit dd95f1a4b5ca904c78e6a097091eb21436478abb upstream.
    
    There are effectively two ASID types:
    
     1. The one stored in the mmu_context that goes from 0..5
     2. The one programmed into the hardware that goes from 1..6
    
    This consolidates the locations where converting between the two (by doing
    a +1) to a single place which gives us a nice place to comment.
    PAGE_TABLE_ISOLATION will also need to, given an ASID, know which hardware
    ASID to flush for the userspace mapping.
    
    Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: David Laight <David.Laight@aculab.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: Eduardo Valentin <eduval@amazon.com>
    Cc: Greg KH <gregkh@linuxfoundation.org>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: aliguori@amazon.com
    Cc: daniel.gruss@iaik.tugraz.at
    Cc: hughd@google.com
    Cc: keescook@google.com
    Cc: linux-mm@kvack.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1765d0a565ee2585cf7b400e81be9a4da96fd7da
Author: Dave Hansen <dave.hansen@linux.intel.com>
Date:   Mon Dec 4 15:07:55 2017 +0100

    x86/mm: Remove hard-coded ASID limit checks
    
    commit cb0a9144a744e55207e24dcef812f05cd15a499a upstream.
    
    First, it's nice to remove the magic numbers.
    
    Second, PAGE_TABLE_ISOLATION is going to consume half of the available ASID
    space.  The space is currently unused, but add a comment to spell out this
    new restriction.
    
    Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: David Laight <David.Laight@aculab.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: Eduardo Valentin <eduval@amazon.com>
    Cc: Greg KH <gregkh@linuxfoundation.org>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: aliguori@amazon.com
    Cc: daniel.gruss@iaik.tugraz.at
    Cc: hughd@google.com
    Cc: keescook@google.com
    Cc: linux-mm@kvack.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b72e0abe99abaa4e64db83776c11ff6847e829cf
Author: Dave Hansen <dave.hansen@linux.intel.com>
Date:   Mon Dec 4 15:07:54 2017 +0100

    x86/mm: Move the CR3 construction functions to tlbflush.h
    
    commit 50fb83a62cf472dc53ba23bd3f7bd6c1b2b3b53e upstream.
    
    For flushing the TLB, the ASID which has been programmed into the hardware
    must be known.  That differs from what is in 'cpu_tlbstate'.
    
    Add functions to transform the 'cpu_tlbstate' values into to the one
    programmed into the hardware (CR3).
    
    It's not easy to include mmu_context.h into tlbflush.h, so just move the
    CR3 building over to tlbflush.h.
    
    Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: David Laight <David.Laight@aculab.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: Eduardo Valentin <eduval@amazon.com>
    Cc: Greg KH <gregkh@linuxfoundation.org>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: aliguori@amazon.com
    Cc: daniel.gruss@iaik.tugraz.at
    Cc: hughd@google.com
    Cc: keescook@google.com
    Cc: linux-mm@kvack.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 29606f10f399dd159ab6718d05060294b29a4481
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Tue Dec 5 13:34:52 2017 +0100

    x86/mm: Add comments to clarify which TLB-flush functions are supposed to flush what
    
    commit 3f67af51e56f291d7417d77c4f67cd774633c5e1 upstream.
    
    Per popular request..
    
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: David Laight <David.Laight@aculab.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: Eduardo Valentin <eduval@amazon.com>
    Cc: Greg KH <gregkh@linuxfoundation.org>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: aliguori@amazon.com
    Cc: daniel.gruss@iaik.tugraz.at
    Cc: hughd@google.com
    Cc: keescook@google.com
    Cc: linux-mm@kvack.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6472c50292d4e4b342f4ea4e3e46e7786ca5c99c
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Tue Dec 5 13:34:46 2017 +0100

    x86/mm: Remove superfluous barriers
    
    commit b5fc6d943808b570bdfbec80f40c6b3855f1c48b upstream.
    
    atomic64_inc_return() already implies smp_mb() before and after.
    
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: David Laight <David.Laight@aculab.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: Eduardo Valentin <eduval@amazon.com>
    Cc: Greg KH <gregkh@linuxfoundation.org>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: aliguori@amazon.com
    Cc: daniel.gruss@iaik.tugraz.at
    Cc: hughd@google.com
    Cc: keescook@google.com
    Cc: linux-mm@kvack.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a0edc4947db9a3cbc6219143ff72e163ad7dbf80
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Tue Dec 5 13:34:49 2017 +0100

    x86/mm: Use __flush_tlb_one() for kernel memory
    
    commit a501686b2923ce6f2ff2b1d0d50682c6411baf72 upstream.
    
    __flush_tlb_single() is for user mappings, __flush_tlb_one() for
    kernel mappings.
    
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: David Laight <David.Laight@aculab.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: Eduardo Valentin <eduval@amazon.com>
    Cc: Greg KH <gregkh@linuxfoundation.org>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: aliguori@amazon.com
    Cc: daniel.gruss@iaik.tugraz.at
    Cc: hughd@google.com
    Cc: keescook@google.com
    Cc: linux-mm@kvack.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit de4c8bbd6e1b631fa5f38e75453e331244ad7028
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Tue Dec 5 13:34:51 2017 +0100

    x86/microcode: Dont abuse the TLB-flush interface
    
    commit 23cb7d46f371844c004784ad9552a57446f73e5a upstream.
    
    Commit:
    
      ec400ddeff20 ("x86/microcode_intel_early.c: Early update ucode on Intel's CPU")
    
    ... grubbed into tlbflush internals without coherent explanation.
    
    Since it says its a precaution and the SDM doesn't mention anything like
    this, take it out back.
    
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: David Laight <David.Laight@aculab.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: Eduardo Valentin <eduval@amazon.com>
    Cc: Greg KH <gregkh@linuxfoundation.org>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: aliguori@amazon.com
    Cc: daniel.gruss@iaik.tugraz.at
    Cc: fenghua.yu@intel.com
    Cc: hughd@google.com
    Cc: keescook@google.com
    Cc: linux-mm@kvack.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 032fd2e383cb112789bcbb9a728dd4d96a1c280d
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Tue Dec 5 13:34:50 2017 +0100

    x86/uv: Use the right TLB-flush API
    
    commit 3e46e0f5ee3643a1239be9046c7ba6c66ca2b329 upstream.
    
    Since uv_flush_tlb_others() implements flush_tlb_others() which is
    about flushing user mappings, we should use __flush_tlb_single(),
    which too is about flushing user mappings.
    
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Andrew Banman <abanman@hpe.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: David Laight <David.Laight@aculab.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: Eduardo Valentin <eduval@amazon.com>
    Cc: Greg KH <gregkh@linuxfoundation.org>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mike Travis <mike.travis@hpe.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: aliguori@amazon.com
    Cc: daniel.gruss@iaik.tugraz.at
    Cc: hughd@google.com
    Cc: keescook@google.com
    Cc: linux-mm@kvack.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 06f9acfe0abcc9386bbeee8438b87f90ff2e04d1
Author: Dave Hansen <dave.hansen@linux.intel.com>
Date:   Mon Dec 4 17:25:07 2017 -0800

    x86/entry: Rename SYSENTER_stack to CPU_ENTRY_AREA_entry_stack
    
    commit 4fe2d8b11a370af286287a2661de9d4e6c9a145a upstream.
    
    If the kernel oopses while on the trampoline stack, it will print
    "<SYSENTER>" even if SYSENTER is not involved.  That is rather confusing.
    
    The "SYSENTER" stack is used for a lot more than SYSENTER now.  Give it a
    better string to display in stack dumps, and rename the kernel code to
    match.
    
    Also move the 32-bit code over to the new naming even though it still uses
    the entry stack only for SYSENTER.
    
    Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d8f29ac7363778f38dab7bcb79ca076b8534904c
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Tue Dec 5 13:34:54 2017 +0100

    x86/doc: Remove obvious weirdnesses from the x86 MM layout documentation
    
    commit e8ffe96e5933d417195268478479933d56213a3f upstream.
    
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: David Laight <David.Laight@aculab.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: Eduardo Valentin <eduval@amazon.com>
    Cc: Greg KH <gregkh@linuxfoundation.org>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: aliguori@amazon.com
    Cc: daniel.gruss@iaik.tugraz.at
    Cc: hughd@google.com
    Cc: keescook@google.com
    Cc: linux-mm@kvack.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 88569f5e3a5648331066b49dd6918b8c70067ae7
Author: Andy Lutomirski <luto@kernel.org>
Date:   Tue Dec 12 07:56:43 2017 -0800

    x86/mm/64: Improve the memory map documentation
    
    commit 5a7ccf4754fb3660569a6de52ba7f7fc3dfaf280 upstream.
    
    The old docs had the vsyscall range wrong and were missing the fixmap.
    Fix both.
    
    There used to be 8 MB reserved for future vsyscalls, but that's long gone.
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: David Laight <David.Laight@aculab.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Kirill A. Shutemov <kirill@shutemov.name>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2c8e9099aecec2baaac8d34c7b823493f2d0eeed
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Thu Dec 14 12:27:31 2017 +0100

    x86/ldt: Prevent LDT inheritance on exec
    
    commit a4828f81037f491b2cc986595e3a969a6eeb2fb5 upstream.
    
    The LDT is inherited across fork() or exec(), but that makes no sense
    at all because exec() is supposed to start the process clean.
    
    The reason why this happens is that init_new_context_ldt() is called from
    init_new_context() which obviously needs to be called for both fork() and
    exec().
    
    It would be surprising if anything relies on that behaviour, so it seems to
    be safe to remove that misfeature.
    
    Split the context initialization into two parts. Clear the LDT pointer and
    initialize the mutex from the general context init and move the LDT
    duplication to arch_dup_mmap() which is only called on fork().
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Peter Zijlstra <peterz@infradead.org>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Andy Lutomirsky <luto@kernel.org>
    Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Borislav Petkov <bpetkov@suse.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: David Laight <David.Laight@aculab.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: Eduardo Valentin <eduval@amazon.com>
    Cc: Greg KH <gregkh@linuxfoundation.org>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: aliguori@amazon.com
    Cc: dan.j.williams@intel.com
    Cc: hughd@google.com
    Cc: keescook@google.com
    Cc: kirill.shutemov@linux.intel.com
    Cc: linux-mm@kvack.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b17459342c55a209014a783d74bff6a0a5374339
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Thu Dec 14 12:27:30 2017 +0100

    x86/ldt: Rework locking
    
    commit c2b3496bb30bd159e9de42e5c952e1f1f33c9a77 upstream.
    
    The LDT is duplicated on fork() and on exec(), which is wrong as exec()
    should start from a clean state, i.e. without LDT. To fix this the LDT
    duplication code will be moved into arch_dup_mmap() which is only called
    for fork().
    
    This introduces a locking problem. arch_dup_mmap() holds mmap_sem of the
    parent process, but the LDT duplication code needs to acquire
    mm->context.lock to access the LDT data safely, which is the reverse lock
    order of write_ldt() where mmap_sem nests into context.lock.
    
    Solve this by introducing a new rw semaphore which serializes the
    read/write_ldt() syscall operations and use context.lock to protect the
    actual installment of the LDT descriptor.
    
    So context.lock stabilizes mm->context.ldt and can nest inside of the new
    semaphore or mmap_sem.
    
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Andy Lutomirsky <luto@kernel.org>
    Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Borislav Petkov <bpetkov@suse.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: David Laight <David.Laight@aculab.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: Eduardo Valentin <eduval@amazon.com>
    Cc: Greg KH <gregkh@linuxfoundation.org>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: aliguori@amazon.com
    Cc: dan.j.williams@intel.com
    Cc: hughd@google.com
    Cc: keescook@google.com
    Cc: kirill.shutemov@linux.intel.com
    Cc: linux-mm@kvack.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ee8e8b2df6d3f2a4ce25182d18964f891760ac65
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Thu Dec 14 12:27:29 2017 +0100

    arch, mm: Allow arch_dup_mmap() to fail
    
    commit c10e83f598d08046dd1ebc8360d4bb12d802d51b upstream.
    
    In order to sanitize the LDT initialization on x86 arch_dup_mmap() must be
    allowed to fail. Fix up all instances.
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Andy Lutomirsky <luto@kernel.org>
    Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Borislav Petkov <bpetkov@suse.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: David Laight <David.Laight@aculab.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: Eduardo Valentin <eduval@amazon.com>
    Cc: Greg KH <gregkh@linuxfoundation.org>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: aliguori@amazon.com
    Cc: dan.j.williams@intel.com
    Cc: hughd@google.com
    Cc: keescook@google.com
    Cc: kirill.shutemov@linux.intel.com
    Cc: linux-mm@kvack.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 49c01662d3177e1814ceb52337add473fb4d264b
Author: Andy Lutomirski <luto@kernel.org>
Date:   Sun Dec 10 22:47:20 2017 -0800

    x86/vsyscall/64: Warn and fail vsyscall emulation in NATIVE mode
    
    commit 4831b779403a836158917d59a7ca880483c67378 upstream.
    
    If something goes wrong with pagetable setup, vsyscall=native will
    accidentally fall back to emulation.  Make it warn and fail so that we
    notice.
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: David Laight <David.Laight@aculab.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit beb899c4bcdfb006293a593ffe31c9f13ec7c66b
Author: Andy Lutomirski <luto@kernel.org>
Date:   Sun Dec 10 22:47:19 2017 -0800

    x86/vsyscall/64: Explicitly set _PAGE_USER in the pagetable hierarchy
    
    commit 49275fef986abfb8b476e4708aaecc07e7d3e087 upstream.
    
    The kernel is very erratic as to which pagetables have _PAGE_USER set.  The
    vsyscall page gets lucky: it seems that all of the relevant pagetables are
    among the apparently arbitrary ones that set _PAGE_USER.  Rather than
    relying on chance, just explicitly set _PAGE_USER.
    
    This will let us clean up pagetable setup to stop setting _PAGE_USER.  The
    added code can also be reused by pagetable isolation to manage the
    _PAGE_USER bit in the usermode tables.
    
    [ tglx: Folded paravirt fix from Juergen Gross ]
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: David Laight <David.Laight@aculab.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7b45ad6e0fd7710cb5a5fb9a6bdd0632f510bf50
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Wed Dec 20 18:07:42 2017 +0100

    x86/mm/dump_pagetables: Make the address hints correct and readable
    
    commit 146122e24bdf208015d629babba673e28d090709 upstream.
    
    The address hints are a trainwreck. The array entry numbers have to kept
    magically in sync with the actual hints, which is doomed as some of the
    array members are initialized at runtime via the entry numbers.
    
    Designated initializers have been around before this code was
    implemented....
    
    Use the entry numbers to populate the address hints array and add the
    missing bits and pieces. Split 32 and 64 bit for readability sake.
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c4bc398080d80008e7d4a8cff528b8f3e8d8fb63
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Sat Dec 16 01:14:39 2017 +0100

    x86/mm/dump_pagetables: Check PAGE_PRESENT for real
    
    commit c05344947b37f7cda726e802457370bc6eac4d26 upstream.
    
    The check for a present page in printk_prot():
    
           if (!pgprot_val(prot)) {
                    /* Not present */
    
    is bogus. If a PTE is set to PAGE_NONE then the pgprot_val is not zero and
    the entry is decoded in bogus ways, e.g. as RX GLB. That is confusing when
    analyzing mapping correctness. Check for the present bit to make an
    informed decision.
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 662fd946aa4637a822bff0ec02afd59a8e2c2ba2
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Wed Dec 20 18:02:34 2017 +0100

    x86/Kconfig: Limit NR_CPUS on 32-bit to a sane amount
    
    commit 7bbcbd3d1cdcbacd0f9f8dc4c98d550972f1ca30 upstream.
    
    The recent cpu_entry_area changes fail to compile on 32-bit when BIGSMP=y
    and NR_CPUS=512, because the fixmap area becomes too big.
    
    Limit the number of CPUs with BIGSMP to 64, which is already way to big for
    32-bit, but it's at least a working limitation.
    
    We performed a quick survey of 32-bit-only machines that might be affected
    by this change negatively, but found none.
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit adc37e209d954ffa235d036c1b71ca84691ae4f7
Author: Ricardo Neri <ricardo.neri-calderon@linux.intel.com>
Date:   Fri Oct 27 13:25:40 2017 -0700

    x86/insn-eval: Add utility functions to get segment selector
    
    commit 32d0b95300db03c2b23b2ea2c94769a4a138e79d upstream.
    
    [note, only the inat.h portion, to get objtool back in sync - gregkh]
    
    b0caa8c8c6bbc422bc3c32b64852d6d618f32b49 Mon Sep 17 00:00:00 2001
    When computing a linear address and segmentation is used, we need to know
    the base address of the segment involved in the computation. In most of
    the cases, the segment base address will be zero as in USER_DS/USER32_DS.
    However, it may be possible that a user space program defines its own
    segments via a local descriptor table. In such a case, the segment base
    address may not be zero. Thus, the segment base address is needed to
    calculate correctly the linear address.
    
    If running in protected mode, the segment selector to be used when
    computing a linear address is determined by either any of segment override
    prefixes in the instruction or inferred from the registers involved in the
    computation of the effective address; in that order. Also, there are cases
    when the segment override prefixes shall be ignored (i.e., code segments
    are always selected by the CS segment register; string instructions always
    use the ES segment register when using rDI register as operand). In long
    mode, segment registers are ignored, except for FS and GS. In these two
    cases, base addresses are obtained from the respective MSRs.
    
    For clarity, this process can be split into four steps (and an equal
    number of functions): determine if segment prefixes overrides can be used;
    parse the segment override prefixes, and use them if found; if not found
    or cannot be used, use the default segment registers associated with the
    operand registers. Once the segment register to use has been identified,
    read its value to obtain the segment selector.
    
    The method to obtain the segment selector depends on several factors. In
    32-bit builds, segment selectors are saved into a pt_regs structure
    when switching to kernel mode. The same is also true for virtual-8086
    mode. In 64-bit builds, segmentation is mostly ignored, except when
    running a program in 32-bit legacy mode. In this case, CS and SS can be
    obtained from pt_regs. DS, ES, FS and GS can be read directly from
    the respective segment registers.
    
    In order to identify the segment registers, a new set of #defines is
    introduced. It also includes two special identifiers. One of them
    indicates when the default segment register associated with instruction
    operands shall be used. Another one indicates that the contents of the
    segment register shall be ignored; this identifier is used when in long
    mode.
    
    Improvements-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Ricardo Neri <ricardo.neri-calderon@linux.intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Borislav Petkov <bp@suse.de>
    Cc: "Michael S. Tsirkin" <mst@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: ricardo.neri@intel.com
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
    Cc: Huang Rui <ray.huang@amd.com>
    Cc: Qiaowei Ren <qiaowei.ren@intel.com>
    Cc: Shuah Khan <shuah@kernel.org>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Cc: Jiri Slaby <jslaby@suse.cz>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: "Ravi V. Shankar" <ravi.v.shankar@intel.com>
    Cc: Chris Metcalf <cmetcalf@mellanox.com>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Colin Ian King <colin.king@canonical.com>
    Cc: Chen Yucong <slaoub@gmail.com>
    Cc: Adam Buchbinder <adam.buchbinder@gmail.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Lorenzo Stoakes <lstoakes@gmail.com>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Thomas Garnier <thgarnie@google.com>
    Link: https://lkml.kernel.org/r/1509135945-13762-14-git-send-email-ricardo.neri-calderon@linux.intel.com
    Cc: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit da8eb8ad0e695ed34b114df28505d4dd5b4ea693
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Mon Dec 11 10:38:36 2017 -0800

    x86/decoder: Fix and update the opcodes map
    
    commit f5b5fab1780c98b74526dbac527574bd02dc16f8 upstream
    
    Update x86-opcode-map.txt based on the October 2017 Intel SDM publication.
    Fix INVPID to INVVPID.
    Add UD0 and UD1 instruction opcodes.
    
    Also sync the objtool and perf tooling copies of this file.
    
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Masami Hiramatsu <masami.hiramatsu@gmail.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/aac062d7-c0f6-96e3-5c92-ed299e2bd3da@infradead.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 76358c8d90c73c896000ccee3375b709bc955bc5
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Sat Dec 2 16:17:44 2017 -0600

    objtool: Fix 64-bit build on 32-bit host
    
    commit 14c47b54b0d9389e3ca0718e805cdd90c5a4303a upstream.
    
    The new ORC unwinder breaks the build of a 64-bit kernel on a 32-bit
    host.  Building the kernel on a i386 or x32 host fails with:
    
      orc_dump.c: In function 'orc_dump':
      orc_dump.c:105:26: error: passing argument 2 of 'elf_getshdrnum' from incompatible pointer type [-Werror=incompatible-pointer-types]
        if (elf_getshdrnum(elf, &nr_sections)) {
                                ^
      In file included from /usr/local/include/gelf.h:32:0,
                       from elf.h:22,
                       from warn.h:26,
                       from orc_dump.c:20:
      /usr/local/include/libelf.h:304:12: note: expected 'size_t * {aka unsigned int *}' but argument is of type 'long unsigned int *'
       extern int elf_getshdrnum (Elf *__elf, size_t *__dst);
                  ^~~~~~~~~~~~~~
      orc_dump.c:190:17: error: format '%lx' expects argument of type 'long unsigned int', but argument 3 has type 'Elf64_Sxword {aka long long int}' [-Werror=format=]
          printf("%s+%lx:", name, rela.r_addend);
                     ~~^          ~~~~~~~~~~~~~
                     %llx
    
    Fix the build failure.
    
    Another problem is that if the user specifies HOSTCC or HOSTLD
    variables, they are ignored in the objtool makefile.  Change the
    Makefile to respect these variables.
    
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Sven Joachim <svenjoac@gmx.de>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Fixes: 627fce14809b ("objtool: Add ORC unwind table generation")
    Link: http://lkml.kernel.org/r/19f0e64d8e07e30a7b307cd010eb780c404fe08d.1512252895.git.jpoimboe@redhat.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6a8f7688094c05e02b392b98e6977497a5096e20
Author: Ingo Molnar <mingo@kernel.org>
Date:   Tue Nov 14 07:24:22 2017 +0100

    tools/headers: Sync objtool UAPI header
    
    commit a356d2ae50790f49858ebed35da9e206336fafee upstream.
    
    objtool grew this new warning:
    
      Warning: synced file at 'tools/objtool/arch/x86/include/asm/inat.h' differs from latest kernel version at 'arch/x86/include/asm/inat.h'
    
    which upstream header grew new INAT_SEG_* definitions.
    
    Sync up the tooling version of the header.
    
    Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3033f9e601f45f372d48bd266629abd681cea116
Author: Josh Poimboeuf <jpoimboe@redhat.com>
Date:   Tue Nov 7 21:01:52 2017 -0600

    objtool: Fix cross-build
    
    commit 9eb719855f6c9b21eb5889d9ac2ca1c60527ad89 upstream.
    
    Stephen Rothwell reported this cross-compilation build failure:
    
    | In file included from orc_dump.c:19:0:
    | orc.h:21:10: fatal error: asm/orc_types.h: No such file or directory
    | ...
    
    Caused by:
    
      6a77cff819ae ("objtool: Move synced files to their original relative locations")
    
    Use the proper arch header files location, not the host-arch location.
    
    Bisected-by: Stephen Rothwell <sfr@canb.auug.org.au>
    Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
    Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Linux-Next Mailing List <linux-next@vger.kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/20171108030152.bd76eahiwjwjt3kp@treble
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2845aee45c363e15c1e677b1f4d0043f361c102b
Author: Josh Poimboeuf <jpoimboe@redhat.com>
Date:   Mon Nov 6 07:21:51 2017 -0600

    objtool: Move kernel headers/code sync check to a script
    
    commit 3bd51c5a371de917e4e7401c9df006b5998579df upstream.
    
    Replace the nasty diff checks in the objtool Makefile with a clean bash
    script, and make the warnings more specific.
    
    Heavily inspired by tools/perf/check-headers.sh.
    
    Suggested-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.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/ab015f15ccd8c0c6008493c3c6ee3d495eaf2927.1509974346.git.jpoimboe@redhat.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 62c37437a110cfec0d2b46f5d28113a631187978
Author: Josh Poimboeuf <jpoimboe@redhat.com>
Date:   Mon Nov 6 07:21:50 2017 -0600

    objtool: Move synced files to their original relative locations
    
    commit 6a77cff819ae3e31992bde6432c9b5720748a89b upstream.
    
    This will enable more straightforward comparisons, and it also makes the
    files 100% identical.
    
    Suggested-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.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/407b2aaa317741f48fcf821592c0e96ab3be1890.1509974346.git.jpoimboe@redhat.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit add9f2a47035fe94603b8ffe8d1d323b5fb0429f
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Dec 27 13:53:08 2017 +0100

    Revert "ipv6: grab rt->rt6i_ref before allocating pcpu rt"
    
    This reverts commit 9704f8147e88213f2fa580f713b42b08a4f1a7d2 which was
    upstream commit a94b9367e044ba672c9f4105eb1516ff6ff4948a.
    
    Shouldn't have been here, sorry about that.
    
    Reported-by: Chris Rankin <rankincj@gmail.com>
    Reported-by: Willy Tarreau <w@1wt.eu>
    Cc: Ido Schimmel <idosch@idosch.org>
    Cc: Ozgur <ozgur@goosey.org>
    Cc: Wei Wang <weiwan@google.com>
    Cc: Martin KaFai Lau <kafai@fb.com>
    Cc: Eric Dumazet <edumazet@google.com>
    Cc: David S. Miller <davem@davemloft.net>
    Cc: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>