commit d962bf8dd954db6db513b42cc484a9528df3e5a3
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Mar 15 10:03:13 2017 +0800

    Linux 4.9.15

commit 182ff0ebbdab926578728784299cc9d9c195d515
Author: K. Y. Srinivasan <kys@microsoft.com>
Date:   Wed Feb 8 18:30:56 2017 -0700

    drivers: hv: Turn off write permission on the hypercall page
    
    commit 372b1e91343e657a7cc5e2e2bcecd5140ac28119 upstream.
    
    The hypercall page only needs to be executable but currently it is setup to
    be writable as well. Fix the issue.
    
    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Acked-by: Kees Cook <keescook@chromium.org>
    Reported-by: Stephen Hemminger <stephen@networkplumber.org>
    Tested-by: Stephen Hemminger <stephen@networkplumber.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 63e873679ba99649bf22cc7b964315591cedf4c5
Author: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Date:   Thu Mar 9 16:17:37 2017 -0800

    fat: fix using uninitialized fields of fat_inode/fsinfo_inode
    
    commit c0d0e351285161a515396b7b1ee53ec9ffd97e3c upstream.
    
    Recently fallocate patch was merged and it uses
    MSDOS_I(inode)->mmu_private at fat_evict_inode().  However,
    fat_inode/fsinfo_inode that was introduced in past didn't initialize
    MSDOS_I(inode) properly.
    
    With those combinations, it became the cause of accessing random entry
    in FAT area.
    
    Link: http://lkml.kernel.org/r/87pohrj4i8.fsf@mail.parknet.co.jp
    Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
    Reported-by: Moreno Bartalucci <moreno.bartalucci@tecnorama.it>
    Tested-by: Moreno Bartalucci <moreno.bartalucci@tecnorama.it>
    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 16ace91043bf5fa192bb6e42451524b3c6ad7bd7
Author: Tahsin Erdogan <tahsin@google.com>
Date:   Thu Mar 9 16:17:26 2017 -0800

    mm: do not call mem_cgroup_free() from within mem_cgroup_alloc()
    
    commit 40e952f9d687928b32db20226f085ae660a7237c upstream.
    
    mem_cgroup_free() indirectly calls wb_domain_exit() which is not
    prepared to deal with a struct wb_domain object that hasn't executed
    wb_domain_init().  For instance, the following warning message is
    printed by lockdep if alloc_percpu() fails in mem_cgroup_alloc():
    
      INFO: trying to register non-static key.
      the code is fine but needs lockdep annotation.
      turning off the locking correctness validator.
      CPU: 1 PID: 1950 Comm: mkdir Not tainted 4.10.0+ #151
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
      Call Trace:
       dump_stack+0x67/0x99
       register_lock_class+0x36d/0x540
       __lock_acquire+0x7f/0x1a30
       lock_acquire+0xcc/0x200
       del_timer_sync+0x3c/0xc0
       wb_domain_exit+0x14/0x20
       mem_cgroup_free+0x14/0x40
       mem_cgroup_css_alloc+0x3f9/0x620
       cgroup_apply_control_enable+0x190/0x390
       cgroup_mkdir+0x290/0x3d0
       kernfs_iop_mkdir+0x58/0x80
       vfs_mkdir+0x10e/0x1a0
       SyS_mkdirat+0xa8/0xd0
       SyS_mkdir+0x14/0x20
       entry_SYSCALL_64_fastpath+0x18/0xad
    
    Add __mem_cgroup_free() which skips wb_domain_exit().  This is used by
    both mem_cgroup_free() and mem_cgroup_alloc() clean up.
    
    Fixes: 0b8f73e104285 ("mm: memcontrol: clean up alloc, online, offline, free functions")
    Link: http://lkml.kernel.org/r/20170306192122.24262-1-tahsin@google.com
    Signed-off-by: Tahsin Erdogan <tahsin@google.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    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 1771fc58a35d6c61861c08a190ecf13cd70a38eb
