commit bd379939182247ace70e425ab60b3b1352db601b
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Tue Dec 5 11:22:52 2017 +0100

    Linux 4.4.104

commit bd249dd078272e8cef53b98a73c1cdd60c532251
Author: Trond Myklebust <trond.myklebust@primarydata.com>
Date:   Fri Nov 3 08:00:11 2017 -0400

    nfsd: Fix another OPEN stateid race
    
    commit d8a1a000555ecd1b824ac1ed6df8fe364dfbbbb0 upstream.
    
    If nfsd4_process_open2() is initialising a new stateid, and yet the
    call to nfs4_get_vfs_file() fails for some reason, then we must
    declare the stateid closed, and unhash it before dropping the mutex.
    
    Right now, we unhash the stateid after dropping the mutex, and without
    changing the stateid type, meaning that another OPEN could theoretically
    look it up and attempt to use it.
    
    Reported-by: Andrew W Elble <aweits@rit.edu>
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 54298082dbacba2591b2aa461320f31946cdbffb
Author: Trond Myklebust <trond.myklebust@primarydata.com>
Date:   Fri Nov 3 08:00:10 2017 -0400

    nfsd: Fix stateid races between OPEN and CLOSE
    
    commit 15ca08d3299682dc49bad73251677b2c5017ef08 upstream.
    
    Open file stateids can linger on the nfs4_file list of stateids even
    after they have been closed. In order to avoid reusing such a
    stateid, and confusing the client, we need to recheck the
    nfs4_stid's type after taking the mutex.
    Otherwise, we risk reusing an old stateid that was already closed,
    which will confuse clients that expect new stateids to conform to
    RFC7530 Sections 9.1.4.2 and 16.2.5 or RFC5661 Sections 8.2.2 and 18.2.4.
    
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d7f5f10f5159fd37dff9d566c0e6a9a61f2c8a66
Author: Oleg Drokin <green@linuxhacker.ru>
Date:   Tue Jun 14 23:28:06 2016 -0400

    nfsd: Make init_open_stateid() a bit more whole
    
    commit 8c7245abda877d4689b3371db8ae2a4400d7d9ce upstream.
    
    Move the state selection logic inside from the caller,
    always making it return correct stp to use.
    
    Signed-off-by: J . Bruce Fields <bfields@fieldses.org>
    Signed-off-by: Oleg Drokin <green@linuxhacker.ru>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 68e6cd9a0547d40d921baff918c111db96d96d76
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Thu Nov 23 21:41:57 2017 +0200

    drm/i915: Prevent zero length "index" write
    
    commit 56350fb8978bbf4aafe08f21234e161dd128b417 upstream.
    
    The hardware always writes one or two bytes in the index portion of
    an indexed transfer. Make sure the message we send as the index
    doesn't have a zero length.
    
    Cc: Daniel Kurtz <djkurtz@chromium.org>
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Sean Paul <seanpaul@chromium.org>
    Fixes: 56f9eac05489 ("drm/i915/intel_i2c: use INDEX cycles for i2c read transactions")
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20171123194157.25367-3-ville.syrjala@linux.intel.com
    Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
    (cherry picked from commit bb9e0d4bca50f429152e74a459160b41f3d60fb2)
    Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e6bcff7b6aa1c0fb30234864821e8169eeb8054d
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Thu Nov 23 21:41:56 2017 +0200

    drm/i915: Don't try indexed reads to alternate slave addresses
    
    commit ae5c631e605a452a5a0e73205a92810c01ed954b upstream.
    
    We can only specify the one slave address to indexed reads/writes.
    Make sure the messages we check are destined to the same slave
    address before deciding to do an indexed transfer.
    
    Cc: Daniel Kurtz <djkurtz@chromium.org>
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Sean Paul <seanpaul@chromium.org>
    Fixes: 56f9eac05489 ("drm/i915/intel_i2c: use INDEX cycles for i2c read transactions")
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20171123194157.25367-2-ville.syrjala@linux.intel.com
    Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
    (cherry picked from commit c4deb62d7821672265b87952bcd1c808f3bf3e8f)
    Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a61474fa8749f67ef18aa2104b48b0b56ea654b7
Author: NeilBrown <neilb@suse.com>
Date:   Fri Aug 25 17:34:41 2017 +1000

    NFS: revalidate "." etc correctly on "open".
    
    commit b688741cb06695312f18b730653d6611e1bad28d upstream.
    
    For correct close-to-open semantics, NFS must validate
    the change attribute of a directory (or file) on open.
    
    Since commit ecf3d1f1aa74 ("vfs: kill FS_REVAL_DOT by adding a
    d_weak_revalidate dentry op"), open() of "." or a path ending ".." is
    not revalidated reliably (except when that direct is a mount point).
    
    Prior to that commit, "." was revalidated using nfs_lookup_revalidate()
    which checks the LOOKUP_OPEN flag and forces revalidation if the flag is
    set.
    Since that commit, nfs_weak_revalidate() is used for NFSv3 (which
    ignores the flags) and nothing is used for NFSv4.
    
    This is fixed by using nfs_lookup_verify_inode() in
    nfs_weak_revalidate().  This does the revalidation exactly when needed.
    Also, add a definition of .d_weak_revalidate for NFSv4.
    
    The incorrect behavior is easily demonstrated by running "echo *" in
    some non-mountpoint NFS directory while watching network traffic.
    Without this patch, "echo *" sometimes doesn't produce any traffic.
    With the patch it always does.
    
    Fixes: ecf3d1f1aa74 ("vfs: kill FS_REVAL_DOT by adding a d_weak_revalidate dentry op")
    cc: stable@vger.kernel.org (3.9+)
    Signed-off-by: NeilBrown <neilb@suse.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c8ea49b690eef5c180369a8d132c5e50a74b3acf
Author: Brent Taylor <motobud@gmail.com>
Date:   Mon Oct 30 22:32:45 2017 -0500

    mtd: nand: Fix writing mtdoops to nand flash.
    
    commit 30863e38ebeb500a31cecee8096fb5002677dd9b upstream.
    
    When mtdoops calls mtd_panic_write(), it eventually calls
    panic_nand_write() in nand_base.c. In order to properly wait for the
    nand chip to be ready in panic_nand_wait(), the chip must first be
    selected.
    
    When using the atmel nand flash controller, a panic would occur due to
    a NULL pointer exception.
    
    Fixes: 2af7c6539931 ("mtd: Add panic_write for NAND flashes")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Brent Taylor <motobud@gmail.com>
    Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a155a9568d9abf50fe4913c4bf7b46a8281d3dc3
Author: Jonathan Liu <net147@gmail.com>
Date:   Mon Aug 7 21:55:45 2017 +1000

    drm/panel: simple: Add missing panel_simple_unprepare() calls
    
    commit f3621a8eb59a913612c8e6e37d81f16b649f8b6c upstream.
    
    During panel removal or system shutdown panel_simple_disable() is called
    which disables the panel backlight but the panel is still powered due to
    missing calls to panel_simple_unprepare().
    
    Fixes: d02fd93e2cd8 ("drm/panel: simple - Disable panel on shutdown")
    Signed-off-by: Jonathan Liu <net147@gmail.com>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20170807115545.27747-1-net147@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c7716f65721a851cd925ee911f791e1ae92b398d
Author: Roman Kapl <rka@sysgo.com>
Date:   Mon Oct 30 11:56:13 2017 +0100

    drm/radeon: fix atombios on big endian
    
    commit 4f626a4ac8f57ddabf06d03870adab91e463217f upstream.
    
    The function for byteswapping the data send to/from atombios was buggy for
    num_bytes not divisible by four. The function must be aware of the fact
    that after byte-swapping the u32 units, valid bytes might end up after the
    num_bytes boundary.
    
    This patch was tested on kernel 3.12 and allowed us to sucesfully use
    DisplayPort on and Radeon SI card. Namely it fixed the link training and
    EDID readout.
    
    The function is patched both in radeon and amd drivers, since the functions
    and the fixes are identical.
    
    Signed-off-by: Roman Kapl <rka@sysgo.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4d027a8bcc7febabe908d4ca6049a8af21a8fd7c
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Tue Nov 14 17:19:29 2017 -0500

    Revert "drm/radeon: dont switch vt on suspend"
    
    commit 18c437caa5b18a235dd65cec224eab54bebcee65 upstream.
    
    Fixes distorted colors on some cards on resume from suspend.
    
    This reverts commit b9729b17a414f99c61f4db9ac9f9ed987fa0cbfe.
    
    Bug: https://bugs.freedesktop.org/show_bug.cgi?id=98832
    Bug: https://bugs.freedesktop.org/show_bug.cgi?id=99163
    Bug: https://bugzilla.kernel.org/show_bug.cgi?id=107001
    Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5a7391b6d8983a2d36b0df15349caef10624e241
Author: Huacai Chen <chenhc@lemote.com>
Date:   Fri Nov 24 15:14:25 2017 -0800

    bcache: Fix building error on MIPS
    
    commit cf33c1ee5254c6a430bc1538232b49c3ea13e613 upstream.
    
    This patch try to fix the building error on MIPS. The reason is MIPS
    has already defined the PTR macro, which conflicts with the PTR macro
    in include/uapi/linux/bcache.h.
    
    [fixed by mlyle: corrected a line-length issue]
    
    Signed-off-by: Huacai Chen <chenhc@lemote.com>
    Reviewed-by: Michael Lyle <mlyle@lyle.org>
    Signed-off-by: Michael Lyle <mlyle@lyle.org>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6b4901e0e3495f1ffc846f55f704bd19049579e2
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Fri Nov 24 07:47:50 2017 +0100

    eeprom: at24: check at24_read/write arguments
    
    commit d9bcd462daf34aebb8de9ad7f76de0198bb5a0f0 upstream.
    
    So far we completely rely on the caller to provide valid arguments.
    To be on the safe side perform an own sanity check.
    
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5c65b739389fbc353fb42d379e9b7379cfe6d3f6
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Tue Nov 21 15:42:29 2017 +0200

    mmc: core: Do not leave the block driver in a suspended state
    
    commit ebe7dd45cf49e3b49cacbaace17f9f878f21fbea upstream.
    
    The block driver must be resumed if the mmc bus fails to suspend the card.
    
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a6493ad6fc893431705637d7efa3035235d9e135
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Fri Nov 10 10:49:38 2017 +0100

    KVM: x86: inject exceptions produced by x86_decode_insn
    
    commit 6ea6e84309ca7e0e850b3083e6b09344ee15c290 upstream.
    
    Sometimes, a processor might execute an instruction while another
    processor is updating the page tables for that instruction's code page,
    but before the TLB shootdown completes.  The interesting case happens
    if the page is in the TLB.
    
    In general, the processor will succeed in executing the instruction and
    nothing bad happens.  However, what if the instruction is an MMIO access?
    If *that* happens, KVM invokes the emulator, and the emulator gets the
    updated page tables.  If the update side had marked the code page as non
    present, the page table walk then will fail and so will x86_decode_insn.
    
    Unfortunately, even though kvm_fetch_guest_virt is correctly returning
    X86EMUL_PROPAGATE_FAULT, x86_decode_insn's caller treats the failure as
    a fatal error if the instruction cannot simply be reexecuted (as is the
    case for MMIO).  And this in fact happened sometimes when rebooting
    Windows 2012r2 guests.  Just checking ctxt->have_exception and injecting
    the exception if true is enough to fix the case.
    
    Thanks to Eduardo Habkost for helping in the debugging of this issue.
    
    Reported-by: Yanan Fu <yfu@redhat.com>
    Cc: Eduardo Habkost <ehabkost@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1e9e6bdccb80d9dca2a9dfd6cf2d34ce8f226d47
Author: Liran Alon <liran.alon@oracle.com>
Date:   Sun Nov 5 16:56:32 2017 +0200

    KVM: x86: Exit to user-mode on #UD intercept when emulator requires
    
    commit 61cb57c9ed631c95b54f8e9090c89d18b3695b3c upstream.
    
    Instruction emulation after trapping a #UD exception can result in an
    MMIO access, for example when emulating a MOVBE on a processor that
    doesn't support the instruction.  In this case, the #UD vmexit handler
    must exit to user mode, but there wasn't any code to do so.  Add it for
    both VMX and SVM.
    
    Signed-off-by: Liran Alon <liran.alon@oracle.com>
    Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
    Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Reviewed-by: Wanpeng Li <wanpeng.li@hotmail.com>
    Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ab29b6b818aa1cc8c36fc510464c732d392f5df2
Author: Liran Alon <liran.alon@oracle.com>
Date:   Sun Nov 5 16:11:30 2017 +0200

    KVM: x86: pvclock: Handle first-time write to pvclock-page contains random junk
    
    commit 51c4b8bba674cfd2260d173602c4dac08e4c3a99 upstream.
    
    When guest passes KVM it's pvclock-page GPA via WRMSR to
    MSR_KVM_SYSTEM_TIME / MSR_KVM_SYSTEM_TIME_NEW, KVM don't initialize
    pvclock-page to some start-values. It just requests a clock-update which
    will happen before entering to guest.
    
    The clock-update logic will call kvm_setup_pvclock_page() to update the
    pvclock-page with info. However, kvm_setup_pvclock_page() *wrongly*
    assumes that the version-field is initialized to an even number. This is
    wrong because at first-time write, field could be any-value.
    
    Fix simply makes sure that if first-time version-field is odd, increment
    it once more to make it even and only then start standard logic.
    This follows same logic as done in other pvclock shared-pages (See
    kvm_write_wall_clock() and record_steal_time()).
    
    Signed-off-by: Liran Alon <liran.alon@oracle.com>
    Reviewed-by: Nikita Leshenko <nikita.leshchenko@oracle.com>
    Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 591ddc92d756b49a95060b0203fe329a31f18c3e
Author: Josef Bacik <jbacik@fb.com>
Date:   Fri Nov 17 14:50:46 2017 -0500

    btrfs: clear space cache inode generation always
    
    commit 8e138e0d92c6c9d3d481674fb14e3439b495be37 upstream.
    
    We discovered a box that had double allocations, and suspected the space
    cache may be to blame.  While auditing the write out path I noticed that
    if we've already setup the space cache we will just carry on.  This
    means that any error we hit after cache_save_setup before we go to
    actually write the cache out we won't reset the inode generation, so
    whatever was already written will be considered correct, except it'll be
    stale.  Fix this by _always_ resetting the generation on the block group
    inode, this way we only ever have valid or invalid cache.
    
    With this patch I was no longer able to reproduce cache corruption with
    dm-log-writes and my bpf error injection tool.
    
    Signed-off-by: Josef Bacik <jbacik@fb.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0d05a5593f6309cb0df0df474a807a3220855703
Author: chenjie <chenjie6@huawei.com>
Date:   Wed Nov 29 16:10:54 2017 -0800

    mm/madvise.c: fix madvise() infinite loop under special circumstances
    
    commit 6ea8d958a2c95a1d514015d4e29ba21a8c0a1a91 upstream.
    
    MADVISE_WILLNEED has always been a noop for DAX (formerly XIP) mappings.
    Unfortunately madvise_willneed() doesn't communicate this information
    properly to the generic madvise syscall implementation.  The calling
    convention is quite subtle there.  madvise_vma() is supposed to either
    return an error or update &prev otherwise the main loop will never
    advance to the next vma and it will keep looping for ever without a way
    to get out of the kernel.
    
    It seems this has been broken since introduction.  Nobody has noticed
    because nobody seems to be using MADVISE_WILLNEED on these DAX mappings.
    
    [mhocko@suse.com: rewrite changelog]
    Link: http://lkml.kernel.org/r/20171127115318.911-1-guoxuenan@huawei.com
    Fixes: fe77ba6f4f97 ("[PATCH] xip: madvice/fadvice: execute in place")
    Signed-off-by: chenjie <chenjie6@huawei.com>
    Signed-off-by: guoxuenan <guoxuenan@huawei.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: zhangyi (F) <yi.zhang@huawei.com>
    Cc: Miao Xie <miaoxie@huawei.com>
    Cc: Mike Rapoport <rppt@linux.vnet.ibm.com>
    Cc: Shaohua Li <shli@fb.com>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Mel Gorman <mgorman@techsingularity.net>
    Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Anshuman Khandual <khandual@linux.vnet.ibm.com>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Carsten Otte <cotte@de.ibm.com>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2b7ef6bdd28610f2907cd766362cf95d0d023801
Author: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Date:   Mon Nov 27 06:21:25 2017 +0300

    mm, thp: Do not make page table dirty unconditionally in touch_p[mu]d()
    
    commit a8f97366452ed491d13cf1e44241bc0b5740b1f0 upstream.
    
    Currently, we unconditionally make page table dirty in touch_pmd().
    It may result in false-positive can_follow_write_pmd().
    
    We may avoid the situation, if we would only make the page table entry
    dirty if caller asks for write access -- FOLL_WRITE.
    
    The patch also changes touch_pud() in the same way.
    
    Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Hugh Dickins <hughd@google.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [Salvatore Bonaccorso: backport for 3.16:
     - Adjust context
     - Drop specific part for PUD-sized transparent hugepages. Support
       for PUD-sized transparent hugepages was added in v4.11-rc1
    ]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f97fc9ab1ce23a8666cfe460264a6a45b7e0b335
Author: Matt Fleming <matt@codeblueprint.co.uk>
Date:   Mon Dec 21 14:12:52 2015 +0000

    x86/efi-bgrt: Replace early_memremap() with memremap()
    
    commit e2c90dd7e11e3025b46719a79fb4bb1e7a5cef9f upstream.
    
    Môshe reported the following warning triggered on his machine since
    commit 50a0cb565246 ("x86/efi-bgrt: Fix kernel panic when mapping BGRT
    data"),
    
      [    0.026936] ------------[ cut here ]------------
      [    0.026941] WARNING: CPU: 0 PID: 0 at mm/early_ioremap.c:137 __early_ioremap+0x102/0x1bb()
      [    0.026941] Modules linked in:
      [    0.026944] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.4.0-rc1 #2
      [    0.026945] Hardware name: Dell Inc. XPS 13 9343/09K8G1, BIOS A05 07/14/2015
      [    0.026946]  0000000000000000 900f03d5a116524d ffffffff81c03e60 ffffffff813a3fff
      [    0.026948]  0000000000000000 ffffffff81c03e98 ffffffff810a0852 00000000d7b76000
      [    0.026949]  0000000000000000 0000000000000001 0000000000000001 000000000000017c
      [    0.026951] Call Trace:
      [    0.026955]  [<ffffffff813a3fff>] dump_stack+0x44/0x55
      [    0.026958]  [<ffffffff810a0852>] warn_slowpath_common+0x82/0xc0
      [    0.026959]  [<ffffffff810a099a>] warn_slowpath_null+0x1a/0x20
      [    0.026961]  [<ffffffff81d8c395>] __early_ioremap+0x102/0x1bb
      [    0.026962]  [<ffffffff81d8c602>] early_memremap+0x13/0x15
      [    0.026964]  [<ffffffff81d78361>] efi_bgrt_init+0x162/0x1ad
      [    0.026966]  [<ffffffff81d778ec>] efi_late_init+0x9/0xb
      [    0.026968]  [<ffffffff81d58ff5>] start_kernel+0x46f/0x49f
      [    0.026970]  [<ffffffff81d58120>] ? early_idt_handler_array+0x120/0x120
      [    0.026972]  [<ffffffff81d58339>] x86_64_start_reservations+0x2a/0x2c
      [    0.026974]  [<ffffffff81d58485>] x86_64_start_kernel+0x14a/0x16d
      [    0.026977] ---[ end trace f9b3812eb8e24c58 ]---
      [    0.026978] efi_bgrt: Ignoring BGRT: failed to map image memory
    
    early_memremap() has an upper limit on the size of mapping it can
    handle which is ~200KB. Clearly the BGRT image on Môshe's machine is
    much larger than that.
    
    There's actually no reason to restrict ourselves to using the early_*
    version of memremap() - the ACPI BGRT driver is invoked late enough in
    boot that we can use the standard version, with the benefit that the
    late version allows mappings of arbitrary size.
    
    Reported-by: Môshe van der Sterre <me@moshe.nl>
    Tested-by: Môshe van der Sterre <me@moshe.nl>
    Signed-off-by: Matt Fleming <matt@codeblueprint.co.uk>
    Cc: Josh Triplett <josh@joshtriplett.org>
    Cc: Sai Praneeth Prakhya <sai.praneeth.prakhya@intel.com>
    Cc: Borislav Petkov <bp@suse.de>
    Link: http://lkml.kernel.org/r/1450707172-12561-1-git-send-email-matt@codeblueprint.co.uk
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: "Ghannam, Yazen" <Yazen.Ghannam@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e85c6907b2b46b516950a801ea0648fec8f59ba9
Author: Sai Praneeth <sai.praneeth.prakhya@intel.com>
Date:   Wed Dec 9 15:41:08 2015 -0800

    x86/efi-bgrt: Fix kernel panic when mapping BGRT data
    
    commit 50a0cb565246f20d59cdb161778531e4b19d35ac upstream.
    
    Starting with this commit 35eb8b81edd4 ("x86/efi: Build our own page
    table structures") efi regions have a separate page directory called
    "efi_pgd". In order to access any efi region we have to first shift %cr3
    to this page table. In the bgrt code we are trying to copy bgrt_header
    and image, but these regions fall under "EFI_BOOT_SERVICES_DATA"
    and to access these regions we have to shift %cr3 to efi_pgd and not
    doing so will cause page fault as shown below.
    
    [    0.251599] Last level dTLB entries: 4KB 64, 2MB 0, 4MB 0, 1GB 4
    [    0.259126] Freeing SMP alternatives memory: 32K (ffffffff8230e000 - ffffffff82316000)
    [    0.271803] BUG: unable to handle kernel paging request at fffffffefce35002
    [    0.279740] IP: [<ffffffff821bca49>] efi_bgrt_init+0x144/0x1fd
    [    0.286383] PGD 300f067 PUD 0
    [    0.289879] Oops: 0000 [#1] SMP
    [    0.293566] Modules linked in:
    [    0.297039] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.4.0-rc1-eywa-eywa-built-in-47041+ #2
    [    0.306619] Hardware name: Intel Corporation Skylake Client platform/Skylake Y LPDDR3 RVP3, BIOS SKLSE2R1.R00.B104.B01.1511110114 11/11/2015
    [    0.320925] task: ffffffff820134c0 ti: ffffffff82000000 task.ti: ffffffff82000000
    [    0.329420] RIP: 0010:[<ffffffff821bca49>]  [<ffffffff821bca49>] efi_bgrt_init+0x144/0x1fd
    [    0.338821] RSP: 0000:ffffffff82003f18  EFLAGS: 00010246
    [    0.344852] RAX: fffffffefce35000 RBX: fffffffefce35000 RCX: fffffffefce2b000
    [    0.352952] RDX: 000000008a82b000 RSI: ffffffff8235bb80 RDI: 000000008a835000
    [    0.361050] RBP: ffffffff82003f30 R08: 000000008a865000 R09: ffffffffff202850
    [    0.369149] R10: ffffffff811ad62f R11: 0000000000000000 R12: 0000000000000000
    [    0.377248] R13: ffff88016dbaea40 R14: ffffffff822622c0 R15: ffffffff82003fb0
    [    0.385348] FS:  0000000000000000(0000) GS:ffff88016d800000(0000) knlGS:0000000000000000
    [    0.394533] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [    0.401054] CR2: fffffffefce35002 CR3: 000000000300c000 CR4: 00000000003406f0
    [    0.409153] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [    0.417252] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [    0.425350] Stack:
    [    0.427638]  ffffffffffffffff ffffffff82256900 ffff88016dbaea40 ffffffff82003f40
    [    0.436086]  ffffffff821bbce0 ffffffff82003f88 ffffffff8219c0c2 0000000000000000
    [    0.444533]  ffffffff8219ba4a ffffffff822622c0 0000000000083000 00000000ffffffff
    [    0.452978] Call Trace:
    [    0.455763]  [<ffffffff821bbce0>] efi_late_init+0x9/0xb
    [    0.461697]  [<ffffffff8219c0c2>] start_kernel+0x463/0x47f
    [    0.467928]  [<ffffffff8219ba4a>] ? set_init_arg+0x55/0x55
    [    0.474159]  [<ffffffff8219b120>] ? early_idt_handler_array+0x120/0x120
    [    0.481669]  [<ffffffff8219b5ee>] x86_64_start_reservations+0x2a/0x2c
    [    0.488982]  [<ffffffff8219b72d>] x86_64_start_kernel+0x13d/0x14c
    [    0.495897] Code: 00 41 b4 01 48 8b 78 28 e8 09 36 01 00 48 85 c0 48 89 c3 75 13 48 c7 c7 f8 ac d3 81 31 c0 e8 d7 3b fb fe e9 b5 00 00 00 45 84 e4 <44> 8b 6b 02 74 0d be 06 00 00 00 48 89 df e8 ae 34 0$
    [    0.518151] RIP  [<ffffffff821bca49>] efi_bgrt_init+0x144/0x1fd
    [    0.524888]  RSP <ffffffff82003f18>
    [    0.528851] CR2: fffffffefce35002
    [    0.532615] ---[ end trace 7b06521e6ebf2aea ]---
    [    0.537852] Kernel panic - not syncing: Attempted to kill the idle task!
    
    As said above one way to fix this bug is to shift %cr3 to efi_pgd but we
    are not doing that way because it leaks inner details of how we switch
    to EFI page tables into a new call site and it also adds duplicate code.
    Instead, we remove the call to efi_lookup_mapped_addr() and always
    perform early_mem*() instead of early_io*() because we want to remap RAM
    regions and not I/O regions. We also delete efi_lookup_mapped_addr()
    because we are no longer using it.
    
    Signed-off-by: Sai Praneeth Prakhya <sai.praneeth.prakhya@intel.com>
    Reported-by: Wendy Wang <wendy.wang@intel.com>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: Josh Triplett <josh@joshtriplett.org>
    Cc: Ricardo Neri <ricardo.neri@intel.com>
    Cc: Ravi Shankar <ravi.v.shankar@intel.com>
    Signed-off-by: Matt Fleming <matt@codeblueprint.co.uk>
    Cc: "Ghannam, Yazen" <Yazen.Ghannam@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 44ff3af83ee1ebca7b1fc35c8471880628d31dbb
Author: Adam Ford <aford173@gmail.com>
Date:   Thu Aug 17 06:01:28 2017 -0500

    ARM: dts: omap3: logicpd-torpedo-37xx-devkit: Fix MMC1 cd-gpio
    
    commit b7ace5ed8867ca54503727988adec6b20af54eeb upstream.
    
    Fixes commit 687c27676151 ("ARM: dts: Add minimal support for LogicPD
    Torpedo DM3730 devkit")
    
    This patch corrects an issue where the cd-gpios was improperly setup
    using IRQ_TYPE_LEVEL_LOW instead of GPIO_ACTIVE_LOW.
    
    Signed-off-by: Adam Ford <aford173@gmail.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 36e0f05afd4e1d09fd47936761a502aedbc50649
Author: Matt Fleming <matt@codeblueprint.co.uk>
Date:   Fri Nov 27 21:09:34 2015 +0000

    x86/efi: Build our own page table structures
    
    commit 67a9108ed4313b85a9c53406d80dc1ae3f8c3e36 upstream.
    
    With commit e1a58320a38d ("x86/mm: Warn on W^X mappings") all
    users booting on 64-bit UEFI machines see the following warning,
    
      ------------[ cut here ]------------
      WARNING: CPU: 7 PID: 1 at arch/x86/mm/dump_pagetables.c:225 note_page+0x5dc/0x780()
      x86/mm: Found insecure W+X mapping at address ffff88000005f000/0xffff88000005f000
      ...
      x86/mm: Checked W+X mappings: FAILED, 165660 W+X pages found.
      ...
    
    This is caused by mapping EFI regions with RWX permissions.
    There isn't much we can do to restrict the permissions for these
    regions due to the way the firmware toolchains mix code and
    data, but we can at least isolate these mappings so that they do
    not appear in the regular kernel page tables.
    
    In commit d2f7cbe7b26a ("x86/efi: Runtime services virtual
    mapping") we started using 'trampoline_pgd' to map the EFI
    regions because there was an existing identity mapping there
    which we use during the SetVirtualAddressMap() call and for
    broken firmware that accesses those addresses.
    
    But 'trampoline_pgd' shares some PGD entries with
    'swapper_pg_dir' and does not provide the isolation we require.
    Notably the virtual address for __START_KERNEL_map and
    MODULES_START are mapped by the same PGD entry so we need to be
    more careful when copying changes over in
    efi_sync_low_kernel_mappings().
    
    This patch doesn't go the full mile, we still want to share some
    PGD entries with 'swapper_pg_dir'. Having completely separate
    page tables brings its own issues such as synchronising new
    mappings after memory hotplug and module loading. Sharing also
    keeps memory usage down.
    
    Signed-off-by: Matt Fleming <matt@codeblueprint.co.uk>
    Reviewed-by: Borislav Petkov <bp@suse.de>
    Acked-by: Borislav Petkov <bp@suse.de>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Dave Jones <davej@codemonkey.org.uk>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Sai Praneeth Prakhya <sai.praneeth.prakhya@intel.com>
    Cc: Stephen Smalley <sds@tycho.nsa.gov>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Toshi Kani <toshi.kani@hp.com>
    Cc: linux-efi@vger.kernel.org
    Link: http://lkml.kernel.org/r/1448658575-17029-6-git-send-email-matt@codeblueprint.co.uk
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Cc: "Ghannam, Yazen" <Yazen.Ghannam@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b73adb60852034d84092d123b323196ca42529cd
Author: Matt Fleming <matt@codeblueprint.co.uk>
Date:   Fri Nov 27 21:09:33 2015 +0000

    x86/efi: Hoist page table switching code into efi_call_virt()
    
    commit c9f2a9a65e4855b74d92cdad688f6ee4a1a323ff upstream.
    
    This change is a prerequisite for pending patches that switch to
    a dedicated EFI page table, instead of using 'trampoline_pgd'
    which shares PGD entries with 'swapper_pg_dir'. The pending
    patches make it impossible to dereference the runtime service
    function pointer without first switching %cr3.
    
    It's true that we now have duplicated switching code in
    efi_call_virt() and efi_call_phys_{prolog,epilog}() but we are
    sacrificing code duplication for a little more clarity and the
    ease of writing the page table switching code in C instead of
    asm.
    
    Signed-off-by: Matt Fleming <matt@codeblueprint.co.uk>
    Reviewed-by: Borislav Petkov <bp@suse.de>
    Acked-by: Borislav Petkov <bp@suse.de>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Dave Jones <davej@codemonkey.org.uk>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Sai Praneeth Prakhya <sai.praneeth.prakhya@intel.com>
    Cc: Stephen Smalley <sds@tycho.nsa.gov>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Toshi Kani <toshi.kani@hp.com>
    Cc: linux-efi@vger.kernel.org
    Link: http://lkml.kernel.org/r/1448658575-17029-5-git-send-email-matt@codeblueprint.co.uk
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Cc: "Ghannam, Yazen" <Yazen.Ghannam@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 87e2bd898d3a79a8c609f183180adac47879a2a4
Author: Matt Fleming <matt@codeblueprint.co.uk>
Date:   Fri Nov 27 21:09:31 2015 +0000

    x86/mm/pat: Ensure cpa->pfn only contains page frame numbers
    
    commit edc3b9129cecd0f0857112136f5b8b1bc1d45918 upstream.
    
    The x86 pageattr code is confused about the data that is stored
    in cpa->pfn, sometimes it's treated as a page frame number,
    sometimes it's treated as an unshifted physical address, and in
    one place it's treated as a pte.
    
    The result of this is that the mapping functions do not map the
    intended physical address.
    
    This isn't a problem in practice because most of the addresses
    we're mapping in the EFI code paths are already mapped in
    'trampoline_pgd' and so the pageattr mapping functions don't
    actually do anything in this case. But when we move to using a
    separate page table for the EFI runtime this will be an issue.
    
    Signed-off-by: Matt Fleming <matt@codeblueprint.co.uk>
    Reviewed-by: Borislav Petkov <bp@suse.de>
    Acked-by: Borislav Petkov <bp@suse.de>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Sai Praneeth Prakhya <sai.praneeth.prakhya@intel.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Toshi Kani <toshi.kani@hp.com>
    Cc: linux-efi@vger.kernel.org
    Link: http://lkml.kernel.org/r/1448658575-17029-3-git-send-email-matt@codeblueprint.co.uk
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Cc: "Ghannam, Yazen" <Yazen.Ghannam@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b377c453b3631531679cbe594b7d28c5ecd82cea
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Thu Oct 19 20:51:10 2017 +0800

    ipsec: Fix aborted xfrm policy dump crash
    
    commit 1137b5e2529a8f5ca8ee709288ecba3e68044df2 upstream.
    
    An independent security researcher, Mohamed Ghannam, has reported
    this vulnerability to Beyond Security's SecuriTeam Secure Disclosure
    program.
    
    The xfrm_dump_policy_done function expects xfrm_dump_policy to
    have been called at least once or it will crash.  This can be
    triggered if a dump fails because the target socket's receive
    buffer is full.
    
    This patch fixes it by using the cb->start mechanism to ensure that
    the initialisation is always done regardless of the buffer situation.
    
    Fixes: 12a169e7d8f4 ("ipsec: Put dumpers on the dump list")
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Cc: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 27248d2fa77f028f639f2cbac621447cc94dbbb5
Author: Tom Herbert <tom@herbertland.com>
Date:   Tue Dec 15 15:41:37 2015 -0800

    netlink: add a start callback for starting a netlink dump
    
    commit fc9e50f5a5a4e1fa9ba2756f745a13e693cf6a06 upstream.
    
    The start callback allows the caller to set up a context for the
    dump callbacks. Presumably, the context can then be destroyed in
    the done callback.
    
    Signed-off-by: Tom Herbert <tom@herbertland.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Cc: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>