Author: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Date:   Thu Mar 9 16:17:23 2017 -0800

    thp: fix another corner case of munlock() vs. THPs
    
    commit 6ebb4a1b848fe75323135f93e72c78f8780fd268 upstream.
    
    The following test case triggers BUG() in munlock_vma_pages_range():
    
            int main(int argc, char *argv[])
            {
                    int fd;
    
                    system("mount -t tmpfs -o huge=always none /mnt");
                    fd = open("/mnt/test", O_CREAT | O_RDWR);
                    ftruncate(fd, 4UL << 20);
                    mmap(NULL, 4UL << 20, PROT_READ | PROT_WRITE,
                                    MAP_SHARED | MAP_FIXED | MAP_LOCKED, fd, 0);
                    mmap(NULL, 4096, PROT_READ | PROT_WRITE,
                                    MAP_SHARED | MAP_LOCKED, fd, 0);
                    munlockall();
                    return 0;
            }
    
    The second mmap() create PTE-mapping of the first huge page in file.  It
    makes kernel munlock the page as we never keep PTE-mapped page mlocked.
    
    On munlockall() when we handle vma created by the first mmap(),
    munlock_vma_page() returns page_mask == 0, as the page is not mlocked
    anymore.  On next iteration follow_page_mask() return tail page, but
    page_mask is HPAGE_NR_PAGES - 1.  It makes us skip to the first tail
    page of the next huge page and step on
    VM_BUG_ON_PAGE(PageMlocked(page)).
    
    The fix is not use the page_mask from follow_page_mask() at all.  It has
    no use for us.
    
    Link: http://lkml.kernel.org/r/20170302150252.34120-1-kirill.shutemov@linux.intel.com
    Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Andrea Arcangeli <aarcange@redhat.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 2f18b39499b23579a60e8ed1d2c0b56154388323
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Sat Mar 11 01:31:19 2017 +0100

    x86/tlb: Fix tlb flushing when lguest clears PGE
    
    commit 2c4ea6e28dbf15ab93632c5c189f3948366b8885 upstream.
    
    Fengguang reported random corruptions from various locations on x86-32
    after commits d2852a224050 ("arch: add ARCH_HAS_SET_MEMORY config") and
    9d876e79df6a ("bpf: fix unlocking of jited image when module ronx not set")
    that uses the former. While x86-32 doesn't have a JIT like x86_64, the
    bpf_prog_lock_ro() and bpf_prog_unlock_ro() got enabled due to
    ARCH_HAS_SET_MEMORY, whereas Fengguang's test kernel doesn't have module
    support built in and therefore never had the DEBUG_SET_MODULE_RONX setting
    enabled.
    
    After investigating the crashes further, it turned out that using
    set_memory_ro() and set_memory_rw() didn't have the desired effect, for
    example, setting the pages as read-only on x86-32 would still let
    probe_kernel_write() succeed without error. This behavior would manifest
    itself in situations where the vmalloc'ed buffer was accessed prior to
    set_memory_*() such as in case of bpf_prog_alloc(). In cases where it
    wasn't, the page attribute changes seemed to have taken effect, leading to
    the conclusion that a TLB invalidate didn't happen. Moreover, it turned out
    that this issue reproduced with qemu in "-cpu kvm64" mode, but not for
    "-cpu host". When the issue occurs, change_page_attr_set_clr() did trigger
    a TLB flush as expected via __flush_tlb_all() through cpa_flush_range(),
    though.
    
    There are 3 variants for issuing a TLB flush: invpcid_flush_all() (depends
    on CPU feature bits X86_FEATURE_INVPCID, X86_FEATURE_PGE), cr4 based flush
    (depends on X86_FEATURE_PGE), and cr3 based flush.  For "-cpu host" case in
    my setup, the flush used invpcid_flush_all() variant, whereas for "-cpu
    kvm64", the flush was cr4 based. Switching the kvm64 case to cr3 manually
    worked fine, and further investigating the cr4 one turned out that
    X86_CR4_PGE bit was not set in cr4 register, meaning the
    __native_flush_tlb_global_irq_disabled() wrote cr4 twice with the same
    value instead of clearing X86_CR4_PGE in the first write to trigger the
    flush.
    
    It turned out that X86_CR4_PGE was cleared from cr4 during init from
    lguest_arch_host_init() via adjust_pge(). The X86_FEATURE_PGE bit is also
    cleared from there due to concerns of using PGE in guest kernel that can
    lead to hard to trace bugs (see bff672e630a0 ("lguest: documentation V:
    Host") in init()). The CPU feature bits are cleared in dynamic
    boot_cpu_data, but they never propagated to __flush_tlb_all() as it uses
    static_cpu_has() instead of boot_cpu_has() for testing which variant of TLB
    flushing to use, meaning they still used the old setting of the host
    kernel.
    
    Clearing via setup_clear_cpu_cap(X86_FEATURE_PGE) so this would propagate
    to static_cpu_has() checks is too late at this point as sections have been
    patched already, so for now, it seems reasonable to switch back to
    boot_cpu_has(X86_FEATURE_PGE) as it was prior to commit c109bf95992b
    ("x86/cpufeature: Remove cpu_has_pge"). This lets the TLB flush trigger via
    cr3 as originally intended, properly makes the new page attributes visible
    and thus fixes the crashes seen by Fengguang.
    
    Fixes: c109bf95992b ("x86/cpufeature: Remove cpu_has_pge")
    Reported-by: Fengguang Wu <fengguang.wu@intel.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Cc: bp@suse.de
    Cc: Kees Cook <keescook@chromium.org>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: netdev@vger.kernel.org
    Cc: Rusty Russell <rusty@rustcorp.com.au>
    Cc: Alexei Starovoitov <ast@kernel.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: lkp@01.org
    Cc: Laura Abbott <labbott@redhat.com>
    Link: http://lkml.kernrl.org/r/20170301125426.l4nf65rx4wahohyl@wfg-t540p.sh.intel.com
    Link: http://lkml.kernel.org/r/25c41ad9eca164be4db9ad84f768965b7eb19d9e.1489191673.git.daniel@iogearbox.net
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 91cdd9d79616ccea16e2e26fe329a15d226feb0b
Author: Dan Williams <dan.j.williams@intel.com>
Date:   Thu Mar 9 16:16:42 2017 -0800

    x86, mm: fix gup_pte_range() vs DAX mappings
    
    commit ef947b2529f918d9606533eb9c32b187ed6a5ede upstream.
    
    gup_pte_range() fails to check pte_allows_gup() before translating a DAX
    pte entry, pte_devmap(), to a page.  This allows writes to read-only
    mappings, and bypasses the DAX cacheline dirty tracking due to missed
    'mkwrite' faults.  The gup_huge_pmd() path and the gup_huge_pud() path
    correctly check pte_allows_gup() before checking for _devmap() entries.
    
    Fixes: 3565fce3a659 ("mm, x86: get_user_pages() for dax mappings")
    Link: http://lkml.kernel.org/r/148804251312.36605.12665024794196605053.stgit@dwillia2-desk3.amr.corp.intel.com
    Signed-off-by: Ross Zwisler <ross.zwisler@linux.intel.com>
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Reported-by: Dave Hansen <dave.hansen@linux.intel.com>
    Reported-by: Ross Zwisler <ross.zwisler@linux.intel.com>
    Cc: Xiong Zhou <xzhou@redhat.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    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 290215a2abfd9c0ede35dfc753439ef61cfd679b
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Mon Jan 16 12:06:09 2017 +0100

    libceph: use BUG() instead of BUG_ON(1)
    
    commit d24cdcd3e40a6825135498e11c20c7976b9bf545 upstream.
    
    I ran into this compile warning, which is the result of BUG_ON(1)
    not always leading to the compiler treating the code path as
    unreachable:
    
        include/linux/ceph/osdmap.h: In function 'ceph_can_shift_osds':
        include/linux/ceph/osdmap.h:62:1: error: control reaches end of non-void function [-Werror=return-type]
    
    Using BUG() here avoids the warning.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ff3bcdc9b5f00809a18cc1a3ea42a72e00b1a895
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Tue Feb 14 18:12:38 2017 +0200

    drm/i915: Fix not finding the VBT when it overlaps with OPREGION_ASLE_EXT
    
    commit 998d75730b40afc218c059d811869abe9676b305 upstream.
    
    If there is no OPREGION_ASLE_EXT then a VBT stored in mailbox #4 may
    use the ASLE_EXT parts of the opregion. Adjust the vbt_size calculation
    for a vbt in mailbox #4 for this.
    
    This fixes the driver not finding the VBT on a jumper ezpad mini3
    cherrytrail tablet and on a ACER SW5_017 machine.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/1487088758-30050-1-git-send-email-jani.nikula@intel.com
    (cherry picked from commit dfb65e71ea2c1d97ac373cc0587dc60b3307581a)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 686ea5862eb61e070881c221271f6563cb74a7f0
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Wed Feb 8 19:52:54 2017 +0200

    drm/i915: Avoid spurious WARNs about the wrong pipe in the PPS code
    
    commit aa9323dd49b23932a09023012f050556de64f118 upstream.
    
    Until recently vlv_steal_power_sequencer() wasn't being called for
    normal DP ports, and hence it could assert that it should only be
    called for pipe A and B (since pipe C doesn't support eDP). However
    that changed when we started to consider normal DP ports as well when
    choosing a PPS. So we will now get spurious warnings when
    vlv_steal_power_sequencer() does get called for pipe C. Avoid this by
    moving the WARN down into vlv_detach_power_sequencer() where this
    assertion should still hold.
    
    Cc: Imre Deak <imre.deak@intel.com>
    Fixes: 9f2bdb006a7e ("drm/i915: Prevent PPS stealing from a normal DP port on VLV/CHV")
    References: https://bugs.freedesktop.org/show_bug.cgi?id=95287
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/20170208175254.10958-1-ville.syrjala@linux.intel.com
    Reviewed-by: Imre Deak <imre.deak@intel.com>
    (cherry picked from commit d158694f452252d0fef335a775aeb3eb74fe7af0)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 967e17bcc96da9ab48fd621a6859d1ca55e82df9
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Tue Feb 7 12:49:56 2017 +0000

    drm: Cancel drm_fb_helper_resume_work on unload
    
    commit 24f76b2c87ed68f79f9f0705b11ccbefaaa0d390 upstream.
    
    We can not allow the worker to run after its fbdev, or even the module,
    has been removed.
    
    Fixes: cfe63423d9be ("drm/fb-helper: Add drm_fb_helper_set_suspend_unlocked()")
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Noralf Trønnes <noralf@tronnes.org>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Jani Nikula <jani.nikula@linux.intel.com>
    Cc: Sean Paul <seanpaul@chromium.org>
    Cc: dri-devel@lists.freedesktop.org
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: http://patchwork.freedesktop.org/patch/msgid/20170207124956.14954-2-chris@chris-wilson.co.uk
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9edc456fe621f3ba33859ea3ad3c285e544db9ad
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Tue Feb 7 12:49:55 2017 +0000

    drm: Cancel drm_fb_helper_dirty_work on unload
    
    commit f21b9a92ca7c29382909eaab9facc2cf46f2cc0b upstream.
    
    We can not allow the worker to run after its fbdev, or even the module,
    has been removed.
    
    Fixes: eaa434defaca ("drm/fb-helper: Add fb_deferred_io support")
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Noralf Trønnes <noralf@tronnes.org>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Jani Nikula <jani.nikula@linux.intel.com>
    Cc: Sean Paul <seanpaul@chromium.org>
    Cc: dri-devel@lists.freedesktop.org
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: http://patchwork.freedesktop.org/patch/msgid/20170207124956.14954-1-chris@chris-wilson.co.uk
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 868a747c77cbf1d5e183dbceb912baa4db2be913
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Wed Nov 9 10:39:05 2016 +0000

    drm/i915/gvt: Disable access to stolen memory as a guest
    
    commit ddd09373628adcbdc3f7b9098d22328834f8d772 upstream.
    
    Explicitly disable stolen memory when running as a guest in a virtual
    machine, since the memory is not mediated between clients and reserved
    entirely for the host. The actual size should be reported as zero, but
    like every other quirk we want to tell the user what is happening.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99028
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Zhenyu Wang <zhenyuw@linux.intel.com>
    Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/20161109103905.17860-1-chris@chris-wilson.co.uk
    Reviewed-by: Zhenyu Wang <zhenyuw@linux.intel.com>
    (cherry picked from commit 04a68a35ce6d7b54749989f943993020f48fed62)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f72b751f434062deaf16a1aca2c5f53ddf71ed8f
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed Feb 8 02:46:01 2017 +0300

    drm/atomic: fix an error code in mode_fixup()
    
    commit f9ad86e42d0303eeb8e0d41bb208153022ebd9d2 upstream.
    
    Having "ret" be a bool type works for everything except
    ret = funcs->atomic_check().  The other functions all return zero on
    error but ->atomic_check() returns negative error codes.  We want to
    propagate the error code but instead we return 1.
    
    I found this bug with static analysis and I don't know if it affects
    run time.
    
    Fixes: 4cd4df8080a3 ("drm/atomic: Add ->atomic_check() to encoder helpers")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: http://patchwork.freedesktop.org/patch/msgid/20170207234601.GA23981@mwanda
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 98620b564fadc0f997194b3da0393b78b2c17447
Author: Fabio Estevam <fabio.estevam@nxp.com>
Date:   Wed Feb 8 10:47:49 2017 -0200

    drm/imx: imx-tve: Do not set the regulator voltage
    
    commit fc12bccda8b6f5c38139eceec9e369ed78091b2b upstream.
    
    Commit deb65870b5d9d ("drm/imx: imx-tve: check the value returned by
    regulator_set_voltage()") exposes the following probe issue:
    
    63ff0000.tve supply dac not found, using dummy regulator
    imx-drm display-subsystem: failed to bind 63ff0000.tve (ops imx_tve_ops): -22
    
    When the 'dac-supply' is not passed in the device tree a dummy regulator is
    used and setting its voltage is not allowed.
    
    To fix this issue, do not set the dac-supply voltage inside the driver
    and let its voltage be specified in the device tree.
    
    Print a warning if the the 'dac-supply' voltage has a value different
    from 2.75V.
    
    Fixes: deb65870b5d9d ("drm/imx: imx-tve: check the value returned by regulator_set_voltage()")
    Suggested-by: Lucas Stach <l.stach@pengutronix.de>
    Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com>
    Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3a654a85932fa7a909b11934df7657c1a2cb3609
Author: Nandor Han <nandor.han@ge.com>
Date:   Tue Oct 11 14:13:41 2016 +0300

    dmaengine: imx-sdma - correct the dma transfer residue calculation
    
    commit 85f57752b33cf12f1d583f0c10b752292de00abe upstream.
    
    The residue calculation was taking in consideration that dma
    transaction status will be always retrieved in the dma callback
    used to inform that dma transfer is complete. However this is not
    the case for all subsystems that use dma. Some subsystems use a
    timer to check the dma status periodically.
    
    Therefore the calculation was updated and residue is calculated
    accordingly by a) update the residue calculation taking in
    consideration the last used buffer index by using *buf_ptail* variable
    and b) chn_real_count (number of bytes transferred) is initialized to
    zero, when dma channel is created, to avoid using an uninitialized
    value in residue calculation when dma status is checked without
    waiting dma complete event.
    
    Signed-off-by: Nandor Han <nandor.han@ge.com>
    Acked-by: Peter Senna Tschudin <peter.senna@collabora.com>
    Tested-by: Peter Senna Tschudin <peter.senna@collabora.com>
    Tested-by: Marek Vasut <marex@denx.de>
    Signed-off-by: Vinod Koul <vinod.koul@intel.com>
    Cc: Fabio Estevam <festevam@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 56a567de553e0ad1440b111077dce521ecdd0cd8
Author: Thomas Hellstrom <thellstrom@vmware.com>
Date:   Tue Feb 21 17:42:27 2017 +0700

    drm/vmwgfx: Work around drm removal of control nodes
    
    commit 31788ca803a0c89078f9e604e64286fbd9077926 upstream.
    
    vmware tools has a daemon that gets layout information from the GUI and
    forwards it to DRM so that the modesetting code can set preferred connector
    locations and modes. This daemon was using control nodes but since control
    nodes were just removed, make it possible for the daemon to use render- or
    primary nodes instead. This is a bit ugly but will allow drm to proceed with
    removal of the mostly unused control-node code and allow vmware to proceed
    with fixing up automatic layout settings for gnome-shell/wayland.
    
    We bump minor to inform user-space about the api change.
    
    Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
    Reviewed-by: Sinclair Yeh <syeh@vmware.com>
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: http://patchwork.freedesktop.org/patch/msgid/20170221104227.2854-1-thellstrom@vmware.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 55f47122c2e8d77a2bdb0f4bd7da57423f947824
Author: Michel Dänzer <michel.daenzer@amd.com>
Date:   Wed Jan 25 17:21:31 2017 +0900

    drm/ttm: Make sure BOs being swapped out are cacheable
    
    commit 239ac65fa5ffab71adf66e642750f940e7241d99 upstream.
    
    The current caching state may not be tt_cached, even though the
    placement contains TTM_PL_FLAG_CACHED, because placement can contain
    multiple caching flags. Trying to swap out such a BO would trip up the
    
            BUG_ON(ttm->caching_state != tt_cached);
    
    in ttm_tt_swapout.
    
    Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
    Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com>
    Reviewed-by: Christian König <christian.koenig@amd.com>.
    Reviewed-by: Sinclair Yeh <syeh@vmware.com>
    Signed-off-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ec8e40b117c3064cb826a4f25d77e45a7f87d602
Author: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Date:   Mon Feb 20 16:25:45 2017 +0100

    drm/edid: Add EDID_QUIRK_FORCE_8BPC quirk for Rotel RSX-1058
    
    commit 36fc579761b50784b63dafd0f2e796b659e0f5ee upstream.
    
    Rotel RSX-1058 is a receiver with 4 HDMI inputs and a HDMI output, all
    1.1.
    
    When a sink that supports deep color is connected to the output, the
    receiver will send EDIDs that advertise this capability, even if it
    isn't possible with HDMI versions earlier than 1.3.
    
    Currently the kernel is assuming that deep color is possible and the
    sink displays an error.
    
    This quirk will make sure that deep color isn't used with this
    particular receiver.
    
    Fixes: 7a0baa623446 ("Revert "drm/i915: Disable 12bpc hdmi for now"")
    Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/20170220152545.13153-1-tomeu.vizoso@collabora.com
    Cc: Matt Horan <matt@matthoran.com>
    Tested-by: Matt Horan <matt@matthoran.com>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99869
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f96c10c2bd1ba4c438cb5e61700825f6ab376a7e
Author: Y.C. Chen <yc_chen@aspeedtech.com>
Date:   Thu Feb 23 15:52:33 2017 +0800

    drm/ast: Fix AST2400 POST failure without BMC FW or VBIOS
    
    commit 3856081eede297b617560b85e948cfb00bb395ec upstream.
    
    The current POST code for the AST2300/2400 family doesn't work properly
    if the chip hasn't been initialized previously by either the BMC own FW
    or the VBIOS. This fixes it.
    
    Signed-off-by: Y.C. Chen <yc_chen@aspeedtech.com>
    Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Tested-by: Y.C. Chen <yc_chen@aspeedtech.com>
    Acked-by: Joel Stanley <joel@jms.id.au>
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5da03582e2120b04a58aabc7caa61109106e6c3d
Author: Y.C. Chen <yc_chen@aspeedtech.com>
Date:   Wed Feb 22 15:14:19 2017 +1100

    drm/ast: Call open_key before enable_mmio in POST code
    
    commit 9bb92f51558f2ef5f56c257bdcea0588f31d857e upstream.
    
    open_key enables access the registers used by enable_mmio
    
    Signed-off-by: Y.C. Chen <yc_chen@aspeedtech.com>
    Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Acked-by: Joel Stanley <joel@jms.id.au>
    Tested-by: Y.C. Chen <yc_chen@aspeedtech.com>
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 54aa80e300d6e64d569962f25c50bc37436ae9de
Author: Y.C. Chen <yc_chen@aspeedtech.com>
Date:   Wed Feb 22 15:10:50 2017 +1100

    drm/ast: Fix test for VGA enabled
    
    commit 905f21a49d388de3e99438235f3301cabf0c0ef4 upstream.
    
    The test to see if VGA was already enabled is doing an unnecessary
    second test from a register that may or may not have been initialized
    to a valid value. Remove it.
    
    Signed-off-by: Y.C. Chen <yc_chen@aspeedtech.com>
    Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Acked-by: Joel Stanley <joel@jms.id.au>
    Tested-by: Y.C. Chen <yc_chen@aspeedtech.com>
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0734a3213ca83c92e27167624737fd7a2fcbcca5
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Fri Feb 10 00:00:52 2017 -0500

    drm/amdgpu: add more cases to DCE11 possible crtc mask setup
    
    commit 4ce3bd45b351633f2a0512c587f7fcba2ce044e8 upstream.
    
    Add cases for asics with 3 and 5 crtcs.  Fixes an artificial
    limitation on asics with 3 or 5 crtcs.
    
    Fixes:
    https://bugs.freedesktop.org/show_bug.cgi?id=99744
    
    Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b507df2e236e5edc868ea8ac572567f1de0107f7
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Mon Feb 27 09:38:11 2017 +0100

    mac80211: use driver-indicated transmitter STA only for data frames
    
    commit 19d19e960598161be92a7e4828eb7706c6410ce6 upstream.
    
    When I originally introduced using the driver-indicated station as an
    optimisation to avoid the hashtable lookup/iteration, of course it
    wasn't intended to really functionally change anything.
    
    I neglected, however, to take into account VLAN interfaces, which have
    the property that management and data frames are handled differently:
    data frames go directly to the station and the VLAN while management
    frames continue to be processed over the underlying/associated AP-type
    interface. As a consequence, when a driver used this optimisation for
    management frames and the user enabled VLANs, my change broke things
    since any management frames, particularly disassoc/deauth, were missed
    by hostapd.
    
    Fix this by restoring the original code path for non-data frames, they
    aren't critical for performance to begin with.
    
    This fixes https://bugzilla.kernel.org/show_bug.cgi?id=194713.
    
    Big thanks goes to Jarek who bisected the issue and provided a very
    detailed bug report, including the crucial information that he was
    using VLANs in his configuration.
    
    Fixes: 771e846bea9e ("mac80211: allow passing transmitter station on RX")
    Reported-and-tested-by: Jarek Kamiński <jarek@freeside.be>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 39813849996f96a764df9b993ba726e995aa1dda
Author: Felix Fietkau <nbd@nbd.name>
Date:   Wed Feb 22 16:16:07 2017 +0100

    mac80211: don't handle filtered frames within a BA session
    
    commit 890030d3c425f49abaa4acf60e20f288b599f980 upstream.
    
    When running a BA session, the driver (or the hardware) already takes
    care of retransmitting failed frames, since it has to keep the receiver
    reorder window in sync.
    
    Adding another layer of retransmit around that does not improve
    anything. In fact, it can only lead to some strong reordering with huge
    latency.
    
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 42e7f3771429d40b5307f0db0ecdba61e79272ac
Author: Sara Sharon <sara.sharon@intel.com>
Date:   Mon Feb 6 15:28:42 2017 +0200

    mac80211: don't reorder frames with SN smaller than SSN
    
    commit b7540d8f25c8034de7e4163fc23ac457bf057731 upstream.
    
    When RX aggregation starts, transmitter may continue send frames
    with SN smaller than SSN until the AddBA response is received.
    However, the reorder buffer is already initialized at this point,
    which will cause the drop of such frames as duplicates since the
    head SN of the reorder buffer is set to the SSN, which is bigger.
    
    Signed-off-by: Sara Sharon <sara.sharon@intel.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b116db0da1bd97ce405c19b304955d54f650eea9
Author: Matt Chen <matt.chen@intel.com>
Date:   Sun Jan 22 02:16:58 2017 +0800

    mac80211: flush delayed work when entering suspend
    
    commit a9e9200d8661c1a0be8c39f93deb383dc940de35 upstream.
    
    The issue was found when entering suspend and resume.
    It triggers a warning in:
    mac80211/key.c: ieee80211_enable_keys()
    ...
    WARN_ON_ONCE(sdata->crypto_tx_tailroom_needed_cnt ||
                 sdata->crypto_tx_tailroom_pending_dec);
    ...
    
    It points out sdata->crypto_tx_tailroom_pending_dec isn't cleaned up successfully
    in a delayed_work during suspend. Add a flush_delayed_work to fix it.
    
    Signed-off-by: Matt Chen <matt.chen@intel.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9ad1571da2c0139db952d8df5a9e4d67a752948b
Author: Dan Williams <dan.j.williams@intel.com>
Date:   Tue Feb 28 18:32:48 2017 -0800

    nfit, libnvdimm: fix interleave set cookie calculation
    
    commit 86ef58a4e35e8fa66afb5898cf6dec6a3bb29f67 upstream.
    
    The interleave-set cookie is a sum that sanity checks the composition of
    an interleave set has not changed from when the namespace was initially
    created.  The checksum is calculated by sorting the DIMMs by their
    location in the interleave-set. The comparison for the sort must be
    64-bit wide, not byte-by-byte as performed by memcmp() in the broken
    case.
    
    Fix the implementation to accept correct cookie values in addition to
    the Linux "memcmp" order cookies, but only allow correct cookies to be
    generated going forward. It does mean that namespaces created by
    third-party-tooling, or created by newer kernels with this fix, will not
    validate on older kernels. However, there are a couple mitigating
    conditions:
    
        1/ platforms with namespace-label capable NVDIMMs are not widely
           available.
    
        2/ interleave-sets with a single-dimm are by definition not affected
           (nothing to sort). This covers the QEMU-KVM NVDIMM emulation case.
    
    The cookie stored in the namespace label will be fixed by any write the
    namespace label, the most straightforward way to achieve this is to
    write to the "alt_name" attribute of a namespace in sysfs.
    
    Fixes: eaf961536e16 ("libnvdimm, nfit: add interleave-set state-tracking infrastructure")
    Reported-by: Nicholas Moulin <nicholas.w.moulin@linux.intel.com>
    Tested-by: Nicholas Moulin <nicholas.w.moulin@linux.intel.com>
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a7b9c9ddb6f457bab2fc8527ffccf16eefba4af4
Author: Max Filippov <jcmvbkbc@gmail.com>
Date:   Tue Jan 3 09:37:34 2017 -0800

    xtensa: move parse_tag_fdt out of #ifdef CONFIG_BLK_DEV_INITRD
    
    commit 4ab18701c66552944188dbcd0ce0012729baab84 upstream.
    
    FDT tag parsing is not related to whether BLK_DEV_INITRD is configured
    or not, move it out of the corresponding #ifdef/#endif block.
    This fixes passing external FDT to the kernel configured w/o
    BLK_DEV_INITRD support.
    
    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 019c088dc403448aa29e8650c551baa1e5e29e0f
Author: Clemens Gruber <clemens.gruber@pqgruber.com>
Date:   Tue Dec 13 16:52:50 2016 +0100

    pwm: pca9685: Fix period change with same duty cycle
    
    commit 8d254a340efb12b40c4c1ff25a48a4f48f7bbd6b upstream.
    
    When first implementing support for changing the output frequency, an
    optimization was added to continue the PWM after changing the prescaler
    without having to reprogram the ON and OFF registers for the duty cycle,
    in case the duty cycle stayed the same. This was flawed, because we
    compared the absolute value of the duty cycle in nanoseconds instead of
    the ratio to the period.
    
    Fix the problem by removing the shortcut.
    
    Fixes: 01ec8472009c9 ("pwm-pca9685: Support changing the output frequency")
    Signed-off-by: Clemens Gruber <clemens.gruber@pqgruber.com>
    Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1f2f16c7b7e307ce0ef1764e6142e1dd2007e40e
Author: Trond Myklebust <trond.myklebust@primarydata.com>
Date:   Sat Feb 11 10:37:38 2017 -0500

    nlm: Ensure callback code also checks that the files match
    
    commit 251af29c320d86071664f02c76f0d063a19fefdf upstream.
    
    It is not sufficient to just check that the lock pids match when
    granting a callback, we also need to ensure that we're granting
    the callback on the right file.
    
    Reported-by: Pankaj Singh <psingh.ait@gmail.com>
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4f77c55c3ac232c4dfa308ce147d943b594a17ca
Author: Gavin Shan <gwshan@linux.vnet.ibm.com>
Date:   Wed Jan 11 11:50:07 2017 +1100

    drivers/pci/hotplug: Fix initial state for empty slot
    
    commit d0c424971f70501ec0a0364117b9934db039c9cc upstream.
    
    In PowerNV PCI hotplug driver, the initial PCI slot's state is set
    to PNV_PHP_STATE_POPULATED if no PCI devices are connected to the
    slot. The PCI devices that are hot added to the slot won't be probed
    and populated because of the check in pnv_php_enable():
    
            /* Check if the slot has been configured */
            if (php_slot->state != PNV_PHP_STATE_REGISTERED)
                    return 0;
    
    This fixes the issue by leaving the slot in PNV_PHP_STATE_REGISTERED
    state initially if nothing is connected to the slot.
    
    Fixes: 360aebd85a4 ("drivers/pci/hotplug: Support surprise hotplug in powernv driver")
    Reported-by: Hank Chang <hankmax0000@gmail.com>
    Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
    Tested-by: Willie Liauw <williel@supermicro.com.tw>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1afe7b4ac3df20d2b9afd90d475fa466027a6595
Author: Gavin Shan <gwshan@linux.vnet.ibm.com>
Date:   Wed Jan 11 11:50:06 2017 +1100

    drivers/pci/hotplug: Handle presence detection change properly
    
    commit d7d55536c6cd1f80295b6d7483ad0587b148bde4 upstream.
    
    The surprise hotplug is driven by interrupt in PowerNV PCI hotplug
    driver. In the interrupt handler, pnv_php_interrupt(), we bail when
    pnv_pci_get_presence_state() returns zero wrongly. It causes the
    presence change event is always ignored incorrectly.
    
    This fixes the issue by bailing on error (non-zero value) returned
    from pnv_pci_get_presence_state().
    
    Fixes: 360aebd85a4 ("drivers/pci/hotplug: Support surprise hotplug in powernv driver")
    Reported-by: Hank Chang <hankmax0000@gmail.com>
    Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
    Tested-by: Willie Liauw <williel@supermicro.com.tw>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 17ea11d553220281ab037799642ecd45246c3a65
Author: Nicholas Bellinger <nab@linux-iscsi.org>
Date:   Wed Feb 22 22:06:32 2017 -0800

    target: Fix NULL dereference during LUN lookup + active I/O shutdown
    
    commit bd4e2d2907fa23a11d46217064ecf80470ddae10 upstream.
    
    When transport_clear_lun_ref() is shutting down a se_lun via
    configfs with new I/O in-flight, it's possible to trigger a
    NULL pointer dereference in transport_lookup_cmd_lun() due
    to the fact percpu_ref_get() doesn't do any __PERCPU_REF_DEAD
    checking before incrementing lun->lun_ref.count after
    lun->lun_ref has switched to atomic_t mode.
    
    This results in a NULL pointer dereference as LUN shutdown
    code in core_tpg_remove_lun() continues running after the
    existing ->release() -> core_tpg_lun_ref_release() callback
    completes, and clears the RCU protected se_lun->lun_se_dev
    pointer.
    
    During the OOPs, the state of lun->lun_ref in the process
    which triggered the NULL pointer dereference looks like
    the following on v4.1.y stable code:
    
    struct se_lun {
      lun_link_magic = 4294932337,
      lun_status = TRANSPORT_LUN_STATUS_FREE,
    
      .....
    
      lun_se_dev = 0x0,
      lun_sep = 0x0,
    
      .....
    
      lun_ref = {
        count = {
          counter = 1
        },
        percpu_count_ptr = 3,
        release = 0xffffffffa02fa1e0 <core_tpg_lun_ref_release>,
        confirm_switch = 0x0,
        force_atomic = false,
        rcu = {
          next = 0xffff88154fa1a5d0,
          func = 0xffffffff8137c4c0 <percpu_ref_switch_to_atomic_rcu>
        }
      }
    }
    
    To address this bug, use percpu_ref_tryget_live() to ensure
    once __PERCPU_REF_DEAD is visable on all CPUs and ->lun_ref
    has switched to atomic_t, all new I/Os will fail to obtain
    a new lun->lun_ref reference.
    
    Also use an explicit percpu_ref_kill_and_confirm() callback
    to block on ->lun_ref_comp to allow the first stage and
    associated RCU grace period to complete, and then block on
    ->lun_ref_shutdown waiting for the final percpu_ref_put()
    to drop the last reference via transport_lun_remove_cmd()
    before continuing with core_tpg_remove_lun() shutdown.
    
    Reported-by: Rob Millner <rlm@daterainc.com>
    Tested-by: Rob Millner <rlm@daterainc.com>
    Cc: Rob Millner <rlm@daterainc.com>
    Tested-by: Vaibhav Tandon <vst@datera.io>
    Cc: Vaibhav Tandon <vst@datera.io>
    Tested-by: Bryant G. Ly <bryantly@linux.vnet.ibm.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 54eff720c99f2aeb096eb3bb98b4475bd1a0ebd9
Author: Gavin Shan <gwshan@linux.vnet.ibm.com>
Date:   Thu Feb 16 10:22:33 2017 +1100

    pci/hotplug/pnv-php: Disable surprise hotplug capability on conflicts
    
    commit 303529d6ef1293513c2c73c9ab86489eebb37d08 upstream.
    
    The root port or PCIe switch downstream port might have been associated
    with driver other than pnv-php. The MSI or MSIx might also have been
    enabled by that driver (e.g. pcieport_drv). Attempt to enable MSI incurs
    below backtrace:
    
     PowerPC PowerNV PCI Hotplug Driver version: 0.1
     ------------[ cut here ]------------
     WARNING: CPU: 19 PID: 1004 at drivers/pci/msi.c:1071 \
                                  __pci_enable_msi_range+0x84/0x4e0
     NIP [c000000000665c34] __pci_enable_msi_range+0x84/0x4e0
     LR [c000000000665c24] __pci_enable_msi_range+0x74/0x4e0
     Call Trace:
     [c000000384d67600] [c000000000665c24] __pci_enable_msi_range+0x74/0x4e0
     [c000000384d676e0] [d00000000aa31b04] pnv_php_register+0x564/0x5a0 [pnv_php]
     [c000000384d677c0] [d00000000aa31658] pnv_php_register+0xb8/0x5a0 [pnv_php]
     [c000000384d678a0] [d00000000aa31658] pnv_php_register+0xb8/0x5a0 [pnv_php]
     [c000000384d67980] [d00000000aa31dfc] pnv_php_init+0x60/0x98 [pnv_php]
     [c000000384d679f0] [c00000000000cfdc] do_one_initcall+0x6c/0x1d0
     [c000000384d67ab0] [c000000000b92354] do_init_module+0x94/0x254
     [c000000384d67b40] [c00000000019719c] load_module+0x258c/0x2c60
     [c000000384d67d30] [c000000000197bb0] SyS_finit_module+0xf0/0x170
     [c000000384d67e30] [c00000000000b184] system_call+0x38/0xe0
    
    This fixes the issue by skipping enabling the surprise hotplug
    capability if the MSI or MSIx on the PCI slot's upstream port has
    been enabled by other driver.
    
    Fixes: 360aebd85a4c ("drivers/pci/hotplug: Support surprise hotplug in powernv driver")
    Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
    Reviewed-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
    Tested-by: Vaibhav Jain <vaibhav@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4ee3508f7abece538c4a99c71d81e94f8df44d97
Author: Gavin Shan <gwshan@linux.vnet.ibm.com>
Date:   Thu Feb 16 10:22:32 2017 +1100

    pci/hotplug/pnv-php: Remove WARN_ON() in pnv_php_put_slot()
    
    commit 36c7c9da40c408a71e5e6bfe12e57dcf549a296d upstream.
    
    The WARN_ON() causes unnecessary backtrace when putting the parent
    slot, which is likely to be NULL.
    
     WARNING: CPU: 2 PID: 1071 at drivers/pci/hotplug/pnv_php.c:85 \
                                  pnv_php_release+0xcc/0x150 [pnv_php]
        :
     Call Trace:
     [c0000003bc007c10] [d00000000ad613c4] pnv_php_release+0x144/0x150 [pnv_php]
     [c0000003bc007c40] [c0000000006641d8] pci_hp_deregister+0x238/0x330
     [c0000003bc007cd0] [d00000000ad61440] pnv_php_unregister_one+0x70/0xa0 [pnv_php]
     [c0000003bc007d10] [d00000000ad614c0] pnv_php_unregister+0x50/0x80 [pnv_php]
     [c0000003bc007d40] [d00000000ad61e84] pnv_php_exit+0x50/0xcb4 [pnv_php]
     [c0000003bc007d70] [c00000000019499c] SyS_delete_module+0x1fc/0x2a0
     [c0000003bc007e30] [c00000000000b184] system_call+0x38/0xe0
    
    Fixes: 66725152fb9f ("PCI/hotplug: PowerPC PowerNV PCI hotplug driver")
    Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
    Reviewed-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
    Tested-by: Vaibhav Jain <vaibhav@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5da90d0018a7f9ed23698663d046146426991ffa
Author: Jeff Layton <jlayton@redhat.com>
Date:   Tue Feb 14 10:09:40 2017 -0500

    ceph: remove req from unsafe list when unregistering it
    
    commit df963ea8a082d31521a120e8e31a29ad8a1dc215 upstream.
    
    There's no reason a request should ever be on a s_unsafe list but not
    in the request tree.
    
    Link: http://tracker.ceph.com/issues/18474
    Signed-off-by: Jeff Layton <jlayton@redhat.com>
    Reviewed-by: Yan, Zheng <zyan@redhat.com>
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ff61e0123b7d8fe13ae8b6f96e5c3abfc11357fc
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Tue Feb 7 12:05:25 2017 -0500

    ktest: Fix child exit code processing
    
    commit 32677207dcc5e594254b7fb4fb2352b1755b1d5b upstream.
    
    The child_exit errno needs to be shifted by 8 bits to compare against the
    return values for the bisect variables.
    
    Fixes: c5dacb88f0a64 ("ktest: Allow overriding bisect test results")
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1f2ca141ec53a9c43ea0852f013907d19c435986
Author: Boris Brezillon <boris.brezillon@free-electrons.com>
Date:   Mon Nov 28 16:17:56 2016 +0100

    memory/atmel-ebi: Fix ns <-> cycles conversions
    
    commit ee194289502a6901cc77dc9a893bf2afd351ac5e upstream.
    
    at91sam9_ebi_get_config() is incorrectly converting timings in clock
    cycles into timings in nanoseconds by multiplying the cycle values by
    the clk rate instead of the clk period.
    
    at91sam9_ebi_xslate_config() has the same problem for the
    tdf_ns -> tdf_cycles conversion.
    
    Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Reported-by: Chris Leahy <leahycm@gmail.com>
    Fixes: 6a4ec4cd0888 ("memory: add Atmel EBI (External Bus Interface) driver")
    Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b2b0f6ffd3f97953044e909ca311d2a580ae8575
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Fri Feb 24 16:43:36 2017 +0100

    orangefs: Use RCU for destroy_inode
    
    commit 0695d7dc1d9f19b82ec2cae24856bddce278cfe6 upstream.
    
    freeing of inodes must be RCU-delayed on all filesystems
    
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d3381fab77cbca6f9664cf49b3f5dd3171f1f6d3
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Wed Feb 1 06:06:16 2017 +1300

    fs: Better permission checking for submounts
    
    commit 93faccbbfa958a9668d3ab4e30f38dd205cee8d8 upstream.
    
    To support unprivileged users mounting filesystems two permission
    checks have to be performed: a test to see if the user allowed to
    create a mount in the mount namespace, and a test to see if
    the user is allowed to access the specified filesystem.
    
    The automount case is special in that mounting the original filesystem
    grants permission to mount the sub-filesystems, to any user who
    happens to stumble across the their mountpoint and satisfies the
    ordinary filesystem permission checks.
    
    Attempting to handle the automount case by using override_creds
    almost works.  It preserves the idea that permission to mount
    the original filesystem is permission to mount the sub-filesystem.
    Unfortunately using override_creds messes up the filesystems
    ordinary permission checks.
    
    Solve this by being explicit that a mount is a submount by introducing
    vfs_submount, and using it where appropriate.
    
    vfs_submount uses a new mount internal mount flags MS_SUBMOUNT, to let
    sget and friends know that a mount is a submount so they can take appropriate
    action.
    
    sget and sget_userns are modified to not perform any permission checks
    on submounts.
    
    follow_automount is modified to stop using override_creds as that
    has proven problemantic.
    
    do_mount is modified to always remove the new MS_SUBMOUNT flag so
    that we know userspace will never by able to specify it.
    
    autofs4 is modified to stop using current_real_cred that was put in
    there to handle the previous version of submount permission checking.
    
    cifs is modified to pass the mountpoint all of the way down to vfs_submount.
    
    debugfs is modified to pass the mountpoint all of the way down to
    trace_automount by adding a new parameter.  To make this change easier
    a new typedef debugfs_automount_t is introduced to capture the type of
    the debugfs automount function.
    
    Fixes: 069d5ac9ae0d ("autofs:  Fix automounts by using current_real_cred()->uid")
    Fixes: aeaa4a79ff6a ("fs: Call d_automount with the filesystems creds")
    Reviewed-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Reviewed-by: Seth Forshee <seth.forshee@canonical.com>
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 48e2181b0b8d1a1e226b2932a11d6f94aef28fb8
Author: Bart Van Assche <bart.vanassche@sandisk.com>
Date:   Tue Feb 14 10:56:31 2017 -0800

    IB/srp: Fix race conditions related to task management
    
    commit 0a6fdbdeb1c25e31763c1fb333fa2723a7d2aba6 upstream.
    
    Avoid that srp_process_rsp() overwrites the status information
    in ch if the SRP target response timed out and processing of
    another task management function has already started. Avoid that
    issuing multiple task management functions concurrently triggers
    list corruption. This patch prevents that the following stack
    trace appears in the system log:
    
    WARNING: CPU: 8 PID: 9269 at lib/list_debug.c:52 __list_del_entry_valid+0xbc/0xc0
    list_del corruption. prev->next should be ffffc90004bb7b00, but was ffff8804052ecc68
    CPU: 8 PID: 9269 Comm: sg_reset Tainted: G        W       4.10.0-rc7-dbg+ #3
    Call Trace:
     dump_stack+0x68/0x93
     __warn+0xc6/0xe0
     warn_slowpath_fmt+0x4a/0x50
     __list_del_entry_valid+0xbc/0xc0
     wait_for_completion_timeout+0x12e/0x170
     srp_send_tsk_mgmt+0x1ef/0x2d0 [ib_srp]
     srp_reset_device+0x5b/0x110 [ib_srp]
     scsi_ioctl_reset+0x1c7/0x290
     scsi_ioctl+0x12a/0x420
     sd_ioctl+0x9d/0x100
     blkdev_ioctl+0x51e/0x9f0
     block_ioctl+0x38/0x40
     do_vfs_ioctl+0x8f/0x700
     SyS_ioctl+0x3c/0x70
     entry_SYSCALL_64_fastpath+0x18/0xad
    
    Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
    Cc: Israel Rukshin <israelr@mellanox.com>
    Cc: Max Gurtovoy <maxg@mellanox.com>
    Cc: Laurence Oberman <loberman@redhat.com>
    Cc: Steve Feeley <Steve.Feeley@sandisk.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d5d1d2cc4be76abdabb58e1bdad84fc06090042c
Author: Bart Van Assche <bart.vanassche@sandisk.com>
Date:   Tue Feb 14 10:56:30 2017 -0800

    IB/srp: Avoid that duplicate responses trigger a kernel bug
    
    commit 6cb72bc1b40bb2c1750ee7a5ebade93bed49a5fb upstream.
    
    After srp_process_rsp() returns there is a short time during which
    the scsi_host_find_tag() call will return a pointer to the SCSI
    command that is being completed. If during that time a duplicate
    response is received, avoid that the following call stack appears:
    
    BUG: unable to handle kernel NULL pointer dereference at           (null)
    IP: srp_recv_done+0x450/0x6b0 [ib_srp]
    Oops: 0000 [#1] SMP
    CPU: 10 PID: 0 Comm: swapper/10 Not tainted 4.10.0-rc7-dbg+ #1
    Call Trace:
     <IRQ>
     __ib_process_cq+0x4b/0xd0 [ib_core]
     ib_poll_handler+0x1d/0x70 [ib_core]
     irq_poll_softirq+0xba/0x120
     __do_softirq+0xba/0x4c0
     irq_exit+0xbe/0xd0
     smp_apic_timer_interrupt+0x38/0x50
     apic_timer_interrupt+0x90/0xa0
     </IRQ>
    RIP: srp_recv_done+0x450/0x6b0 [ib_srp] RSP: ffff88046f483e20
    
    Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
    Cc: Israel Rukshin <israelr@mellanox.com>
    Cc: Max Gurtovoy <maxg@mellanox.com>
    Cc: Laurence Oberman <loberman@redhat.com>
    Cc: Steve Feeley <Steve.Feeley@sandisk.com>
    Reviewed-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 516a12ab11bdd66104b1775a097a9a28c311cecb
Author: Bart Van Assche <bart.vanassche@sandisk.com>
Date:   Tue Feb 14 10:56:29 2017 -0800

    IB/SRP: Avoid using IB_MR_TYPE_SG_GAPS
    
    commit d6c58dc40fec35ff6cdb350b53bce0fcf9143709 upstream.
    
    Tests have shown that the following error message is reported when
    using SG-GAPS registration with an mlx5 adapter:
    
    scsi host1: ib_srp: failed RECV status WR flushed (5) for CQE ffff880bd4270eb0
    00000000 00000000 00000000 00000000
    00000000 00000000 00000000 00000000
    00000000 00000000 00000000 00000000
    00000000 0f007806 2500002a ad9fafd1
    scsi host1: ib_srp: reconnect succeeded
    mlx5_0:dump_cqe:262:(pid 7369): dump error cqe
    00000000 00000000 00000000 00000000
    00000000 00000000 00000000 00000000
    00000000 00000000 00000000 00000000
    00000000 0f007806 25000032 00105dd0
    scsi host1: ib_srp: failed FAST REG status memory management operation error (6) for CQE ffff880b92860138
    
    Hence avoid using SG-GAPS memory registrations. Additionally,
    always configure the blk_queue_virt_boundary() to avoid to trigger
    a mapping failure when using adapters that support SG-GAPS (e.g.
    mlx5).
    
    Fixes: commit ad8e66b4a801 ("IB/srp: fix mr allocation when the device supports sg gaps")
    Fixes: commit 509c5f33f4f6 ("IB/srp: Prevent mapping failures")
    Reported-by: Laurence Oberman <loberman@redhat.com>
    Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
    Cc: Israel Rukshin <israelr@mellanox.com>
    Cc: Max Gurtovoy <maxg@mellanox.com>
    Cc: Leon Romanovsky <leonro@mellanox.com>
    Cc: Mark Bloch <markb@mellanox.com>
    Cc: Yuval Shaia <yuval.shaia@oracle.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 04f16db056d035785f217f1b958fe49ca3cd9be5
Author: Leon Romanovsky <leonro@mellanox.com>
Date:   Wed Jan 18 14:10:30 2017 +0200

    IB/mlx5: Fix out-of-bound access
    
    commit 0fd27a88c2e4f548937fd7d93fc6e65c4ad7c278 upstream.
    
    When we initialize buffer to create SRQ in kernel,
    the number of pages was less than actually used in
    following mlx5_fill_page_array().
    
    Fixes: e126ba97dba9 ("mlx5: Add driver for Mellanox Connect-IB adapters")
    Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
    Reviewed-by: Eli Cohen <eli@mellanox.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2e539fa49efda450229e3a13db5202b4d9ae2997
Author: Erez Shitrit <erezsh@mellanox.com>
Date:   Wed Feb 1 19:10:05 2017 +0200

    IB/IPoIB: Add destination address when re-queue packet
    
    commit 2b0841766a898aba84630fb723989a77a9d3b4e6 upstream.
    
    When sending packet to destination that was not resolved yet
    via path query, the driver keeps the skb and tries to re-send it
    again when the path is resolved.
    
    But when re-sending via dev_queue_xmit the kernel doesn't call
    to dev_hard_header, so IPoIB needs to keep 20 bytes in the skb
    and to put the destination address inside them.
    
    In that way the dev_start_xmit will have the correct destination,
    and the driver won't take the destination from the skb->data, while
    nothing exists there, which causes to packet be be dropped.
    
    The test flow is:
    1. Run the SM on remote node,
    2. Restart the driver.
    4. Ping some destination,
    3. Observe that first ICMP request will be dropped.
    
    Fixes: fc791b633515 ("IB/ipoib: move back IB LL address into the hard header")
    Signed-off-by: Erez Shitrit <erezsh@mellanox.com>
    Signed-off-by: Noa Osherovich <noaos@mellanox.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Tested-by: Yuval Shaia <yuval.shaia@oracle.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1626076b8e1cde49becc0e68d2779174e6a6f599
Author: Feras Daoud <ferasda@mellanox.com>
Date:   Wed Dec 28 14:47:23 2016 +0200

    IB/ipoib: Fix deadlock between rmmod and set_mode
    
    commit 0a0007f28304cb9fc87809c86abb80ec71317f20 upstream.
    
    When calling set_mode from sys/fs, the call flow locks the sys/fs lock
    first and then tries to lock rtnl_lock (when calling ipoib_set_mod).
    On the other hand, the rmmod call flow takes the rtnl_lock first
    (when calling unregister_netdev) and then tries to take the sys/fs
    lock. Deadlock a->b, b->a.
    
    The problem starts when ipoib_set_mod frees it's rtnl_lck and tries
    to get it after that.
    
        set_mod:
        [<ffffffff8104f2bd>] ? check_preempt_curr+0x6d/0x90
        [<ffffffff814fee8e>] __mutex_lock_slowpath+0x13e/0x180
        [<ffffffff81448655>] ? __rtnl_unlock+0x15/0x20
        [<ffffffff814fed2b>] mutex_lock+0x2b/0x50
        [<ffffffff81448675>] rtnl_lock+0x15/0x20
        [<ffffffffa02ad807>] ipoib_set_mode+0x97/0x160 [ib_ipoib]
        [<ffffffffa02b5f5b>] set_mode+0x3b/0x80 [ib_ipoib]
        [<ffffffff8134b840>] dev_attr_store+0x20/0x30
        [<ffffffff811f0fe5>] sysfs_write_file+0xe5/0x170
        [<ffffffff8117b068>] vfs_write+0xb8/0x1a0
        [<ffffffff8117ba81>] sys_write+0x51/0x90
        [<ffffffff8100b0f2>] system_call_fastpath+0x16/0x1b
    
        rmmod:
        [<ffffffff81279ffc>] ? put_dec+0x10c/0x110
        [<ffffffff8127a2ee>] ? number+0x2ee/0x320
        [<ffffffff814fe6a5>] schedule_timeout+0x215/0x2e0
        [<ffffffff8127cc04>] ? vsnprintf+0x484/0x5f0
        [<ffffffff8127b550>] ? string+0x40/0x100
        [<ffffffff814fe323>] wait_for_common+0x123/0x180
        [<ffffffff81060250>] ? default_wake_function+0x0/0x20
        [<ffffffff8119661e>] ? ifind_fast+0x5e/0xb0
        [<ffffffff814fe43d>] wait_for_completion+0x1d/0x20
        [<ffffffff811f2e68>] sysfs_addrm_finish+0x228/0x270
        [<ffffffff811f2fb3>] sysfs_remove_dir+0xa3/0xf0
        [<ffffffff81273f66>] kobject_del+0x16/0x40
        [<ffffffff8134cd14>] device_del+0x184/0x1e0
        [<ffffffff8144e59b>] netdev_unregister_kobject+0xab/0xc0
        [<ffffffff8143c05e>] rollback_registered+0xae/0x130
        [<ffffffff8143c102>] unregister_netdevice+0x22/0x70
        [<ffffffff8143c16e>] unregister_netdev+0x1e/0x30
        [<ffffffffa02a91b0>] ipoib_remove_one+0xe0/0x120 [ib_ipoib]
        [<ffffffffa01ed95f>] ib_unregister_device+0x4f/0x100 [ib_core]
        [<ffffffffa021f5e1>] mlx4_ib_remove+0x41/0x180 [mlx4_ib]
        [<ffffffffa01ab771>] mlx4_remove_device+0x71/0x90 [mlx4_core]
    
    Fixes: 862096a8bbf8 ("IB/ipoib: Add more rtnl_link_ops callbacks")
    Cc: Or Gerlitz <ogerlitz@mellanox.com>
    Signed-off-by: Feras Daoud <ferasda@mellanox.com>
    Signed-off-by: Erez Shitrit <erezsh@mellanox.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 808e83e5add13152bd4a88346487de68395c136b
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Fri Jan 20 18:28:35 2017 +1300

    mnt: Tuck mounts under others instead of creating shadow/side mounts.
    
    commit 1064f874abc0d05eeed8993815f584d847b72486 upstream.
    
    Ever since mount propagation was introduced in cases where a mount in
    propagated to parent mount mountpoint pair that is already in use the
    code has placed the new mount behind the old mount in the mount hash
    table.
    
    This implementation detail is problematic as it allows creating
    arbitrary length mount hash chains.
    
    Furthermore it invalidates the constraint maintained elsewhere in the
    mount code that a parent mount and a mountpoint pair will have exactly
    one mount upon them.  Making it hard to deal with and to talk about
    this special case in the mount code.
    
    Modify mount propagation to notice when there is already a mount at
    the parent mount and mountpoint where a new mount is propagating to
    and place that preexisting mount on top of the new mount.
    
    Modify unmount propagation to notice when a mount that is being
    unmounted has another mount on top of it (and no other children), and
    to replace the unmounted mount with the mount on top of it.
    
    Move the MNT_UMUONT test from __lookup_mnt_last into
    __propagate_umount as that is the only call of __lookup_mnt_last where
    MNT_UMOUNT may be set on any mount visible in the mount hash table.
    
    These modifications allow:
     - __lookup_mnt_last to be removed.
     - attach_shadows to be renamed __attach_mnt and its shadow
       handling to be removed.
     - commit_tree to be simplified
     - copy_tree to be simplified
    
    The result is an easier to understand tree of mounts that does not
    allow creation of arbitrary length hash chains in the mount hash table.
    
    The result is also a very slight userspace visible difference in semantics.
    The following two cases now behave identically, where before order
    mattered:
    
    case 1: (explicit user action)
            B is a slave of A
            mount something on A/a , it will propagate to B/a
            and than mount something on B/a
    
    case 2: (tucked mount)
            B is a slave of A
            mount something on B/a
            and than mount something on A/a
    
    Histroically umount A/a would fail in case 1 and succeed in case 2.
    Now umount A/a succeeds in both configurations.
    
    This very small change in semantics appears if anything to be a bug
    fix to me and my survey of userspace leads me to believe that no programs
    will notice or care of this subtle semantic change.
    
    v2: Updated to mnt_change_mountpoint to not call dput or mntput
    and instead to decrement the counts directly.  It is guaranteed
    that there will be other references when mnt_change_mountpoint is
    called so this is safe.
    
    v3: Moved put_mountpoint under mount_lock in attach_recursive_mnt
        As the locking in fs/namespace.c changed between v2 and v3.
    
    v4: Reworked the logic in propagate_mount_busy and __propagate_umount
        that detects when a mount completely covers another mount.
    
    v5: Removed unnecessary tests whose result is alwasy true in
        find_topper and attach_recursive_mnt.
    
    v6: Document the user space visible semantic difference.
    
    Fixes: b90fa9ae8f51 ("[PATCH] shared mount handling: bind and rbind")
    Tested-by: Andrei Vagin <avagin@virtuozzo.com>
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c9b3f3173fa5178df2c8fe2279442f48faaf7a98
Author: Gavin Li <git@thegavinli.com>
Date:   Tue Jan 17 15:24:05 2017 -0800

    brcmfmac: fix incorrect event channel deduction
    
    commit 8e290cecdd0178f3d4cf7d463c51dc7e462843b4 upstream.
    
    brcmf_sdio_fromevntchan() was being called on the the data frame
    rather than the software header, causing some frames to be
    mischaracterized as on the event channel rather than the data channel.
    
    This fixes a major performance regression (due to dropped packets). With
    this patch the download speed jumped from 1Mbit/s back up to 40MBit/s due
    to the sheer amount of packets being incorrectly processed.
    
    Fixes: c56caa9db8ab ("brcmfmac: screening firmware event packet")
    Signed-off-by: Gavin Li <git@thegavinli.com>
    Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
    [kvalo@codeaurora.org: improve commit logs based on email discussion]
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 53d43706f2ba5cd805093d21d69fd700584a71ab
Author: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
Date:   Mon Feb 6 12:07:17 2017 +1100

    cxl: fix nested locking hang during EEH hotplug
    
    commit 171ed0fcd8966d82c45376f1434678e7b9d4d9b1 upstream.
    
    Commit 14a3ae34bfd0 ("cxl: Prevent read/write to AFU config space while AFU
    not configured") introduced a rwsem to fix an invalid memory access that
    occurred when someone attempts to access the config space of an AFU on a
    vPHB whilst the AFU is deconfigured, such as during EEH recovery.
    
    It turns out that it's possible to run into a nested locking issue when EEH
    recovery fails and a full device hotplug is required.
    cxl_pci_error_detected() deconfigures the AFU, taking a writer lock on
    configured_rwsem. When EEH recovery fails, the EEH code calls
    pci_hp_remove_devices() to remove the device, which in turn calls
    cxl_remove() -> cxl_pci_remove_afu() -> pci_deconfigure_afu(), which tries
    to grab the writer lock that's already held.
    
    Standard rwsem semantics don't express what we really want to do here and
    don't allow for nested locking. Fix this by replacing the rwsem with an
    atomic_t which we can control more finely. Allow the AFU to be locked
    multiple times so long as there are no readers.
    
    Fixes: 14a3ae34bfd0 ("cxl: Prevent read/write to AFU config space while AFU not configured")
    Signed-off-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
    Acked-by: Frederic Barrat <fbarrat@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 411d0b0ced692dd2c0d7c10514ca8b923d8fa0f8
Author: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
Date:   Fri Dec 9 17:18:50 2016 +1100

    cxl: Prevent read/write to AFU config space while AFU not configured
    
    commit 14a3ae34bfd0bcb1cc12d55b06a8584c11fac6fc upstream.
    
    During EEH recovery, we deconfigure all AFUs whilst leaving the
    corresponding vPHB and virtual PCI device in place.
    
    If something attempts to interact with the AFU's PCI config space (e.g.
    running lspci) after the AFU has been deconfigured and before it's
    reconfigured, cxl_pcie_{read,write}_config() will read invalid values from
    the deconfigured struct cxl_afu and proceed to Oops when they try to
    dereference pointers that have been set to NULL during deconfiguration.
    
    Add a rwsem to struct cxl_afu so we can prevent interaction with config
    space while the AFU is deconfigured.
    
    Reported-by: Pradipta Ghosh <pradghos@in.ibm.com>
    Suggested-by: Frederic Barrat <fbarrat@linux.vnet.ibm.com>
    Signed-off-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
    Signed-off-by: Vaibhav Jain <vaibhav@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 60037aa689bac37816dca4eab2e8319eaa785dc6
Author: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Date:   Tue Feb 21 11:28:01 2017 +0100

    net: mvpp2: fix DMA address calculation in mvpp2_txq_inc_put()
    
    commit 239a3b663647869330955ec59caac0100ef9b60a upstream.
    
    When TX descriptors are filled in, the buffer DMA address is split
    between the tx_desc->buf_phys_addr field (high-order bits) and
    tx_desc->packet_offset field (5 low-order bits).
    
    However, when we re-calculate the DMA address from the TX descriptor in
    mvpp2_txq_inc_put(), we do not take tx_desc->packet_offset into
    account. This means that when the DMA address is not aligned on a 32
    bytes boundary, we end up calling dma_unmap_single() with a DMA address
    that was not the one returned by dma_map_single().
    
    This inconsistency is detected by the kernel when DMA_API_DEBUG is
    enabled. We fix this problem by properly calculating the DMA address in
    mvpp2_txq_inc_put().
    
    Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e067f68db256c2dc04aae8acb42ebfc138d87a7e
Author: Heiko Carstens <heiko.carstens@de.ibm.com>
Date:   Sun Feb 5 23:03:18 2017 +0100

    s390: use correct input data address for setup_randomness
    
    commit 4920e3cf77347d7d7373552d4839e8d832321313 upstream.
    
    The current implementation of setup_randomness uses the stack address
    and therefore the pointer to the SYSIB 3.2.2 block as input data
    address. Furthermore the length of the input data is the number of
    virtual-machine description blocks which is typically one.
    
    This means that typically a single zero byte is fed to
    add_device_randomness.
    
    Fix both of these and use the address of the first virtual machine
    description block as input data address and also use the correct
    length.
    
    Fixes: bcfcbb6bae64 ("s390: add system information as device randomness")
    Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 321081d522d332b44fd506ea366e1c82cfd94d4e
Author: Heiko Carstens <heiko.carstens@de.ibm.com>
Date:   Sat Feb 4 11:40:36 2017 +0100

    s390: make setup_randomness work
    
    commit da8fd820f389a0e29080b14c61bf5cf1d8ef5ca1 upstream.
    
    Commit bcfcbb6bae64 ("s390: add system information as device
    randomness") intended to add some virtual machine specific information
    to the randomness pool.
    
    Unfortunately it uses the page allocator before it is ready to use. In
    result the page allocator always returns NULL and the setup_randomness
    function never adds anything to the randomness pool.
    
    To fix this use memblock_alloc and memblock_free instead.
    
    Fixes: bcfcbb6bae64 ("s390: add system information as device randomness")
    Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9d38fd6a4f6c097b32128995a260a55351dc7667
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Fri Feb 24 07:43:51 2017 +0100

    s390: TASK_SIZE for kernel threads
    
    commit fb94a687d96c570d46332a4a890f1dcb7310e643 upstream.
    
    Return a sensible value if TASK_SIZE if called from a kernel thread.
    
    This gets us around an issue with copy_mount_options that does a magic
    size calculation "TASK_SIZE - (unsigned long)data" while in a kernel
    thread and data pointing to kernel space.
    
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dc31841fcdce435ed88f87489f9ab09b48b43505
Author: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
Date:   Mon Feb 20 14:52:58 2017 +0100

    s390/chsc: Add exception handler for CHSC instruction
    
    commit 77759137248f34864a8f7a58bbcebfcf1047504a upstream.
    
    Prevent kernel crashes due to unhandled exceptions raised by the CHSC
    instruction which may for example be triggered by invalid ioctl data.
    
    Fixes: 64150adf89df ("s390/cio: Introduce generic synchronous CHSC IOCTL")
    Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com>
    Reviewed-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
    Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 91cfcaa6ed46e41c8b44ee09754988b64e075ef2
Author: Michael Holzheu <holzheu@linux.vnet.ibm.com>
Date:   Tue Feb 7 18:09:14 2017 +0100

    s390/kdump: Use "LINUX" ELF note name instead of "CORE"
    
    commit a4a81d8eebdc1d209d034f62a082a5131e4242b5 upstream.
    
    In binutils/libbfd (bfd/elf.c) it is enforced that all s390 specific ELF
    notes like e.g. NT_S390_PREFIX or NT_S390_CTRS have "LINUX" specified
    as note name. Otherwise the notes are ignored.
    
    For /proc/vmcore we currently use "CORE" for these notes.
    
    Up to now this has not been a real problem because the dump analysis tool
    "crash" does not check the note name. But it will break all programs that
    use libbfd for processing ELF notes.
    
    So fix this and use "LINUX" for all s390 specific notes to comply with
    libbfd.
    
    Reported-by: Philipp Rudo <prudo@linux.vnet.ibm.com>
    Reviewed-by: Philipp Rudo <prudo@linux.vnet.ibm.com>
    Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b848102542f5cab63606ad4a45da2e5edc14c571
Author: Gerald Schaefer <gerald.schaefer@de.ibm.com>
Date:   Mon Jan 30 15:52:14 2017 +0100

    s390/dcssblk: fix device size calculation in dcssblk_direct_access()
    
    commit a63f53e34db8b49675448d03ae324f6c5bc04fe6 upstream.
    
    Since commit dd22f551 "block: Change direct_access calling convention",
    the device size calculation in dcssblk_direct_access() is off-by-one.
    This results in bdev_direct_access() always returning -ENXIO because the
    returned value is not page aligned.
    
    Fix this by adding 1 to the dev_sz calculation.
    
    Fixes: dd22f551 ("block: Change direct_access calling convention")
    Signed-off-by: Gerald Schaefer <gerald.schaefer@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5cec5e32ba5637076aa8f06d61f89cecd877b78e
Author: Julian Wiedmann <jwi@linux.vnet.ibm.com>
Date:   Mon Nov 21 13:37:48 2016 +0100

    s390/qdio: clear DSCI prior to scanning multiple input queues
    
    commit 1e4a382fdc0ba8d1a85b758c0811de3a3631085e upstream.
    
    For devices with multiple input queues, tiqdio_call_inq_handlers()
    iterates over all input queues and clears the device's DSCI
    during each iteration. If the DSCI is re-armed during one
    of the later iterations, we therefore do not scan the previous
    queues again.
    The re-arming also raises a new adapter interrupt. But its
    handler does not trigger a rescan for the device, as the DSCI
    has already been erroneously cleared.
    This can result in queue stalls on devices with multiple
    input queues.
    
    Fix it by clearing the DSCI just once, prior to scanning the queues.
    
    As the code is moved in front of the loop, we also need to access
    the DSCI directly (ie irq->dsci) instead of going via each queue's
    parent pointer to the same irq. This is not a functional change,
    and a follow-up patch will clean up the other users.
    
    In practice, this bug only affects CQ-enabled HiperSockets devices,
    ie. devices with sysfs-attribute "hsuid" set. Setting a hsuid is
    needed for AF_IUCV socket applications that use HiperSockets
    communication.
    
    Fixes: 104ea556ee7f ("qdio: support asynchronous delivery of storage blocks")
    Reviewed-by: Ursula Braun <ubraun@linux.vnet.ibm.com>
    Signed-off-by: Julian Wiedmann <jwi@linux.vnet.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 519b6cead21ee66ad7825750ce8aefaf64dd6792
Author: Dmitry Tunin <hanipouspilot@gmail.com>
Date:   Thu Jan 5 13:19:53 2017 +0300

    Bluetooth: Add another AR3012 04ca:3018 device
    
    commit 441ad62d6c3f131f1dbd7dcdd9cbe3f74dbd8501 upstream.
    
    T:  Bus=01 Lev=01 Prnt=01 Port=07 Cnt=04 Dev#=  5 Spd=12  MxCh= 0
    D:  Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=04ca ProdID=3018 Rev=00.01
    C:  #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
    I:  If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    I:  If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    
    Signed-off-by: Dmitry Tunin <hanipouspilot@gmail.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7c3bab189c16a21742172b09979fd84c13698202
Author: Chao Peng <chao.p.peng@linux.intel.com>
Date:   Tue Feb 21 03:50:01 2017 -0500

    KVM: VMX: use correct vmcs_read/write for guest segment selector/base
    
    commit 96794e4ed4d758272c486e1529e431efb7045265 upstream.
    
    Guest segment selector is 16 bit field and guest segment base is natural
    width field. Fix two incorrect invocations accordingly.
    
    Without this patch, build fails when aggressive inlining is used with ICC.
    
    Signed-off-by: Chao Peng <chao.p.peng@linux.intel.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 035dcc8e87f63b36f3456b39a352f0a1c785b93b
Author: Janosch Frank <frankja@linux.vnet.ibm.com>
Date:   Thu Feb 2 16:39:31 2017 +0100

    KVM: s390: Disable dirty log retrieval for UCONTROL guests
    
    commit e1e8a9624f7ba8ead4f056ff558ed070e86fa747 upstream.
    
    User controlled KVM guests do not support the dirty log, as they have
    no single gmap that we can check for changes.
    
    As they have no single gmap, kvm->arch.gmap is NULL and all further
    referencing to it for dirty checking will result in a NULL
    dereference.
    
    Let's return -EINVAL if a caller tries to sync dirty logs for a
    UCONTROL guest.
    
    Fixes: 15f36eb ("KVM: s390: Add proper dirty bitmap support to S390 kvm.")
    Signed-off-by: Janosch Frank <frankja@linux.vnet.ibm.com>
    Reported-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
    Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c4c590be494404531f54fa1acf580a08031f5bb9
Author: Ian Abbott <abbotti@mev.co.uk>
Date:   Fri Feb 3 20:25:00 2017 +0000

    serial: 8250_pci: Add MKS Tenta SCOM-0800 and SCOM-0801 cards
    
    commit 1c9c858e2ff8ae8024a3d75d2ed080063af43754 upstream.
    
    The MKS Instruments SCOM-0800 and SCOM-0801 cards (originally by Tenta
    Technologies) are 3U CompactPCI serial cards with 4 and 8 serial ports,
    respectively.  The first 4 ports are implemented by an OX16PCI954 chip,
    and the second 4 ports are implemented by an OX16C954 chip on a local
    bus, bridged by the second PCI function of the OX16PCI954.  The ports
    are jumper-selectable as RS-232 and RS-422/485, and the UARTs use a
    non-standard oscillator frequency of 20 MHz (base_baud = 1250000).
    
    Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e5b9778761558ff3d239ed76925a1a7a734918ea
Author: Alexander Popov <alex.popov@linux.com>
Date:   Tue Feb 28 19:54:40 2017 +0300

    tty: n_hdlc: get rid of racy n_hdlc.tbuf
    
    commit 82f2341c94d270421f383641b7cd670e474db56b upstream.
    
    Currently N_HDLC line discipline uses a self-made singly linked list for
    data buffers and has n_hdlc.tbuf pointer for buffer retransmitting after
    an error.
    
    The commit be10eb7589337e5defbe214dae038a53dd21add8
    ("tty: n_hdlc add buffer flushing") introduced racy access to n_hdlc.tbuf.
    After tx error concurrent flush_tx_queue() and n_hdlc_send_frames() can put
    one data buffer to tx_free_buf_list twice. That causes double free in
    n_hdlc_release().
    
    Let's use standard kernel linked list and get rid of n_hdlc.tbuf:
    in case of tx error put current data buffer after the head of tx_buf_list.
    
    Signed-off-by: Alexander Popov <alex.popov@linux.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>