commit d9e0350d2575a20ee7783427da9bd6b6107eb983
Author: Sasha Levin <alexander.levin@verizon.com>
Date:   Mon Mar 13 16:04:36 2017 -0400

    Linux 4.1.39
    
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 7cc65d0852fc30491d6b654ab2a95441fdb76784
Author: Nicolas Iooss <nicolas.iooss_linux@m4x.org>
Date:   Mon Jun 29 18:39:23 2015 +0800

    KVM: x86: remove data variable from kvm_get_msr_common
    
    [ Upstream commit b0996ae48285364710bce812e70ce67771ea6ef7 ]
    
    Commit 609e36d372ad ("KVM: x86: pass host_initiated to functions that
    read MSRs") modified kvm_get_msr_common function to use msr_info->data
    instead of data but missed one occurrence.  Replace it and remove the
    unused local variable.
    
    Fixes: 609e36d372ad ("KVM: x86: pass host_initiated to functions that
    read MSRs")
    Signed-off-by: Nicolas Iooss <nicolas.iooss_linux@m4x.org>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 5f3c6a6c50093815eb56c97ba5cbadef36fbd889
Author: Haozhong Zhang <haozhong.zhang@intel.com>
Date:   Mon Dec 14 23:13:38 2015 +0800

    KVM: VMX: Fix host initiated access to guest MSR_TSC_AUX
    
    [ Upstream commit 81b1b9ca6d5ca5f3ce91c0095402def657cf5db3 ]
    
    The current handling of accesses to guest MSR_TSC_AUX returns error if
    vcpu does not support rdtscp, though those accesses are initiated by
    host. This can result in the reboot failure of some versions of
    QEMU. This patch fixes this issue by passing those host initiated
    accesses for further handling instead.
    
    Signed-off-by: Haozhong Zhang <haozhong.zhang@intel.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit a3fe459977dd25575a4321a07df30edbf55aa233
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Wed Apr 8 15:30:38 2015 +0200

    KVM: x86: pass host_initiated to functions that read MSRs
    
    [ Upstream commit 609e36d372ad9329269e4a1467bd35311893d1d6 ]
    
    SMBASE is only readable from SMM for the VCPU, but it must be always
    accessible if userspace is accessing it.  Thus, all functions that
    read MSRs are changed to accept a struct msr_data; the host_initiated
    and index fields are pre-initialized, while the data field is filled
    on return.
    
    Reviewed-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit bd21c23d668307419b029bbe27ca67508161e59d
Author: Tan Xiaojun <tanxiaojun@huawei.com>
Date:   Mon Mar 6 15:14:25 2017 +0800

    perf/core: Fix the perf_cpu_time_max_percent check
    
    Use "proc_dointvec_minmax" instead of "proc_dointvec" to check the input
    value from user-space.
    
    If not, we can set a big value and some vars will overflow like
    "sysctl_perf_event_sample_rate" which will cause a lot of unexpected
    problems.
    
    Signed-off-by: Tan Xiaojun <tanxiaojun@huawei.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: <acme@kernel.org>
    Cc: <alexander.shishkin@linux.intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Link: http://lkml.kernel.org/r/1487829879-56237-1-git-send-email-tanxiaojun@huawei.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 99e7444514783d1f2653c661ab505a628c09dab7
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Mon Mar 6 15:14:24 2017 +0800

    perf/core: Make sysctl_perf_cpu_time_max_percent conform to documentation
    
    Markus reported that 0 should also disable the throttling we per
    Documentation/sysctl/kernel.txt.
    
    Reported-by: Markus Trippelsdorf <markus@trippelsdorf.de>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Fixes: 91a612eea9a3 ("perf/core: Fix dynamic interrupt throttle")
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Tan Xiaojun <tanxiaojun@huawei.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 19de2ea4b733604ba0e6a8933b396350f0339346
Author: Kan Liang <kan.liang@intel.com>
Date:   Mon Mar 6 15:14:23 2017 +0800

    perf/core: Fix implicitly enable dynamic interrupt throttle
    
    This patch fixes an issue which was introduced by commit:
    
      91a612eea9a3 ("perf/core: Fix dynamic interrupt throttle")
    
    ... which commit unconditionally sets the perf_sample_allowed_ns value
    to !0. But that could trigger a bug in the following corner case:
    
    The user can disable the dynamic interrupt throttle mechanism by setting
    perf_cpu_time_max_percent to 0. Then they change perf_event_max_sample_rate.
    For this case, the mechanism will be enabled implicitly, because
    perf_sample_allowed_ns becomes !0 - which is not what we want.
    
    This patch only updates perf_sample_allowed_ns when the dynamic
    interrupt throttle mechanism is enabled.
    
    Signed-off-by: Kan Liang <kan.liang@intel.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Cc: acme@kernel.org
    Link: http://lkml.kernel.org/r/1462260366-3160-1-git-send-email-kan.liang@intel.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Tan Xiaojun <tanxiaojun@huawei.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 551131762cf0205e2f96e7fe85d71c7439b72da1
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Mon Mar 6 15:14:22 2017 +0800

    perf/core: Fix dynamic interrupt throttle
    
    There were two problems with the dynamic interrupt throttle mechanism,
    both triggered by the same action.
    
    When you (or perf_fuzzer) write a huge value into
    /proc/sys/kernel/perf_event_max_sample_rate the computed
    perf_sample_allowed_ns becomes 0. This effectively disables the whole
    dynamic throttle.
    
    This is fixed by ensuring update_perf_cpu_limits() never sets the
    value to 0. However, we allow disabling of the dynamic throttle by
    writing 100 to /proc/sys/kernel/perf_cpu_time_max_percent. This will
    generate a warning in dmesg.
    
    The second problem is that by setting the max_sample_rate to a huge
    number, the adaptive process can take a few tries, since it halfs the
    limit each time. Change that to directly compute a new value based on
    the observed duration.
    
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Tan Xiaojun <tanxiaojun@huawei.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 4f5f648b4f5b008da04dcef644369b58d24ab9b6
Author: Al Viro <viro@ZenIV.linux.org.uk>
Date:   Sun Feb 19 07:15:27 2017 +0000

    Fix missing sanity check in /dev/sg
    
    [ Upstream commit 137d01df511b3afe1f05499aea05f3bafc0fb221 ]
    
    What happens is that a write to /dev/sg is given a request with non-zero
    ->iovec_count combined with zero ->dxfer_len.  Or with ->dxferp pointing
    to an array full of empty iovecs.
    
    Having write permission to /dev/sg shouldn't be equivalent to the
    ability to trigger BUG_ON() while holding spinlocks...
    
    Found by Dmitry Vyukov and syzkaller.
    
    [ The BUG_ON() got changed to a WARN_ON_ONCE(), but this fixes the
      underlying issue.  - Linus ]
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Cc: stable@vger.kernel.org
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit cfb109399f07eb9fe536659dc36e58114c3a02cb
Author: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
Date:   Sat Feb 18 03:42:54 2017 -0800

    printk: use rcuidle console tracepoint
    
    [ Upstream commit fc98c3c8c9dcafd67adcce69e6ce3191d5306c9c ]
    
    Use rcuidle console tracepoint because, apparently, it may be issued
    from an idle CPU:
    
      hw-breakpoint: Failed to enable monitor mode on CPU 0.
      hw-breakpoint: CPU 0 failed to disable vector catch
    
      ===============================
      [ ERR: suspicious RCU usage.  ]
      4.10.0-rc8-next-20170215+ #119 Not tainted
      -------------------------------
      ./include/trace/events/printk.h:32 suspicious rcu_dereference_check() usage!
    
      other info that might help us debug this:
    
      RCU used illegally from idle CPU!
      rcu_scheduler_active = 2, debug_locks = 0
      RCU used illegally from extended quiescent state!
      2 locks held by swapper/0/0:
       #0:  (cpu_pm_notifier_lock){......}, at: [<c0237e2c>] cpu_pm_exit+0x10/0x54
       #1:  (console_lock){+.+.+.}, at: [<c01ab350>] vprintk_emit+0x264/0x474
    
      stack backtrace:
      CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.10.0-rc8-next-20170215+ #119
      Hardware name: Generic OMAP4 (Flattened Device Tree)
        console_unlock
        vprintk_emit
        vprintk_default
        printk
        reset_ctrl_regs
        dbg_cpu_pm_notify
        notifier_call_chain
        cpu_pm_exit
        omap_enter_idle_coupled
        cpuidle_enter_state
        cpuidle_enter_state_coupled
        do_idle
        cpu_startup_entry
        start_kernel
    
    This RCU warning, however, is suppressed by lockdep_off() in printk().
    lockdep_off() increments the ->lockdep_recursion counter and thus
    disables RCU_LOCKDEP_WARN() and debug_lockdep_rcu_enabled(), which want
    lockdep to be enabled "current->lockdep_recursion == 0".
    
    Link: http://lkml.kernel.org/r/20170217015932.11898-1-sergey.senozhatsky@gmail.com
    Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
    Reported-by: Tony Lindgren <tony@atomide.com>
    Tested-by: Tony Lindgren <tony@atomide.com>
    Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Cc: Petr Mladek <pmladek@suse.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Tony Lindgren <tony@atomide.com>
    Cc: Russell King <rmk@armlinux.org.uk>
    Cc: <stable@vger.kernel.org> [3.4+]
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 4cc0d2f4a8c1b97771f16ce65848dd30e5731df7
Author: Miklos Szeredi <mszeredi@redhat.com>
Date:   Thu Feb 16 17:49:02 2017 +0100

    vfs: fix uninitialized flags in splice_to_pipe()
    
    [ Upstream commit 5a81e6a171cdbd1fa8bc1fdd80c23d3d71816fac ]
    
    Flags (PIPE_BUF_FLAG_PACKET, PIPE_BUF_FLAG_GIFT) could remain on the
    unused part of the pipe ring buffer.  Previously splice_to_pipe() left
    the flags value alone, which could result in incorrect behavior.
    
    Uninitialized flags appears to have been there from the introduction of
    the splice syscall.
    
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Cc: <stable@vger.kernel.org> # 2.6.17+
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 64c46de968deccbb7a9bbd42c93f0399aea1036c
Author: Michel Dänzer <michel.daenzer@amd.com>
Date:   Wed Feb 15 11:28:45 2017 +0900

    drm/radeon: Use mode h/vdisplay fields to hide out of bounds HW cursor
    
    [ Upstream commit d74c67dd7800fc7aae381f272875c337f268806c ]
    
    The crtc_h/vdisplay fields may not match the CRTC viewport dimensions
    with special modes such as interlaced ones.
    
    Fixes the HW cursor disappearing in the bottom half of the screen with
    interlaced modes.
    
    Fixes: 6b16cf7785a4 ("drm/radeon: Hide the HW cursor while it's out of bounds")
    Cc: stable@vger.kernel.org
    Reported-by: Ashutosh Kumar <ashutosh.kumar@amd.com>
    Tested-by: Sonny Jiang <sonny.jiang@amd.com>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 55f14c685b8d5ca0e5954ecdc6101c3fef8365c1
Author: Kees Cook <keescook@chromium.org>
Date:   Thu Feb 16 01:44:37 2017 +0100

    ARM: 8658/1: uaccess: fix zeroing of 64-bit get_user()
    
    [ Upstream commit 9e3440481845b2ec22508f60837ee2cab2b6054f ]
    
    The 64-bit get_user() wasn't clearing the high word due to a typo in the
    error handler. The exception handler entry was already correct, though.
    Noticed during recent usercopy test additions in lib/test_user_copy.c.
    
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 5b207199843c139f9a4ee6dfc8377a602d18e936
Author: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Date:   Tue Feb 14 14:49:21 2017 +0200

    drm/dp/mst: fix kernel oops when turning off secondary monitor
    
    [ Upstream commit bb08c04dc867b5f392caec635c097d5d5fcd8c9f ]
    
    100% reproducible issue found on SKL SkullCanyon NUC with two external
    DP daisy-chained monitors in DP/MST mode. When turning off or changing
    the input of the second monitor the machine stops with a kernel
    oops. This issue happened with 4.8.8 as well as drm/drm-intel-nightly.
    
    This issue is traced to an inconsistent control flow in
    drm_dp_update_payload_part1(): the 'port' pointer is set to NULL at the
    same time as 'req_payload.num_slots' is set to zero, but the pointer is
    dereferenced even when req_payload.num_slot is zero.
    
    The problematic dereference was introduced in commit dfda0df34
    ("drm/mst: rework payload table allocation to conform better") and may
    impact all versions since v3.18
    
    The fix suggested by Chris Wilson removes the kernel oops and was found to
    work well after 10mn of monkey-testing with the second monitor power and
    input buttons
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98990
    Fixes: dfda0df34264 ("drm/mst: rework payload table allocation to conform better.")
    Cc: Dave Airlie <airlied@redhat.com>
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Nathan D Ciobanu <nathan.d.ciobanu@linux.intel.com>
    Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
    Cc: Sean Paul <seanpaul@chromium.org>
    Cc: <stable@vger.kernel.org> # v3.18+
    Tested-by: Nathan D Ciobanu <nathan.d.ciobanu@linux.intel.com>
    Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
    Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/1487076561-2169-1-git-send-email-jani.nikula@intel.com
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 68a9660ebc1eb2e58f8bcd6eacadc2d7926c44f4
Author: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Date:   Tue Feb 14 17:47:57 2017 -0200

    [media] siano: make it work again with CONFIG_VMAP_STACK
    
    [ Upstream commit f9c85ee67164b37f9296eab3b754e543e4e96a1c ]
    
    Reported as a Kaffeine bug:
            https://bugs.kde.org/show_bug.cgi?id=375811
    
    The USB control messages require DMA to work. We cannot pass
    a stack-allocated buffer, as it is not warranted that the
    stack would be into a DMA enabled area.
    
    On Kernel 4.9, the default is to not accept DMA on stack anymore
    on x86 architecture. On other architectures, this has been a
    requirement since Kernel 2.2. So, after this patch, this driver
    should likely work fine on all archs.
    
    Tested with USB ID 2040:5510: Hauppauge Windham
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 1c12c2f761072fb1e8a2dd938339feb2dd33be80
Author: Anssi Hannula <anssi.hannula@bitwise.fi>
Date:   Mon Feb 13 13:46:41 2017 +0200

    mmc: core: fix multi-bit bus width without high-speed mode
    
    [ Upstream commit 3d4ef329757cfd5e0b23cce97cdeca7e2df89c99 ]
    
    Commit 577fb13199b1 ("mmc: rework selection of bus speed mode")
    refactored bus width selection code to mmc_select_bus_width().
    
    However, it also altered the behavior to not call the selection code in
    non-high-speed modes anymore.
    
    This causes 1-bit mode to always be used when the high-speed mode is not
    enabled, even though 4-bit and 8-bit bus are valid bus widths in the
    backwards-compatibility (legacy) mode as well (see e.g. 5.3.2 Bus Speed
    Modes in JEDEC 84-B50). This results in a significant regression in
    transfer speeds.
    
    Fix the code to allow 4-bit and 8-bit widths even without high-speed
    mode, as before.
    
    Tested with a Zynq-7000 PicoZed 7020 board.
    
    Fixes: 577fb13199b1 ("mmc: rework selection of bus speed mode")
    Signed-off-by: Anssi Hannula <anssi.hannula@bitwise.fi>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit f5a7ecc0663f870a44895f08e627adc49c0b5cdf
Author: Yang Yang <yang.yang29@zte.com.cn>
Date:   Fri Dec 30 16:17:55 2016 +0800

    futex: Move futex_init() to core_initcall
    
    [ Upstream commit 25f71d1c3e98ef0e52371746220d66458eac75bc ]
    
    The UEVENT user mode helper is enabled before the initcalls are executed
    and is available when the root filesystem has been mounted.
    
    The user mode helper is triggered by device init calls and the executable
    might use the futex syscall.
    
    futex_init() is marked __initcall which maps to device_initcall, but there
    is no guarantee that futex_init() is invoked _before_ the first device init
    call which triggers the UEVENT user mode helper.
    
    If the user mode helper uses the futex syscall before futex_init() then the
    syscall crashes with a NULL pointer dereference because the futex subsystem
    has not been initialized yet.
    
    Move futex_init() to core_initcall so futexes are initialized before the
    root filesystem is mounted and the usermode helper becomes available.
    
    [ tglx: Rewrote changelog ]
    
    Signed-off-by: Yang Yang <yang.yang29@zte.com.cn>
    Cc: jiang.biao2@zte.com.cn
    Cc: jiang.zhengxiong@zte.com.cn
    Cc: zhong.weidong@zte.com.cn
    Cc: deng.huali@zte.com.cn
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: stable@vger.kernel.org
    Link: http://lkml.kernel.org/r/1483085875-6130-1-git-send-email-yang.yang29@zte.com.cn
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit d2e1183d688c619e3225cc6d7f69aefaf94a4b5d
Author: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Date:   Mon Jan 30 12:45:46 2017 -0500

    xen-netfront: Delete rx_refill_timer in xennet_disconnect_backend()
    
    [ Upstream commit 74470954857c264168d2b5a113904cf0cfd27d18 ]
    
    rx_refill_timer should be deleted as soon as we disconnect from the
    backend since otherwise it is possible for the timer to go off before
    we get to xennet_destroy_queues(). If this happens we may dereference
    queue->rx.sring which is set to NULL in xennet_disconnect_backend().
    
    Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    CC: stable@vger.kernel.org
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 09dacd6a83d8640da198e5d21c4b3c0820bb959f
Author: Dave Carroll <david.carroll@microsemi.com>
Date:   Thu Feb 9 11:04:47 2017 -0700

    scsi: aacraid: Fix INTx/MSI-x issue with older controllers
    
    [ Upstream commit 8af8e1c22f9994bb1849c01d66c24fe23f9bc9a0 ]
    
    commit 78cbccd3bd68 ("aacraid: Fix for KDUMP driver hang")
    
    caused a problem on older controllers which do not support MSI-x (namely
    ASR3405,ASR3805). This patch conditionalizes the previous patch to
    controllers which support MSI-x
    
    Cc: <stable@vger.kernel.org> # v4.7+
    Fixes: 78cbccd3bd68 ("aacraid: Fix for KDUMP driver hang")
    Reported-by: Arkadiusz Miskiewicz <a.miskiewicz@gmail.com>
    Signed-off-by: Dave Carroll <david.carroll@microsemi.com>
    Reviewed-by: Raghava Aditya Renukunta <RaghavaAditya.Renukunta@microsemi.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 1a80eb607518ecf6eb49330c0f79b20dd4eb39f3
Author: Tejun Heo <tj@kernel.org>
Date:   Wed Feb 8 14:30:56 2017 -0800

    cpumask: use nr_cpumask_bits for parsing functions
    
    [ Upstream commit 4d59b6ccf000862beed6fc0765d3209f98a8d8a2 ]
    
    Commit 513e3d2d11c9 ("cpumask: always use nr_cpu_ids in formatting and
    parsing functions") converted both cpumask printing and parsing
    functions to use nr_cpu_ids instead of nr_cpumask_bits.  While this was
    okay for the printing functions as it just picked one of the two output
    formats that we were alternating between depending on a kernel config,
    doing the same for parsing wasn't okay.
    
    nr_cpumask_bits can be either nr_cpu_ids or NR_CPUS.  We can always use
    nr_cpu_ids but that is a variable while NR_CPUS is a constant, so it can
    be more efficient to use NR_CPUS when we can get away with it.
    Converting the printing functions to nr_cpu_ids makes sense because it
    affects how the masks get presented to userspace and doesn't break
    anything; however, using nr_cpu_ids for parsing functions can
    incorrectly leave the higher bits uninitialized while reading in these
    masks from userland.  As all testing and comparison functions use
    nr_cpumask_bits which can be larger than nr_cpu_ids, the parsed cpumasks
    can erroneously yield false negative results.
    
    This made the taskstats interface incorrectly return -EINVAL even when
    the inputs were correct.
    
    Fix it by restoring the parse functions to use nr_cpumask_bits instead
    of nr_cpu_ids.
    
    Link: http://lkml.kernel.org/r/20170206182442.GB31078@htj.duckdns.org
    Fixes: 513e3d2d11c9 ("cpumask: always use nr_cpu_ids in formatting and parsing functions")
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Reported-by: Martin Steigerwald <martin.steigerwald@teamix.de>
    Debugged-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Cc: <stable@vger.kernel.org>    [4.0+]
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit eccdadb5e0865817410a69f89a115baa06c9b24a
Author: Jeff Mahoney <jeffm@suse.com>
Date:   Mon Feb 6 19:39:09 2017 -0500

    btrfs: fix btrfs_compat_ioctl failures on non-compat ioctls
    
    [ Upstream commit 2a362249187a8d0f6d942d6e1d763d150a296f47 ]
    
    Commit 4c63c2454ef incorrectly assumed that returning -ENOIOCTLCMD would
    cause the native ioctl to be called.  The ->compat_ioctl callback is
    expected to handle all ioctls, not just compat variants.  As a result,
    when using 32-bit userspace on 64-bit kernels, everything except those
    three ioctls would return -ENOTTY.
    
    Fixes: 4c63c2454ef ("btrfs: bugfix: handle FS_IOC32_{GETFLAGS,SETFLAGS,GETVERSION} in btrfs_ioctl")
    Cc: stable@vger.kernel.org
    Signed-off-by: Jeff Mahoney <jeffm@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 3d3dc3aa7be4b05a980a55a4e3fc969df7c6250d
Author: Nicholas Bellinger <nab@linux-iscsi.org>
Date:   Mon Feb 6 14:28:09 2017 -0800

    target: Fix COMPARE_AND_WRITE ref leak for non GOOD status
    
    [ Upstream commit 9b2792c3da1e80f2d460167d319302a24c9ca2b7 ]
    
    This patch addresses a long standing bug where the commit phase
    of COMPARE_AND_WRITE would result in a se_cmd->cmd_kref reference
    leak if se_cmd->scsi_status returned non SAM_STAT_GOOD.
    
    This would manifest first as a lost SCSI response, and eventual
    hung task during fabric driver logout or re-login, as existing
    shutdown logic waited for the COMPARE_AND_WRITE se_cmd->cmd_kref
    to reach zero.
    
    To address this bug, compare_and_write_post() has been changed
    to drop the incorrect !cmd->scsi_status conditional that was
    preventing *post_ret = 1 for being set during non SAM_STAT_GOOD
    status.
    
    This patch has been tested with SAM_STAT_CHECK_CONDITION status
    from normal target_complete_cmd() callback path, as well as the
    incoming __target_execute_cmd() submission failure path when
    se_cmd->execute_cmd() returns non zero status.
    
    Reported-by: Donald White <dew@datera.io>
    Cc: Donald White <dew@datera.io>
    Tested-by: Gary Guo <ghg@datera.io>
    Cc: Gary Guo <ghg@datera.io>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Cc: <stable@vger.kernel.org> # v3.12+
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 7722fbf8d70329f729339b3631abe06c0a613c91
Author: Nicholas Bellinger <nab@linux-iscsi.org>
Date:   Mon Oct 31 00:54:40 2016 -0700

    target: Use correct SCSI status during EXTENDED_COPY exception
    
    [ Upstream commit 0583c261e6325f392c1f7a1b9112e31298e1a4bd ]
    
    This patch adds the missing target_complete_cmd() SCSI status
    parameter change in target_xcopy_do_work(), that was originally
    missing in commit 926317de33.
    
    It correctly propigates up the correct SCSI status during
    EXTENDED_COPY exception cases, instead of always using the
    hardcoded SAM_STAT_CHECK_CONDITION from original code.
    
    This is required for ESX host environments that expect to
    hit SAM_STAT_RESERVATION_CONFLICT for certain scenarios,
    and SAM_STAT_CHECK_CONDITION results in non-retriable
    status for these cases.
    
    Reported-by: Nixon Vincent <nixon.vincent@calsoftinc.com>
    Tested-by: Nixon Vincent <nixon.vincent@calsoftinc.com>
    Cc: Nixon Vincent <nixon.vincent@calsoftinc.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Cc: stable@vger.kernel.org # 3.14+
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit be97d0ec54e1b75e28f2f238c3b0310396028215
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Feb 8 12:35:39 2017 +0100

    ALSA: seq: Fix race at creating a queue
    
    [ Upstream commit 4842e98f26dd80be3623c4714a244ba52ea096a8 ]
    
    When a sequencer queue is created in snd_seq_queue_alloc(),it adds the
    new queue element to the public list before referencing it.  Thus the
    queue might be deleted before the call of snd_seq_queue_use(), and it
    results in the use-after-free error, as spotted by syzkaller.
    
    The fix is to reference the queue object at the right time.
    
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 0f62f6d7a88b4498df10942597294f494a8575fc
Author: Andrey Ryabinin <aryabinin@virtuozzo.com>
Date:   Thu Jan 26 17:32:11 2017 +0300

    drm/i915: fix use-after-free in page_flip_completed()
    
    [ Upstream commit 5351fbb1bf1413f6024892093528280769ca852f ]
    
    page_flip_completed() dereferences 'work' variable after executing
    queue_work(). This is not safe as the 'work' item might be already freed
    by queued work:
    
        BUG: KASAN: use-after-free in page_flip_completed+0x3ff/0x490 at addr ffff8803dc010f90
        Call Trace:
         __asan_report_load8_noabort+0x59/0x80
         page_flip_completed+0x3ff/0x490
         intel_finish_page_flip_mmio+0xe3/0x130
         intel_pipe_handle_vblank+0x2d/0x40
         gen8_irq_handler+0x4a7/0xed0
         __handle_irq_event_percpu+0xf6/0x860
         handle_irq_event_percpu+0x6b/0x160
         handle_irq_event+0xc7/0x1b0
         handle_edge_irq+0x1f4/0xa50
         handle_irq+0x41/0x70
         do_IRQ+0x9a/0x200
         common_interrupt+0x89/0x89
    
        Freed:
         kfree+0x113/0x4d0
         intel_unpin_work_fn+0x29a/0x3b0
         process_one_work+0x79e/0x1b70
         worker_thread+0x611/0x1460
         kthread+0x241/0x3a0
         ret_from_fork+0x27/0x40
    
    Move queue_work() after trace_i915_flip_complete() to fix this.
    
    Fixes: e5510fac98a7 ("drm/i915: add tracepoints for flip requests & completions")
    Signed-off-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
    Cc: <stable@vger.kernel.org> # v2.6.36+
    Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: http://patchwork.freedesktop.org/patch/msgid/20170126143211.24013-1-aryabinin@virtuozzo.com
    (cherry picked from commit 05c41f926fcc7ef838c80a6a99d84f67b4e0b824)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 96e74ad7ac38ca330d16222e6da38c9a196deb40
Author: Stephen Smalley <sds@tycho.nsa.gov>
Date:   Tue Jan 31 11:54:04 2017 -0500

    selinux: fix off-by-one in setprocattr
    
    [ Upstream commit a050a570db0190164e7250013214e29a5a9803ee ]
    
    SELinux tries to support setting/clearing of /proc/pid/attr attributes
    from the shell by ignoring terminating newlines and treating an
    attribute value that begins with a NUL or newline as an attempt to
    clear the attribute.  However, the test for clearing attributes has
    always been wrong; it has an off-by-one error, and this could further
    lead to reading past the end of the allocated buffer since commit
    bb646cdb12e75d82258c2f2e7746d5952d3e321a ("proc_pid_attr_write():
    switch to memdup_user()").  Fix the off-by-one error.
    
    Even with this fix, setting and clearing /proc/pid/attr attributes
    from the shell is not straightforward since the interface does not
    support multiple write() calls (so shells that write the value and
    newline separately will set and then immediately clear the attribute,
    requiring use of echo -n to set the attribute), whereas trying to use
    echo -n "" to clear the attribute causes the shell to skip the
    write() call altogether since POSIX says that a zero-length write
    causes no side effects. Thus, one must use echo -n to set and echo
    without -n to clear, as in the following example:
    $ echo -n unconfined_u:object_r:user_home_t:s0 > /proc/$$/attr/fscreate
    $ cat /proc/$$/attr/fscreate
    unconfined_u:object_r:user_home_t:s0
    $ echo "" > /proc/$$/attr/fscreate
    $ cat /proc/$$/attr/fscreate
    
    Note the use of /proc/$$ rather than /proc/self, as otherwise
    the cat command will read its own attribute value, not that of the shell.
    
    There are no users of this facility to my knowledge; possibly we
    should just get rid of it.
    
    UPDATE: Upon further investigation it appears that a local process
    with the process:setfscreate permission can cause a kernel panic as a
    result of this bug.  This patch fixes CVE-2017-2618.
    
    Signed-off-by: Stephen Smalley <sds@tycho.nsa.gov>
    [PM: added the update about CVE-2017-2618 to the commit description]
    Cc: stable@vger.kernel.org # 3.5: d6ea83ec6864e
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 2808bb2adc213d36185cbd7ce9de4c39c56c6b55
Author: Vineet Gupta <Vineet.Gupta1@synopsys.com>
Date:   Tue Feb 7 09:44:58 2017 -0800

    ARC: [arcompact] brown paper bag bug in unaligned access delay slot fixup
    
    [ Upstream commit a524c218bc94c705886a0e0fedeee45d1931da32 ]
    
    Reported-by: Jo-Philipp Wich <jo@mein.io>
    Fixes: 9aed02feae57bf7 ("ARC: [arcompact] handle unaligned access delay slot")
    Cc: linux-kernel@vger.kernel.org
    Cc: linux-snps-arc@lists.infradead.org
    Cc: stable@vger.kernel.org
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 37fe8bb8a94b139dfae8d52c3e3490a78ae91b06
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Feb 6 15:09:48 2017 +0100

    ALSA: seq: Don't handle loop timeout at snd_seq_pool_done()
    
    [ Upstream commit 37a7ea4a9b81f6a864c10a7cb0b96458df5310a3 ]
    
    snd_seq_pool_done() syncs with closing of all opened threads, but it
    aborts the wait loop with a timeout, and proceeds to the release
    resource even if not all threads have been closed.  The timeout was 5
    seconds, and if you run a crazy stuff, it can exceed easily, and may
    result in the access of the invalid memory address -- this is what
    syzkaller detected in a bug report.
    
    As a fix, let the code graduate from naiveness, simply remove the loop
    timeout.
    
    BugLink: http://lkml.kernel.org/r/CACT4Y+YdhDV2H5LLzDTJDVF-qiYHUHhtRaW4rbb4gUhTCQB81w@mail.gmail.com
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 762cd3a51cfcf231b7ff559af547c9dd82e8648e
Author: Michal Hocko <mhocko@suse.com>
Date:   Fri Feb 3 13:13:29 2017 -0800

    mm, fs: check for fatal signals in do_generic_file_read()
    
    [ Upstream commit 5abf186a30a89d5b9c18a6bf93a2c192c9fd52f6 ]
    
    do_generic_file_read() can be told to perform a large request from
    userspace.  If the system is under OOM and the reading task is the OOM
    victim then it has an access to memory reserves and finishing the full
    request can lead to the full memory depletion which is dangerous.  Make
    sure we rather go with a short read and allow the killed task to
    terminate.
    
    Link: http://lkml.kernel.org/r/20170201092706.9966-3-mhocko@kernel.org
    Signed-off-by: Michal Hocko <mhocko@suse.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 0445c1444db0c4670774bce300c5bd722992d427
Author: J. Bruce Fields <bfields@redhat.com>
Date:   Tue Jan 31 11:37:50 2017 -0500

    svcrpc: fix oops in absence of krb5 module
    
    [ Upstream commit 034dd34ff4916ec1f8f74e39ca3efb04eab2f791 ]
    
    Olga Kornievskaia says: "I ran into this oops in the nfsd (below)
    (4.10-rc3 kernel). To trigger this I had a client (unsuccessfully) try
    to mount the server with krb5 where the server doesn't have the
    rpcsec_gss_krb5 module built."
    
    The problem is that rsci.cred is copied from a svc_cred structure that
    gss_proxy didn't properly initialize.  Fix that.
    
    [120408.542387] general protection fault: 0000 [#1] SMP
    ...
    [120408.565724] CPU: 0 PID: 3601 Comm: nfsd Not tainted 4.10.0-rc3+ #16
    [120408.567037] Hardware name: VMware, Inc. VMware Virtual =
    Platform/440BX Desktop Reference Platform, BIOS 6.00 07/02/2015
    [120408.569225] task: ffff8800776f95c0 task.stack: ffffc90003d58000
    [120408.570483] RIP: 0010:gss_mech_put+0xb/0x20 [auth_rpcgss]
    ...
    [120408.584946]  ? rsc_free+0x55/0x90 [auth_rpcgss]
    [120408.585901]  gss_proxy_save_rsc+0xb2/0x2a0 [auth_rpcgss]
    [120408.587017]  svcauth_gss_proxy_init+0x3cc/0x520 [auth_rpcgss]
    [120408.588257]  ? __enqueue_entity+0x6c/0x70
    [120408.589101]  svcauth_gss_accept+0x391/0xb90 [auth_rpcgss]
    [120408.590212]  ? try_to_wake_up+0x4a/0x360
    [120408.591036]  ? wake_up_process+0x15/0x20
    [120408.592093]  ? svc_xprt_do_enqueue+0x12e/0x2d0 [sunrpc]
    [120408.593177]  svc_authenticate+0xe1/0x100 [sunrpc]
    [120408.594168]  svc_process_common+0x203/0x710 [sunrpc]
    [120408.595220]  svc_process+0x105/0x1c0 [sunrpc]
    [120408.596278]  nfsd+0xe9/0x160 [nfsd]
    [120408.597060]  kthread+0x101/0x140
    [120408.597734]  ? nfsd_destroy+0x60/0x60 [nfsd]
    [120408.598626]  ? kthread_park+0x90/0x90
    [120408.599448]  ret_from_fork+0x22/0x30
    
    Fixes: 1d658336b05f "SUNRPC: Add RPC based upcall mechanism for RPCGSS auth"
    Cc: stable@vger.kernel.org
    Cc: Simo Sorce <simo@redhat.com>
    Reported-by: Olga Kornievskaia <kolga@netapp.com>
    Tested-by: Olga Kornievskaia <kolga@netapp.com>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 915a8d29e688bca2b8da9c283462cc30fc91c726
Author: Kinglong Mee <kinglongmee@gmail.com>
Date:   Wed Jan 18 19:04:42 2017 +0800

    NFSD: Fix a null reference case in find_or_create_lock_stateid()
    
    [ Upstream commit d19fb70dd68c4e960e2ac09b0b9c79dfdeefa726 ]
    
    nfsd assigns the nfs4_free_lock_stateid to .sc_free in init_lock_stateid().
    
    If nfsd doesn't go through init_lock_stateid() and put stateid at end,
    there is a NULL reference to .sc_free when calling nfs4_put_stid(ns).
    
    This patch let the nfs4_stid.sc_free assignment to nfs4_alloc_stid().
    
    Cc: stable@vger.kernel.org
    Fixes: 356a95ece7aa "nfsd: clean up races in lock stateid searching..."
    Signed-off-by: Kinglong Mee <kinglongmee@gmail.com>
    Reviewed-by: Jeff Layton <jlayton@redhat.com>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit cb89bddc468b06e82ead6adbfe1e673b5a38f8a4
Author: Marcel J.E. Mol <marcel@mesa.nl>
Date:   Mon Jan 30 19:26:40 2017 +0100

    USB: serial: pl2303: add ATEN device ID
    
    [ Upstream commit d07830db1bdb254e4b50d366010b219286b8c937 ]
    
    Seems that ATEN serial-to-usb devices using pl2303 exist with
    different device ids. This patch adds a missing device ID so it
    is recognised by the driver.
    
    Signed-off-by: Marcel J.E. Mol <marcel@mesa.nl>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 564edd8f73327e7c83c6cc40486faeeb76e323c1
Author: Gabriel Krisman Bertazi <krisman@collabora.co.uk>
Date:   Mon Jan 16 12:23:42 2017 -0200

    mmc: sdhci: Ignore unexpected CARD_INT interrupts
    
    [ Upstream commit 161e6d44a5e2d3f85365cb717d60e363171b39e6 ]
    
    One of our kernelCI boxes hanged at boot because a faulty eSDHC device
    was triggering spurious CARD_INT interrupts for SD cards, causing CMD52
    reads, which are not allowed for SD devices.  This adds a sanity check
    to the interruption path, preventing that illegal command from getting
    sent if the CARD_INT interruption should be disabled.
    
    This quirk allows that particular machine to resume boot despite the
    faulty hardware, instead of getting hung dealing with thousands of
    mishandled interrupts.
    
    Suggested-by: Adrian Hunter <adrian.hunter@intel.com>
    Signed-off-by: Gabriel Krisman Bertazi <krisman@collabora.co.uk>
    Acked-by: Adrian Hunter <adrian.hunter@intel.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 1f7c5e4f3659464f218067b7c2a637905fac384e
Author: Ilia Mirkin <imirkin@alum.mit.edu>
Date:   Thu Jan 19 22:56:30 2017 -0500

    drm/nouveau/nv1a,nv1f/disp: fix memory clock rate retrieval
    
    [ Upstream commit 24bf7ae359b8cca165bb30742d2b1c03a1eb23af ]
    
    Based on the xf86-video-nv code, NFORCE (NV1A) and NFORCE2 (NV1F) have a
    different way of retrieving clocks. See the
    nv_hw.c:nForceUpdateArbitrationSettings function in the original code
    for how these clocks were accessed.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=54587
    Cc: stable@vger.kernel.org
    Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit c59ef58eddf01dc661973a6c00030f006ce928cd
Author: Dave Martin <Dave.Martin@arm.com>
Date:   Wed Jan 18 17:11:56 2017 +0100

    ARM: 8643/3: arm/ptrace: Preserve previous registers for short regset write
    
    [ Upstream commit 228dbbfb5d77f8e047b2a1d78da14b7158433027 ]
    
    Ensure that if userspace supplies insufficient data to
    PTRACE_SETREGSET to fill all the registers, the thread's old
    registers are preserved.
    
    Cc: <stable@vger.kernel.org> # 3.0.x-
    Fixes: 5be6f62b0059 ("ARM: 6883/1: ptrace: Migrate to regsets framework")
    Signed-off-by: Dave Martin <Dave.Martin@arm.com>
    Acked-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit c616b2480f8aac4400423ee13ebd267b923bc15e
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Thu Jan 26 23:15:08 2017 +0100

    perf/core: Fix PERF_RECORD_MMAP2 prot/flags for anonymous memory
    
    [ Upstream commit 0b3589be9b98994ce3d5aeca52445d1f5627c4ba ]
    
    Andres reported that MMAP2 records for anonymous memory always have
    their protection field 0.
    
    Turns out, someone daft put the prot/flags generation code in the file
    branch, leaving them unset for anonymous memory.
    
    Reported-by: Andres Freund <andres@anarazel.de>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Don Zickus <dzickus@redhat.com
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@gmail.com>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: acme@kernel.org
    Cc: anton@ozlabs.org
    Cc: namhyung@kernel.org
    Cc: stable@vger.kernel.org # v3.16+
    Fixes: f972eb63b100 ("perf: Pass protection and flags bits through mmap2 interface")
    Link: http://lkml.kernel.org/r/20170126221508.GF6536@twins.programming.kicks-ass.net
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 1f15ed681385059573184c5b6763df0527aa4930
Author: Oliver Hartkopp <socketcan@hartkopp.net>
Date:   Wed Jan 18 21:30:51 2017 +0100

    can: bcm: fix hrtimer/tasklet termination in bcm op removal
    
    [ Upstream commit a06393ed03167771246c4c43192d9c264bc48412 ]
    
    When removing a bcm tx operation either a hrtimer or a tasklet might run.
    As the hrtimer triggers its associated tasklet and vice versa we need to
    take care to mutually terminate both handlers.
    
    Reported-by: Michael Josenhans <michael.josenhans@web.de>
    Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
    Tested-by: Michael Josenhans <michael.josenhans@web.de>
    Cc: linux-stable <stable@vger.kernel.org>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 9dd4dbe27f68a85d4bd921cf21d7140a33a349b9
Author: Helge Deller <deller@gmx.de>
Date:   Sat Jan 28 11:52:02 2017 +0100

    parisc: Don't use BITS_PER_LONG in userspace-exported swab.h header
    
    [ Upstream commit 2ad5d52d42810bed95100a3d912679d8864421ec ]
    
    In swab.h the "#if BITS_PER_LONG > 32" breaks compiling userspace programs if
    BITS_PER_LONG is #defined by userspace with the sizeof() compiler builtin.
    
    Solve this problem by using __BITS_PER_LONG instead.  Since we now
    #include asm/bitsperlong.h avoid further potential userspace pollution
    by moving the #define of SHIFT_PER_LONG to bitops.h which is not
    exported to userspace.
    
    This patch unbreaks compiling qemu on hppa/parisc.
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit a2cfb460dcba9831b1e27ca0e4de2eab19d7f154
Author: Douglas Miller <dougmill@linux.vnet.ibm.com>
Date:   Sat Jan 28 06:42:20 2017 -0600

    percpu-refcount: fix reference leak during percpu-atomic transition
    
    [ Upstream commit 966d2b04e070bc040319aaebfec09e0144dc3341 ]
    
    percpu_ref_tryget() and percpu_ref_tryget_live() should return
    "true" IFF they acquire a reference. But the return value from
    atomic_long_inc_not_zero() is a long and may have high bits set,
    e.g. PERCPU_COUNT_BIAS, and the return value of the tryget routines
    is bool so the reference may actually be acquired but the routines
    return "false" which results in a reference leak since the caller
    assumes it does not need to do a corresponding percpu_ref_put().
    
    This was seen when performing CPU hotplug during I/O, as hangs in
    blk_mq_freeze_queue_wait where percpu_ref_kill (blk_mq_freeze_queue_start)
    raced with percpu_ref_tryget (blk_mq_timeout_work).
    Sample stack trace:
    
    __switch_to+0x2c0/0x450
    __schedule+0x2f8/0x970
    schedule+0x48/0xc0
    blk_mq_freeze_queue_wait+0x94/0x120
    blk_mq_queue_reinit_work+0xb8/0x180
    blk_mq_queue_reinit_prepare+0x84/0xa0
    cpuhp_invoke_callback+0x17c/0x600
    cpuhp_up_callbacks+0x58/0x150
    _cpu_up+0xf0/0x1c0
    do_cpu_up+0x120/0x150
    cpu_subsys_online+0x64/0xe0
    device_online+0xb4/0x120
    online_store+0xb4/0xc0
    dev_attr_store+0x68/0xa0
    sysfs_kf_write+0x80/0xb0
    kernfs_fop_write+0x17c/0x250
    __vfs_write+0x6c/0x1e0
    vfs_write+0xd0/0x270
    SyS_write+0x6c/0x110
    system_call+0x38/0xe0
    
    Examination of the queue showed a single reference (no PERCPU_COUNT_BIAS,
    and __PERCPU_REF_DEAD, __PERCPU_REF_ATOMIC set) and no requests.
    However, conditions at the time of the race are count of PERCPU_COUNT_BIAS + 0
    and __PERCPU_REF_DEAD and __PERCPU_REF_ATOMIC set.
    
    The fix is to make the tryget routines use an actual boolean internally instead
    of the atomic long result truncated to a int.
    
    Fixes: e625305b3907 percpu-refcount: make percpu_ref based on longs instead of ints
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=190751
    Signed-off-by: Douglas Miller <dougmill@linux.vnet.ibm.com>
    Reviewed-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Fixes: e625305b3907 ("percpu-refcount: make percpu_ref based on longs instead of ints")
    Cc: stable@vger.kernel.org # v3.18+
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 36446d0a124c7b751412122c05fcb1165771e8fa
Author: Vineet Gupta <vgupta@synopsys.com>
Date:   Fri Jan 27 10:45:27 2017 -0800

    ARC: [arcompact] handle unaligned access delay slot corner case
    
    [ Upstream commit 9aed02feae57bf7a40cb04ea0e3017cb7a998db4 ]
    
    After emulating an unaligned access in delay slot of a branch, we
    pretend as the delay slot never happened - so return back to actual
    branch target (or next PC if branch was not taken).
    
    Curently we did this by handling STATUS32.DE, we also need to clear the
    BTA.T bit, which is disregarded when returning from original misaligned
    exception, but could cause weirdness if it took the interrupt return
    path (in case interrupt was acive too)
    
    One ARC700 customer ran into this when enabling unaligned access fixup
    for kernel mode accesses as well
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit e30295a2f487fb7a347ed6d3d1937118b7a4b923
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Fri Jan 27 13:32:14 2017 +0100

    ISDN: eicon: silence misleading array-bounds warning
    
    [ Upstream commit 950eabbd6ddedc1b08350b9169a6a51b130ebaaf ]
    
    With some gcc versions, we get a warning about the eicon driver,
    and that currently shows up as the only remaining warning in one
    of the build bots:
    
    In file included from ../drivers/isdn/hardware/eicon/message.c:30:0:
    eicon/message.c: In function 'mixer_notify_update':
    eicon/platform.h:333:18: warning: array subscript is above array bounds [-Warray-bounds]
    
    The code is easily changed to open-code the unusual PUT_WORD() line
    causing this to avoid the warning.
    
    Cc: stable@vger.kernel.org
    Link: http://arm-soc.lixom.net/buildlogs/stable-rc/v4.4.45/
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 2e1fb34bd9f80183c36a7e17690c73145b3e233d
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Thu Jan 26 15:14:52 2017 -0500

    nfs: Fix "Don't increment lock sequence ID after NFS4ERR_MOVED"
    
    [ Upstream commit 406dab8450ec76eca88a1af2fc15d18a2b36ca49 ]
    
    Lock sequence IDs are bumped in decode_lock by calling
    nfs_increment_seqid(). nfs_increment_sequid() does not use the
    seqid_mutating_err() function fixed in commit 059aa7348241 ("Don't
    increment lock sequence ID after NFS4ERR_MOVED").
    
    Fixes: 059aa7348241 ("Don't increment lock sequence ID after ...")
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Tested-by: Xuan Qi <xuan.qi@oracle.com>
    Cc: stable@vger.kernel.org # v3.7+
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit fe7c60571c2c2bede42bccc84f1b1c3868a12825
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Jan 25 18:20:55 2017 -0800

    sysctl: fix proc_doulongvec_ms_jiffies_minmax()
    
    [ Upstream commit ff9f8a7cf935468a94d9927c68b00daae701667e ]
    
    We perform the conversion between kernel jiffies and ms only when
    exporting kernel value to user space.
    
    We need to do the opposite operation when value is written by user.
    
    Only matters when HZ != 1000
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit e749e709caba83d1051072a92a79c07774978ef8
Author: Vincent Pelletier <plr.vincent@gmail.com>
Date:   Wed Jan 18 00:57:44 2017 +0000

    usb: gadget: f_fs: Assorted buffer overflow checks.
    
    [ Upstream commit 83e526f2a2fa4b2e82b6bd3ddbb26b70acfa8947 ]
    
    OS descriptor head, when flagged as provided, is accessed without
    checking if it fits in provided buffer. Verify length before access.
    Also, there are other places where buffer length it checked
    after accessing offsets which are potentially past the end. Check
    buffer length before as well to fail cleanly.
    
    Signed-off-by: Vincent Pelletier <plr.vincent@gmail.com>
    Acked-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 2f048d6ae6b2ccde5ecd84d07a3a37f83435dc10
Author: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
Date:   Fri Jan 20 16:28:42 2017 +0200

    drm/i915: Don't leak edid in intel_crt_detect_ddc()
    
    [ Upstream commit c34f078675f505c4437919bb1897b1351f16a050 ]
    
    In the path where intel_crt_detect_ddc() detects a CRT, if would return
    true without freeing the edid.
    
    Fixes: a2bd1f541f19 ("drm/i915: check whether we actually received an edid in detect_ddc")
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Daniel Vetter <daniel.vetter@intel.com>
    Cc: Jani Nikula <jani.nikula@linux.intel.com>
    Cc: intel-gfx@lists.freedesktop.org
    Cc: <stable@vger.kernel.org> # v3.6+
    Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Reviewed-by: Jani Nikula <jani.nikula@intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/1484922525-6131-1-git-send-email-ander.conselvan.de.oliveira@intel.com
    (cherry picked from commit c96b63a6a7ac4bd670ec2e663793a9a31418b790)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit b8547ab38b17da457e7fc47f24d9eae90d7bafce
Author: Lukáš Lalinský <lukas@oxygene.sk>
Date:   Fri Jan 20 19:46:34 2017 +0100

    USB: Add quirk for WORLDE easykey.25 MIDI keyboard
    
    [ Upstream commit d9b2997e4a0a874e452df7cdd7de5a54502bd0aa ]
    
    Add a quirk for WORLDE easykey.25 MIDI keyboard (idVendor=0218,
    idProduct=0401). The device reports that it has config string
    descriptor at index 3, but when the system selects the configuration
    and tries to get the description, it returns a -EPROTO error,
    the communication restarts and this keeps repeating over and over again.
    Not requesting the string descriptor makes the device work correctly.
    
    Relevant info from Wireshark:
    
    [...]
    
    CONFIGURATION DESCRIPTOR
        bLength: 9
        bDescriptorType: 0x02 (CONFIGURATION)
        wTotalLength: 101
        bNumInterfaces: 2
        bConfigurationValue: 1
        iConfiguration: 3
        Configuration bmAttributes: 0xc0  SELF-POWERED  NO REMOTE-WAKEUP
            1... .... = Must be 1: Must be 1 for USB 1.1 and higher
            .1.. .... = Self-Powered: This device is SELF-POWERED
            ..0. .... = Remote Wakeup: This device does NOT support remote wakeup
        bMaxPower: 50  (100mA)
    
    [...]
    
         45 0.369104       host                  2.38.0                USB      64     GET DESCRIPTOR Request STRING
    
    [...]
    
    URB setup
        bmRequestType: 0x80
            1... .... = Direction: Device-to-host
            .00. .... = Type: Standard (0x00)
            ...0 0000 = Recipient: Device (0x00)
        bRequest: GET DESCRIPTOR (6)
        Descriptor Index: 0x03
        bDescriptorType: 0x03
        Language Id: English (United States) (0x0409)
        wLength: 255
    
         46 0.369255       2.38.0                host                  USB      64     GET DESCRIPTOR Response STRING[Malformed Packet]
    
    [...]
    
    Frame 46: 64 bytes on wire (512 bits), 64 bytes captured (512 bits) on interface 0
    USB URB
        [Source: 2.38.0]
        [Destination: host]
        URB id: 0xffff88021f62d480
        URB type: URB_COMPLETE ('C')
        URB transfer type: URB_CONTROL (0x02)
        Endpoint: 0x80, Direction: IN
        Device: 38
        URB bus id: 2
        Device setup request: not relevant ('-')
        Data: present (0)
        URB sec: 1484896277
        URB usec: 455031
        URB status: Protocol error (-EPROTO) (-71)
        URB length [bytes]: 0
        Data length [bytes]: 0
        [Request in: 45]
        [Time from request: 0.000151000 seconds]
        Unused Setup Header
        Interval: 0
        Start frame: 0
        Copy of Transfer Flags: 0x00000200
        Number of ISO descriptors: 0
    [Malformed Packet: USB]
        [Expert Info (Error/Malformed): Malformed Packet (Exception occurred)]
            [Malformed Packet (Exception occurred)]
            [Severity level: Error]
            [Group: Malformed]
    
    Signed-off-by: Lukáš Lalinský <lukas@oxygene.sk>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit a94f76f379dcc375f00d32194954f6c4dd1644c9
Author: Kees Cook <keescook@chromium.org>
Date:   Tue Jan 24 15:18:24 2017 -0800

    fbdev: color map copying bounds checking
    
    [ Upstream commit 2dc705a9930b4806250fbf5a76e55266e59389f2 ]
    
    Copying color maps to userspace doesn't check the value of to->start,
    which will cause kernel heap buffer OOB read due to signedness wraps.
    
    CVE-2016-8405
    
    Link: http://lkml.kernel.org/r/20170105224249.GA50925@beast
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Reported-by: Peter Pi (@heisecode) of Trend Micro
    Cc: Min Chong <mchong@google.com>
    Cc: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
    Cc: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 024795f95e6b79383786f42229332e0c704b67b9
Author: Vlastimil Babka <vbabka@suse.cz>
Date:   Tue Jan 24 15:18:18 2017 -0800

    mm/mempolicy.c: do not put mempolicy before using its nodemask
    
    [ Upstream commit d51e9894d27492783fc6d1b489070b4ba66ce969 ]
    
    Since commit be97a41b291e ("mm/mempolicy.c: merge alloc_hugepage_vma to
    alloc_pages_vma") alloc_pages_vma() can potentially free a mempolicy by
    mpol_cond_put() before accessing the embedded nodemask by
    __alloc_pages_nodemask().  The commit log says it's so "we can use a
    single exit path within the function" but that's clearly wrong.  We can
    still do that when doing mpol_cond_put() after the allocation attempt.
    
    Make sure the mempolicy is not freed prematurely, otherwise
    __alloc_pages_nodemask() can end up using a bogus nodemask, which could
    lead e.g.  to premature OOM.
    
    Fixes: be97a41b291e ("mm/mempolicy.c: merge alloc_hugepage_vma to alloc_pages_vma")
    Link: http://lkml.kernel.org/r/20170118141124.8345-1-vbabka@suse.cz
    Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
    Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Acked-by: David Rientjes <rientjes@google.com>
    Cc: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: <stable@vger.kernel.org>    [4.0+]
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit eee6e0dbec05719fccb6f37f26e7341aa56a7860
Author: Kinglong Mee <kinglongmee@gmail.com>
Date:   Fri Jan 20 16:48:39 2017 +0800

    SUNRPC: cleanup ida information when removing sunrpc module
    
    [ Upstream commit c929ea0b910355e1876c64431f3d5802f95b3d75 ]
    
    After removing sunrpc module, I get many kmemleak information as,
    unreferenced object 0xffff88003316b1e0 (size 544):
      comm "gssproxy", pid 2148, jiffies 4294794465 (age 4200.081s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<ffffffffb0cfb58a>] kmemleak_alloc+0x4a/0xa0
        [<ffffffffb03507fe>] kmem_cache_alloc+0x15e/0x1f0
        [<ffffffffb0639baa>] ida_pre_get+0xaa/0x150
        [<ffffffffb0639cfd>] ida_simple_get+0xad/0x180
        [<ffffffffc06054fb>] nlmsvc_lookup_host+0x4ab/0x7f0 [lockd]
        [<ffffffffc0605e1d>] lockd+0x4d/0x270 [lockd]
        [<ffffffffc06061e5>] param_set_timeout+0x55/0x100 [lockd]
        [<ffffffffc06cba24>] svc_defer+0x114/0x3f0 [sunrpc]
        [<ffffffffc06cbbe7>] svc_defer+0x2d7/0x3f0 [sunrpc]
        [<ffffffffc06c71da>] rpc_show_info+0x8a/0x110 [sunrpc]
        [<ffffffffb044a33f>] proc_reg_write+0x7f/0xc0
        [<ffffffffb038e41f>] __vfs_write+0xdf/0x3c0
        [<ffffffffb0390f1f>] vfs_write+0xef/0x240
        [<ffffffffb0392fbd>] SyS_write+0xad/0x130
        [<ffffffffb0d06c37>] entry_SYSCALL_64_fastpath+0x1a/0xa9
        [<ffffffffffffffff>] 0xffffffffffffffff
    
    I found, the ida information (dynamic memory) isn't cleanup.
    
    Signed-off-by: Kinglong Mee <kinglongmee@gmail.com>
    Fixes: 2f048db4680a ("SUNRPC: Add an identifier for struct rpc_clnt")
    Cc: stable@vger.kernel.org # v3.12+
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 07fc9a9e45ecc47844f482beb477ed6db30c47cc
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Sun Jan 22 14:04:29 2017 -0500

    nfs: Don't increment lock sequence ID after NFS4ERR_MOVED
    
    [ Upstream commit 059aa734824165507c65fd30a55ff000afd14983 ]
    
    Xuan Qi reports that the Linux NFSv4 client failed to lock a file
    that was migrated. The steps he observed on the wire:
    
    1. The client sent a LOCK request to the source server
    2. The source server replied NFS4ERR_MOVED
    3. The client switched to the destination server
    4. The client sent the same LOCK request to the destination
       server with a bumped lock sequence ID
    5. The destination server rejected the LOCK request with
       NFS4ERR_BAD_SEQID
    
    RFC 3530 section 8.1.5 provides a list of NFS errors which do not
    bump a lock sequence ID.
    
    However, RFC 3530 is now obsoleted by RFC 7530. In RFC 7530 section
    9.1.7, this list has been updated by the addition of NFS4ERR_MOVED.
    
    Reported-by: Xuan Qi <xuan.qi@oracle.com>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Cc: stable@vger.kernel.org # v3.7+
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 7b745775596d4109b7663066e19a1e79896f3344
Author: Bjørn Mork <bjorn@mork.no>
Date:   Tue Jan 24 10:31:18 2017 +0100

    USB: serial: option: add device ID for HP lt2523 (Novatel E371)
    
    [ Upstream commit 5d03a2fd2292e71936c4235885c35ccc3c94695b ]
    
    Yet another laptop vendor rebranded Novatel E371.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit bbc56ad06315b1fda9c87aa484cbc96e979cfcdd
Author: Gavin Shan <gwshan@linux.vnet.ibm.com>
Date:   Thu Jan 19 10:10:16 2017 +1100

    powerpc/eeh: Fix wrong flag passed to eeh_unfreeze_pe()
    
    [ Upstream commit f05fea5b3574a5926c53865eea27139bb40b2f2b ]
    
    In __eeh_clear_pe_frozen_state(), we should pass the flag's value
    instead of its address to eeh_unfreeze_pe(). The isolated flag is
    cleared if no error returned from __eeh_clear_pe_frozen_state(). We
    never observed the error from the function. So the isolated flag should
    have been always cleared, no real issue is caused because of the misused
    @flag.
    
    This fixes the code by passing the value of @flag to eeh_unfreeze_pe().
    
    Fixes: 5cfb20b96f6 ("powerpc/eeh: Emulate EEH recovery for VFIO devices")
    Cc: stable@vger.kernel.org # v3.18+
    Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 078d15b1f19330048c89fd258e3870b73148776c
Author: Darren Stevens <darren@stevens-zone.net>
Date:   Mon Jan 23 19:42:54 2017 +0000

    powerpc: Add missing error check to prom_find_boot_cpu()
    
    [ Upstream commit af2b7fa17eb92e52b65f96604448ff7a2a89ee99 ]
    
    prom_init.c calls 'instance-to-package' twice, but the return
    is not checked during prom_find_boot_cpu(). The result is then
    passed to prom_getprop(), which could be PROM_ERROR. Add a return check
    to prevent this.
    
    This was found on a pasemi system, where CFE doesn't have a working
    'instance-to package' prom call.
    
    Before Commit 5c0484e25ec0 ('powerpc: Endian safe trampoline') the area
    around addr 0 was mostly 0's and this doesn't cause a problem. Once the
    macro 'FIXUP_ENDIAN' has been added to head_64.S, the low memory area
    now has non-zero values, which cause the prom_getprop() call
    to hang.
    
    mpe: Also confirmed that under SLOF if 'instance-to-package' did fail
    with PROM_ERROR we would crash in SLOF. So the bug is not specific to
    CFE, it's just that other open firmwares don't trigger it because they
    have a working 'instance-to-package'.
    
    Fixes: 5c0484e25ec0 ("powerpc: Endian safe trampoline")
    Cc: stable@vger.kernel.org # v3.13+
    Signed-off-by: Darren Stevens <darren@stevens-zone.net>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 574c2c0bdd8a3cdd91cc2bef476f53273c522c04
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date:   Tue Jan 17 13:46:29 2017 +0000

    crypto: arm64/aes-blk - honour iv_out requirement in CBC and CTR modes
    
    [ Upstream commit 11e3b725cfc282efe9d4a354153e99d86a16af08 ]
    
    Update the ARMv8 Crypto Extensions and the plain NEON AES implementations
    in CBC and CTR modes to return the next IV back to the skcipher API client.
    This is necessary for chaining to work correctly.
    
    Note that for CTR, this is only done if the request is a round multiple of
    the block size, since otherwise, chaining is impossible anyway.
    
    Cc: <stable@vger.kernel.org> # v3.16+
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit ec956aabc23820d91e49c4131f69dec50e8e205f
Author: Salvatore Benedetto <salvatore.benedetto@intel.com>
Date:   Fri Jan 13 11:54:08 2017 +0000

    crypto: api - Clear CRYPTO_ALG_DEAD bit before registering an alg
    
    [ Upstream commit d6040764adcb5cb6de1489422411d701c158bb69 ]
    
    Make sure CRYPTO_ALG_DEAD bit is cleared before proceeding with
    the algorithm registration. This fixes qat-dh registration when
    driver is restarted
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Salvatore Benedetto <salvatore.benedetto@intel.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 3e9067b2ba1e4bd2d5d81a5e9ea12f024424916b
Author: Fabien Parent <fparent@baylibre.com>
Date:   Tue Jan 17 13:57:42 2017 +0100

    ARM: dts: da850-evm: fix read access to SPI flash
    
    [ Upstream commit 43849785e1079f6606a31cb7fda92d1200849728 ]
    
    Read access to the SPI flash are broken on da850-evm, i.e. the data
    read is not what is actually programmed on the flash.
    According to the datasheet for the M25P64 part present on the da850-evm,
    if the SPI frequency is higher than 20MHz then the READ command is not
    usable anymore and only the FAST_READ command can be used to read data.
    
    This commit specifies in the DTS that we should use FAST_READ command
    instead of the READ command.
    
    Cc: stable@vger.kernel.org
    Tested-by: Kevin Hilman <khilman@baylibre.com>
    Signed-off-by: Fabien Parent <fparent@baylibre.com>
    [nsekhar@ti.com: subject line adjustment]
    Signed-off-by: Sekhar Nori <nsekhar@ti.com>
    
    Signed-off-by: Olof Johansson <olof@lixom.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 4730dec8d3f8c30d9221cf0fa07f2a4f35d77b5a
Author: Aleksander Morgado <aleksander@aleksander.es>
Date:   Wed Jan 18 21:31:31 2017 +0100

    USB: serial: qcserial: add Dell DW5570 QDL
    
    [ Upstream commit 24d615a694d649aa2e167c3f97f62bdad07e3f84 ]
    
    The Dell DW5570 is a re-branded Sierra Wireless MC8805 which will by
    default boot with vid 0x413c and pid 0x81a3. When triggered QDL download
    mode, the device switches to pid 0x81a6 and provides the standard TTY
    used for firmware upgrade.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Aleksander Morgado <aleksander@aleksander.es>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 6b6b456e82e052212ae7c9ef06cb78cd36b05362
Author: Dave Martin <Dave.Martin@arm.com>
Date:   Wed Jan 18 16:25:24 2017 +0000

    arm64/ptrace: Reject attempts to set incomplete hardware breakpoint fields
    
    [ Upstream commit ad9e202aa1ce571b1d7fed969d06f66067f8a086 ]
    
    We cannot preserve partial fields for hardware breakpoints, because
    the values written by userspace to the hardware breakpoint
    registers can't subsequently be recovered intact from the hardware.
    
    So, just reject attempts to write incomplete fields with -EINVAL.
    
    Cc: <stable@vger.kernel.org> # 3.7.x-
    Fixes: 478fcb2cdb23 ("arm64: Debugging support")
    Signed-off-by: Dave Martin <Dave.Martin@arm.com>
    Acked-by: Will Deacon <Will.Deacon@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 113634c09aa0f3196d8882116d9b2580954644bd
Author: Dave Martin <Dave.Martin@arm.com>
Date:   Wed Jan 18 16:25:23 2017 +0000

    arm64/ptrace: Avoid uninitialised struct padding in fpr_set()
    
    [ Upstream commit aeb1f39d814b2e21e5e5706a48834bfd553d0059 ]
    
    This patch adds an explicit __reserved[] field to user_fpsimd_state
    to replace what was previously unnamed padding.
    
    This ensures that data in this region are propagated across
    assignment rather than being left possibly uninitialised at the
    destination.
    
    Cc: <stable@vger.kernel.org> # 3.7.x-
    Fixes: 60ffc30d5652 ("arm64: Exception handling")
    Signed-off-by: Dave Martin <Dave.Martin@arm.com>
    Acked-by: Will Deacon <Will.Deacon@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 521aff7c7bbe9af54727fdb7d88b3ef4e1ea9465
Author: Dave Martin <Dave.Martin@arm.com>
Date:   Wed Jan 18 16:25:20 2017 +0000

    arm64/ptrace: Preserve previous registers for short regset write
    
    [ Upstream commit 9a17b876b573441bfb3387ad55d98bf7184daf9d ]
    
    Ensure that if userspace supplies insufficient data to
    PTRACE_SETREGSET to fill all the registers, the thread's old
    registers are preserved.
    
    Cc: <stable@vger.kernel.org> # 3.7.x-
    Fixes: 478fcb2cdb23 ("arm64: Debugging support")
    Signed-off-by: Dave Martin <Dave.Martin@arm.com>
    Acked-by: Will Deacon <Will.Deacon@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit af9c6633999c6ac2e55c95866abe170be2d33eee
Author: Jeff Layton <jlayton@redhat.com>
Date:   Thu Jan 12 14:42:41 2017 -0500

    ceph: fix bad endianness handling in parse_reply_info_extra
    
    [ Upstream commit 6df8c9d80a27cb587f61b4f06b57e248d8bc3f86 ]
    
    sparse says:
    
        fs/ceph/mds_client.c:291:23: warning: restricted __le32 degrades to integer
        fs/ceph/mds_client.c:293:28: warning: restricted __le32 degrades to integer
        fs/ceph/mds_client.c:294:28: warning: restricted __le32 degrades to integer
        fs/ceph/mds_client.c:296:28: warning: restricted __le32 degrades to integer
    
    The op value is __le32, so we need to convert it before comparing it.
    
    Cc: stable@vger.kernel.org # needs backporting for < 3.14
    Signed-off-by: Jeff Layton <jlayton@redhat.com>
    Reviewed-by: Sage Weil <sage@redhat.com>
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 23fdc77db67b80af02335d786a7bb7aaa4e1f74c
Author: Yegor Yefremov <yegorslists@googlemail.com>
Date:   Wed Jan 18 11:35:57 2017 +0100

    can: ti_hecc: add missing prepare and unprepare of the clock
    
    [ Upstream commit befa60113ce7ea270cb51eada28443ca2756f480 ]
    
    In order to make the driver work with the common clock framework, this
    patch converts the clk_enable()/clk_disable() to
    clk_prepare_enable()/clk_disable_unprepare().
    
    Also add error checking for clk_prepare_enable().
    
    Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
    Cc: linux-stable <stable@vger.kernel.org>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 656e7d397516d7a961118367fe7f97004d2a2269
Author: Einar Jón <tolvupostur@gmail.com>
Date:   Fri Aug 12 13:50:41 2016 +0200

    can: c_can_pci: fix null-pointer-deref in c_can_start() - set device pointer
    
    [ Upstream commit c97c52be78b8463ac5407f1cf1f22f8f6cf93a37 ]
    
    The priv->device pointer for c_can_pci is never set, but it is used
    without a NULL check in c_can_start(). Setting it in c_can_pci_probe()
    like c_can_plat_probe() prevents c_can_pci.ko from crashing, with and
    without CONFIG_PM.
    
    This might also cause the pm_runtime_*() functions in c_can.c to
    actually be executed for c_can_pci devices - they are the only other
    place where priv->device is used, but they all contain a null check.
    
    Signed-off-by: Einar Jón <tolvupostur@gmail.com>
    Cc: linux-stable <stable@vger.kernel.org>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit de99814cbee7f39ced9900d377b6f11fa549fee6
Author: Quinn Tran <quinn.tran@cavium.com>
Date:   Fri Dec 23 18:06:10 2016 -0800

    qla2xxx: Fix crash due to null pointer access
    
    [ Upstream commit fc1ffd6cb38a1c1af625b9833c41928039e733f5 ]
    
    During code inspection, while investigating following stack trace
    seen on one of the test setup, we found out there was possibility
    of memory leak becuase driver was not unwinding the stack properly.
    
    This issue has not been reproduced in a test environment or on a
    customer setup.
    
    Here's stack trace that was seen.
    
    [1469877.797315] Call Trace:
    [1469877.799940]  [<ffffffffa03ab6e9>] qla2x00_mem_alloc+0xb09/0x10c0 [qla2xxx]
    [1469877.806980]  [<ffffffffa03ac50a>] qla2x00_probe_one+0x86a/0x1b50 [qla2xxx]
    [1469877.814013]  [<ffffffff813b6d01>] ? __pm_runtime_resume+0x51/0xa0
    [1469877.820265]  [<ffffffff8157c1f5>] ? _raw_spin_lock_irqsave+0x25/0x90
    [1469877.826776]  [<ffffffff8157cd2d>] ? _raw_spin_unlock_irqrestore+0x6d/0x80
    [1469877.833720]  [<ffffffff810741d1>] ? preempt_count_sub+0xb1/0x100
    [1469877.839885]  [<ffffffff8157cd0c>] ? _raw_spin_unlock_irqrestore+0x4c/0x80
    [1469877.846830]  [<ffffffff81319b9c>] local_pci_probe+0x4c/0xb0
    [1469877.852562]  [<ffffffff810741d1>] ? preempt_count_sub+0xb1/0x100
    [1469877.858727]  [<ffffffff81319c89>] pci_call_probe+0x89/0xb0
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
    Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    [ bvanassche: Fixed spelling in patch description ]
    Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
    
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit a01621bb1fa0e06936adc5c198151f559e35f571
Author: Richard Weinberger <richard@nod.at>
Date:   Tue Jan 10 11:49:40 2017 +0100

    ubifs: Fix journal replay wrt. xattr nodes
    
    [ Upstream commit 1cb51a15b576ee325d527726afff40947218fd5e ]
    
    When replaying the journal it can happen that a journal entry points to
    a garbage collected node.
    This is the case when a power-cut occurred between a garbage collect run
    and a commit. In such a case nodes have to be read using the failable
    read functions to detect whether the found node matches what we expect.
    
    One corner case was forgotten, when the journal contains an entry to
    remove an inode all xattrs have to be removed too. UBIFS models xattr
    like directory entries, so the TNC code iterates over
    all xattrs of the inode and removes them too. This code re-uses the
    functions for walking directories and calls ubifs_tnc_next_ent().
    ubifs_tnc_next_ent() expects to be used only after the journal and
    aborts when a node does not match the expected result. This behavior can
    render an UBIFS volume unmountable after a power-cut when xattrs are
    used.
    
    Fix this issue by using failable read functions in ubifs_tnc_next_ent()
    too when replaying the journal.
    Cc: stable@vger.kernel.org
    Fixes: 1e51764a3c2ac05a ("UBIFS: add new flash file system")
    Reported-by: Rock Lee <rockdotlee@gmail.com>
    Reviewed-by: David Gstir <david@sigma-star.at>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit f24447e6c271c0e6a070ff8625d98eed9619c6a2
Author: J. Bruce Fields <bfields@redhat.com>
Date:   Mon Jan 9 17:15:18 2017 -0500

    svcrpc: don't leak contexts on PROC_DESTROY
    
    [ Upstream commit 78794d1890708cf94e3961261e52dcec2cc34722 ]
    
    Context expiry times are in units of seconds since boot, not unix time.
    
    The use of get_seconds() here therefore sets the expiry time decades in
    the future.  This prevents timely freeing of contexts destroyed by
    client RPC_GSS_PROC_DESTROY requests.  We'd still free them eventually
    (when the module is unloaded or the container shut down), but a lot of
    contexts could pile up before then.
    
    Cc: stable@vger.kernel.org
    Fixes: c5b29f885afe "sunrpc: use seconds since boot in expiry cache"
    Reported-by: Andy Adamson <andros@netapp.com>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 73dc865524899677ce40a630efd6213a19f0a78c
Author: David Matlack <dmatlack@google.com>
Date:   Fri Dec 16 14:30:36 2016 -0800

    KVM: x86: flush pending lapic jump label updates on module unload
    
    [ Upstream commit cef84c302fe051744b983a92764d3fcca933415d ]
    
    KVM's lapic emulation uses static_key_deferred (apic_{hw,sw}_disabled).
    These are implemented with delayed_work structs which can still be
    pending when the KVM module is unloaded. We've seen this cause kernel
    panics when the kvm_intel module is quickly reloaded.
    
    Use the new static_key_deferred_flush() API to flush pending updates on
    module unload.
    
    Signed-off-by: David Matlack <dmatlack@google.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 577c9c60fccc57fce8502f9375c2f623d292c6ad
Author: David Matlack <dmatlack@google.com>
Date:   Fri Dec 16 14:30:35 2016 -0800

    jump_labels: API for flushing deferred jump label updates
    
    [ Upstream commit b6416e61012429e0277bd15a229222fd17afc1c1 ]
    
    Modules that use static_key_deferred need a way to synchronize with
    any delayed work that is still pending when the module is unloaded.
    Introduce static_key_deferred_flush() which flushes any pending
    jump label updates.
    
    Signed-off-by: David Matlack <dmatlack@google.com>
    Cc: stable@vger.kernel.org
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit d51217abc7eaa11b9770d84b852b01085144a3f8
Author: Stefan Wahren <stefan.wahren@i2se.com>
Date:   Thu Jan 5 19:24:04 2017 +0000

    mmc: mxs-mmc: Fix additional cycles after transmission stop
    
    [ Upstream commit 01167c7b9cbf099c69fe411a228e4e9c7104e123 ]
    
    According to the code the intention is to append 8 SCK cycles
    instead of 4 at end of a MMC_STOP_TRANSMISSION command. But this
    will never happened because it's an AC command not an ADTC command.
    So fix this by moving the statement into the right function.
    
    Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
    Fixes: e4243f13d10e (mmc: mxs-mmc: add mmc host driver for i.MX23/28)
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit d4fa088dce1a7274204049eb9ce7d1f599b4547c
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Jan 9 15:56:14 2017 +0100

    drm: Fix broken VT switch with video=1366x768 option
    
    [ Upstream commit fdf35a6b22247746a7053fc764d04218a9306f82 ]
    
    I noticed that the VT switch doesn't work any longer with a Dell
    laptop with 1366x768 eDP when the machine is connected with a DP
    monitor.  It behaves as if VT were switched, but the graphics remain
    frozen.  Actually the keyboard works, so I could switch back to VT7
    again.
    
    I tried to track down the problem, and encountered a long story until
    we reach to this error:
    
    - The machine is booted with video=1366x768 option (the distro
      installer seems to add it as default).
    - Recently, drm_helper_probe_single_connector_modes() deals with
      cmdline modes, and it tries to create a new mode when no
      matching mode is found.
    - The drm_mode_create_from_cmdline_mode() creates a mode based on
      either CVT of GFT according to the given cmdline mode; in our case,
      it's 1366x768.
    - Since both CVT and GFT can't express the width 1366 due to
      alignment, the resultant mode becomes 1368x768, slightly larger than
      the given size.
    - Later on, the atomic commit is performed, and in
      drm_atomic_check_only(), the size of each plane is checked.
    - The size check of 1366x768 fails due to the above, and eventually
      the whole VT switch fails.
    
    Back in the history, we've had a manual fix-up of 1368x768 in various
    places via c09dedb7a50e ("drm/edid: Add a workaround for 1366x768 HD
    panel"), but they have been all in drm_edid.c at probing the modes
    from EDID.  For addressing the problem above, we need a similar hack
    to the mode newly created from cmdline, manually adjusting the width
    when the expected size is 1366 while we get 1368 instead.
    
    Fixes: eaf99c749d43 ("drm: Perform cmdline mode parsing during...")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Link: http://patchwork.freedesktop.org/patch/msgid/20170109145614.29454-1-tiwai@suse.de
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit c068da471357e1b4910cb40ab7ba51382aa0f82a
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Wed Jan 11 17:10:34 2017 +0200

    xhci: fix deadlock at host remove by running watchdog correctly
    
    [ Upstream commit d6169d04097fd9ddf811e63eae4e5cd71e6666e2 ]
    
    If a URB is killed while the host is removed we can end up in a situation
    where the hub thread takes the roothub device lock, and waits for
    the URB to be given back by xhci-hcd, blocking the host remove code.
    
    xhci-hcd tries to stop the endpoint and give back the urb, but can't
    as the host is removed from PCI bus at the same time, preventing the normal
    way of giving back urb.
    
    Instead we need to rely on the stop command timeout function to give back
    the urb. This xhci_stop_endpoint_command_watchdog() timeout function
    used a XHCI_STATE_DYING flag to indicate if the timeout function is already
    running, but later this flag has been taking into use in other places to
    mark that xhci is dying.
    
    Remove checks for XHCI_STATE_DYING in xhci_urb_dequeue. We are still
    checking that reading from pci state does not return 0xffffffff or that
    host is not halted before trying to stop the endpoint.
    
    This whole area of stopping endpoints, giving back URBs, and the wathdog
    timeout need rework, this fix focuses on solving a specific deadlock
    issue that we can then send to stable before any major rework.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit ee21da306c86736bfad4ac4e1d5bfb31f939c9d2
Author: Bjorn Helgaas <bhelgaas@google.com>
Date:   Wed Jan 11 09:11:53 2017 -0600

    PCI: Enumerate switches below PCI-to-PCIe bridges
    
    [ Upstream commit 51ebfc92b72b4f7dac1ab45683bf56741e454b8c ]
    
    A PCI-to-PCIe bridge (a "reverse bridge") has a PCI or PCI-X primary
    interface and a PCI Express secondary interface.  The PCIe interface is a
    Downstream Port that originates a Link.  See the "PCI Express to PCI/PCI-X
    Bridge Specification", rev 1.0, sections 1.2 and A.6.
    
    The bug report below involves a PCI-to-PCIe bridge and a PCIe switch below
    the bridge:
    
      00:1e.0 Intel 82801 PCI Bridge to [bus 01-0a]
      01:00.0 Pericom PI7C9X111SL PCIe-to-PCI Reversible Bridge to [bus 02-0a]
      02:00.0 Pericom Device 8608 [PCIe Upstream Port] to [bus 03-0a]
      03:01.0 Pericom Device 8608 [PCIe Downstream Port] to [bus 0a]
    
    01:00.0 is configured as a PCI-to-PCIe bridge (despite the name printed by
    lspci).  As we traverse a PCIe hierarchy, device connections alternate
    between PCIe Links and internal Switch logic.  Previously we did not
    recognize that 01:00.0 had a secondary link, so we thought the 02:00.0
    Upstream Port *did* have a secondary link.  In fact, it's the other way
    around: 01:00.0 has a secondary link, and 02:00.0 has internal Switch logic
    on its secondary side.
    
    When we thought 02:00.0 had a secondary link, the pci_scan_slot() ->
    only_one_child() path assumed 02:00.0 could have only one child, so 03:00.0
    was the only possible downstream device.  But 03:00.0 doesn't exist, so we
    didn't look for any other devices on bus 03.
    
    Booting with "pci=pcie_scan_all" is a workaround, but we don't want users
    to have to do that.
    
    Recognize that PCI-to-PCIe bridges originate links on their secondary
    interfaces.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=189361
    Fixes: d0751b98dfa3 ("PCI: Add dev->has_secondary_link to track downstream PCIe links")
    Tested-by: Blake Moore <blake.moore@men.de>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    CC: stable@vger.kernel.org      # v4.2+
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 61a16adba72382693b1aca33df6b68cf12d7f5ac
Author: Bjorn Helgaas <bhelgaas@google.com>
Date:   Wed Dec 28 14:55:16 2016 -0600

    x86/PCI: Ignore _CRS on Supermicro X8DTH-i/6/iF/6F
    
    [ Upstream commit 89e9f7bcd8744ea25fcf0ac671b8d72c10d7d790 ]
    
    Martin reported that the Supermicro X8DTH-i/6/iF/6F advertises incorrect
    host bridge windows via _CRS:
    
      pci_root PNP0A08:00: host bridge window [io  0xf000-0xffff]
      pci_root PNP0A08:01: host bridge window [io  0xf000-0xffff]
    
    Both bridges advertise the 0xf000-0xffff window, which cannot be correct.
    
    Work around this by ignoring _CRS on this system.  The downside is that we
    may not assign resources correctly to hot-added PCI devices (if they are
    possible on this system).
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=42606
    Reported-by: Martin Burnicki <martin.burnicki@meinberg.de>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    CC: stable@vger.kernel.org
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit a457dcb7b775f20eee8e5aa62566c0c7e022ef2c
Author: Johan Hovold <johan@kernel.org>
Date:   Fri Jan 6 19:15:18 2017 +0100

    USB: serial: ch341: fix control-message error handling
    
    [ Upstream commit 2d5a9c72d0c4ac73cf97f4b7814ed6c44b1e49ae ]
    
    A short control transfer would currently fail to be detected, something
    which could lead to stale buffer data being used as valid input.
    
    Check for short transfers, and make sure to log any transfer errors.
    
    Note that this also avoids leaking heap data to user space (TIOCMGET)
    and the remote device (break control).
    
    Fixes: 6ce76104781a ("USB: Driver for CH341 USB-serial adaptor")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 1fe63899fca8bd58fa148c660b18cb89c46a1c79
Author: Augusto Mecking Caringi <augustocaringi@gmail.com>
Date:   Tue Jan 10 10:45:00 2017 +0000

    vme: Fix wrong pointer utilization in ca91cx42_slave_get
    
    [ Upstream commit c8a6a09c1c617402cc9254b2bc8da359a0347d75 ]
    
    In ca91cx42_slave_get function, the value pointed by vme_base pointer is
    set through:
    
    *vme_base = ioread32(bridge->base + CA91CX42_VSI_BS[i]);
    
    So it must be dereferenced to be used in calculation of pci_base:
    
    *pci_base = (dma_addr_t)*vme_base + pci_offset;
    
    This bug was caught thanks to the following gcc warning:
    
    drivers/vme/bridges/vme_ca91cx42.c: In function ‘ca91cx42_slave_get’:
    drivers/vme/bridges/vme_ca91cx42.c:467:14: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
    *pci_base = (dma_addr_t)vme_base + pci_offset;
    
    Signed-off-by: Augusto Mecking Caringi <augustocaringi@gmail.com>
    Acked-By: Martyn Welch <martyn@welchs.me.uk>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit dad7228de846267b645ee13aad71290a502f369b
Author: Akinobu Mita <akinobu.mita@gmail.com>
Date:   Fri Jan 6 02:14:16 2017 +0900

    sysrq: attach sysrq handler correctly for 32-bit kernel
    
    [ Upstream commit 802c03881f29844af0252b6e22be5d2f65f93fd0 ]
    
    The sysrq input handler should be attached to the input device which has
    a left alt key.
    
    On 32-bit kernels, some input devices which has a left alt key cannot
    attach sysrq handler.  Because the keybit bitmap in struct input_device_id
    for sysrq is not correctly initialized.  KEY_LEFTALT is 56 which is
    greater than BITS_PER_LONG on 32-bit kernels.
    
    I found this problem when using a matrix keypad device which defines
    a KEY_LEFTALT (56) but doesn't have a KEY_O (24 == 56%32).
    
    Cc: Jiri Slaby <jslaby@suse.com>
    Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
    Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 311263103a9117e730cfbec707c02f34c31b50ee
Author: Mike Kravetz <mike.kravetz@oracle.com>
Date:   Tue Jan 10 16:58:27 2017 -0800

    mm/hugetlb.c: fix reservation race when freeing surplus pages
    
    [ Upstream commit e5bbc8a6c992901058bc09e2ce01d16c111ff047 ]
    
    return_unused_surplus_pages() decrements the global reservation count,
    and frees any unused surplus pages that were backing the reservation.
    
    Commit 7848a4bf51b3 ("mm/hugetlb.c: add cond_resched_lock() in
    return_unused_surplus_pages()") added a call to cond_resched_lock in the
    loop freeing the pages.
    
    As a result, the hugetlb_lock could be dropped, and someone else could
    use the pages that will be freed in subsequent iterations of the loop.
    This could result in inconsistent global hugetlb page state, application
    api failures (such as mmap) failures or application crashes.
    
    When dropping the lock in return_unused_surplus_pages, make sure that
    the global reservation count (resv_huge_pages) remains sufficiently
    large to prevent someone else from claiming pages about to be freed.
    
    Analyzed by Paul Cassella.
    
    Fixes: 7848a4bf51b3 ("mm/hugetlb.c: add cond_resched_lock() in return_unused_surplus_pages()")
    Link: http://lkml.kernel.org/r/1483991767-6879-1-git-send-email-mike.kravetz@oracle.com
    Signed-off-by: Mike Kravetz <mike.kravetz@oracle.com>
    Reported-by: Paul Cassella <cassella@cray.com>
    Suggested-by: Michal Hocko <mhocko@kernel.org>
    Cc: Masayoshi Mizuma <m.mizuma@jp.fujitsu.com>
    Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Cc: Aneesh Kumar <aneesh.kumar@linux.vnet.ibm.com>
    Cc: Hillf Danton <hillf.zj@alibaba-inc.com>
    Cc: <stable@vger.kernel.org>    [3.15+]
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 257e62ac4915fcb7b3fc169383595a731033a875
Author: Eric Ren <zren@suse.com>
Date:   Tue Jan 10 16:57:33 2017 -0800

    ocfs2: fix crash caused by stale lvb with fsdlm plugin
    
    [ Upstream commit e7ee2c089e94067d68475990bdeed211c8852917 ]
    
    The crash happens rather often when we reset some cluster nodes while
    nodes contend fiercely to do truncate and append.
    
    The crash backtrace is below:
    
       dlm: C21CBDA5E0774F4BA5A9D4F317717495: dlm_recover_grant 1 locks on 971 resources
       dlm: C21CBDA5E0774F4BA5A9D4F317717495: dlm_recover 9 generation 5 done: 4 ms
       ocfs2: Begin replay journal (node 318952601, slot 2) on device (253,18)
       ocfs2: End replay journal (node 318952601, slot 2) on device (253,18)
       ocfs2: Beginning quota recovery on device (253,18) for slot 2
       ocfs2: Finishing quota recovery on device (253,18) for slot 2
       (truncate,30154,1):ocfs2_truncate_file:470 ERROR: bug expression: le64_to_cpu(fe->i_size) != i_size_read(inode)
       (truncate,30154,1):ocfs2_truncate_file:470 ERROR: Inode 290321, inode i_size = 732 != di i_size = 937, i_flags = 0x1
       ------------[ cut here ]------------
       kernel BUG at /usr/src/linux/fs/ocfs2/file.c:470!
       invalid opcode: 0000 [#1] SMP
       Modules linked in: ocfs2_stack_user(OEN) ocfs2(OEN) ocfs2_nodemanager ocfs2_stackglue(OEN) quota_tree dlm(OEN) configfs fuse sd_mod    iscsi_tcp libiscsi_tcp libiscsi scsi_transport_iscsi af_packet iscsi_ibft iscsi_boot_sysfs softdog xfs libcrc32c ppdev parport_pc pcspkr parport      joydev virtio_balloon virtio_net i2c_piix4 acpi_cpufreq button processor ext4 crc16 jbd2 mbcache ata_generic cirrus virtio_blk ata_piix               drm_kms_helper ahci syscopyarea libahci sysfillrect sysimgblt fb_sys_fops ttm floppy libata drm virtio_pci virtio_ring uhci_hcd virtio ehci_hcd       usbcore serio_raw usb_common sg dm_multipath dm_mod scsi_dh_rdac scsi_dh_emc scsi_dh_alua scsi_mod autofs4
       Supported: No, Unsupported modules are loaded
       CPU: 1 PID: 30154 Comm: truncate Tainted: G           OE   N  4.4.21-69-default #1
       Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.8.1-0-g4adadbd-20151112_172657-sheep25 04/01/2014
       task: ffff88004ff6d240 ti: ffff880074e68000 task.ti: ffff880074e68000
       RIP: 0010:[<ffffffffa05c8c30>]  [<ffffffffa05c8c30>] ocfs2_truncate_file+0x640/0x6c0 [ocfs2]
       RSP: 0018:ffff880074e6bd50  EFLAGS: 00010282
       RAX: 0000000000000074 RBX: 000000000000029e RCX: 0000000000000000
       RDX: 0000000000000001 RSI: 0000000000000246 RDI: 0000000000000246
       RBP: ffff880074e6bda8 R08: 000000003675dc7a R09: ffffffff82013414
       R10: 0000000000034c50 R11: 0000000000000000 R12: ffff88003aab3448
       R13: 00000000000002dc R14: 0000000000046e11 R15: 0000000000000020
       FS:  00007f839f965700(0000) GS:ffff88007fc80000(0000) knlGS:0000000000000000
       CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
       CR2: 00007f839f97e000 CR3: 0000000036723000 CR4: 00000000000006e0
       Call Trace:
         ocfs2_setattr+0x698/0xa90 [ocfs2]
         notify_change+0x1ae/0x380
         do_truncate+0x5e/0x90
         do_sys_ftruncate.constprop.11+0x108/0x160
         entry_SYSCALL_64_fastpath+0x12/0x6d
       Code: 24 28 ba d6 01 00 00 48 c7 c6 30 43 62 a0 8b 41 2c 89 44 24 08 48 8b 41 20 48 c7 c1 78 a3 62 a0 48 89 04 24 31 c0 e8 a0 97 f9 ff <0f> 0b 3d 00 fe ff ff 0f 84 ab fd ff ff 83 f8 fc 0f 84 a2 fd ff
       RIP  [<ffffffffa05c8c30>] ocfs2_truncate_file+0x640/0x6c0 [ocfs2]
    
    It's because ocfs2_inode_lock() get us stale LVB in which the i_size is
    not equal to the disk i_size.  We mistakenly trust the LVB because the
    underlaying fsdlm dlm_lock() doesn't set lkb_sbflags with
    DLM_SBF_VALNOTVALID properly for us.  But, why?
    
    The current code tries to downconvert lock without DLM_LKF_VALBLK flag
    to tell o2cb don't update RSB's LVB if it's a PR->NULL conversion, even
    if the lock resource type needs LVB.  This is not the right way for
    fsdlm.
    
    The fsdlm plugin behaves different on DLM_LKF_VALBLK, it depends on
    DLM_LKF_VALBLK to decide if we care about the LVB in the LKB.  If
    DLM_LKF_VALBLK is not set, fsdlm will skip recovering RSB's LVB from
    this lkb and set the right DLM_SBF_VALNOTVALID appropriately when node
    failure happens.
    
    The following diagram briefly illustrates how this crash happens:
    
    RSB1 is inode metadata lock resource with LOCK_TYPE_USES_LVB;
    
    The 1st round:
    
                 Node1                                    Node2
    RSB1: PR
                                                      RSB1(master): NULL->EX
    ocfs2_downconvert_lock(PR->NULL, set_lvb==0)
      ocfs2_dlm_lock(no DLM_LKF_VALBLK)
    
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    
    dlm_lock(no DLM_LKF_VALBLK)
      convert_lock(overwrite lkb->lkb_exflags
                   with no DLM_LKF_VALBLK)
    
    RSB1: NULL                                        RSB1: EX
                                                      reset Node2
    dlm_recover_rsbs()
      recover_lvb()
    
    /* The LVB is not trustable if the node with EX fails and
     * no lock >= PR is left. We should set RSB_VALNOTVALID for RSB1.
     */
    
     if(!(kb_exflags & DLM_LKF_VALBLK)) /* This means we miss the chance to
               return;                   * to invalid the LVB here.
                                         */
    
    The 2nd round:
    
             Node 1                                Node2
    RSB1(become master from recovery)
    
    ocfs2_setattr()
      ocfs2_inode_lock(NULL->EX)
        /* dlm_lock() return the stale lvb without setting DLM_SBF_VALNOTVALID */
        ocfs2_meta_lvb_is_trustable() return 1 /* so we don't refresh inode from disk */
      ocfs2_truncate_file()
          mlog_bug_on_msg(disk isize != i_size_read(inode))  /* crash! */
    
    The fix is quite straightforward.  We keep to set DLM_LKF_VALBLK flag
    for dlm_lock() if the lock resource type needs LVB and the fsdlm plugin
    is uesed.
    
    Link: http://lkml.kernel.org/r/1481275846-6604-1-git-send-email-zren@suse.com
    Signed-off-by: Eric Ren <zren@suse.com>
    Reviewed-by: Joseph Qi <jiangqi903@gmail.com>
    Cc: Mark Fasheh <mfasheh@versity.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit d49de65c3bd5d1ffbc3ad4269a546eb5437a31f9
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Fri Jan 6 13:12:47 2017 +0100

    ARM: 8634/1: hw_breakpoint: blacklist Scorpion CPUs
    
    [ Upstream commit ddc37832a1349f474c4532de381498020ed71d31 ]
    
    On APQ8060, the kernel crashes in arch_hw_breakpoint_init, taking an
    undefined instruction trap within write_wb_reg. This is because Scorpion
    CPUs erroneously appear to set DBGPRSR.SPD when WFI is issued, even if
    the core is not powered down. When DBGPRSR.SPD is set, breakpoint and
    watchpoint registers are treated as undefined.
    
    It's possible to trigger similar crashes later on from userspace, by
    requesting the kernel to install a breakpoint or watchpoint, as we can
    go idle at any point between the reset of the debug registers and their
    later use. This has always been the case.
    
    Given that this has always been broken, no-one has complained until now,
    and there is no clear workaround, disable hardware breakpoints and
    watchpoints on Scorpion to avoid these issues.
    
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Reported-by: Linus Walleij <linus.walleij@linaro.org>
    Reviewed-by: Stephen Boyd <sboyd@codeaurora.org>
    Acked-by: Will Deacon <will.deacon@arm.com>
    Cc: Russell King <linux@armlinux.org.uk>
    Cc: stable@vger.kernel.org
    Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 301242e3780413bffc7bbbd70cafb4ecee135080
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Jan 10 12:05:37 2017 +0100

    USB: serial: kl5kusb105: fix line-state error handling
    
    [ Upstream commit 146cc8a17a3b4996f6805ee5c080e7101277c410 ]
    
    The current implementation failed to detect short transfers when
    attempting to read the line state, and also, to make things worse,
    logged the content of the uninitialised heap transfer buffer.
    
    Fixes: abf492e7b3ae ("USB: kl5kusb105: fix DMA buffers on stack")
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Cc: stable <stable@vger.kernel.org>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 9b1f2ea4c0f3e52fa9486e9587dd97a782cf2995
Author: Dennis Kadioglu <denk@post.com>
Date:   Mon Jan 9 17:10:46 2017 +0100

    ALSA: usb-audio: Add a quirk for Plantronics BT600
    
    [ Upstream commit 2e40795c3bf344cfb5220d94566205796e3ef19a ]
    
    Plantronics BT600 does not support reading the sample rate which leads
    to many lines of "cannot get freq at ep 0x1" and "cannot get freq at
    ep 0x82". This patch adds the USB ID of the BT600 to quirks.c and
    avoids those error messages.
    
    Signed-off-by: Dennis Kadioglu <denk@post.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 13d7adf646017517382ec541652eb7d3bc77742c
Author: Zhou Chengming <zhouchengming1@huawei.com>
Date:   Fri Jan 6 09:32:32 2017 +0800

    sysctl: Drop reference added by grab_header in proc_sys_readdir
    
    [ Upstream commit 93362fa47fe98b62e4a34ab408c4a418432e7939 ]
    
    Fixes CVE-2016-9191, proc_sys_readdir doesn't drop reference
    added by grab_header when return from !dir_emit_dots path.
    It can cause any path called unregister_sysctl_table will
    wait forever.
    
    The calltrace of CVE-2016-9191:
    
    [ 5535.960522] Call Trace:
    [ 5535.963265]  [<ffffffff817cdaaf>] schedule+0x3f/0xa0
    [ 5535.968817]  [<ffffffff817d33fb>] schedule_timeout+0x3db/0x6f0
    [ 5535.975346]  [<ffffffff817cf055>] ? wait_for_completion+0x45/0x130
    [ 5535.982256]  [<ffffffff817cf0d3>] wait_for_completion+0xc3/0x130
    [ 5535.988972]  [<ffffffff810d1fd0>] ? wake_up_q+0x80/0x80
    [ 5535.994804]  [<ffffffff8130de64>] drop_sysctl_table+0xc4/0xe0
    [ 5536.001227]  [<ffffffff8130de17>] drop_sysctl_table+0x77/0xe0
    [ 5536.007648]  [<ffffffff8130decd>] unregister_sysctl_table+0x4d/0xa0
    [ 5536.014654]  [<ffffffff8130deff>] unregister_sysctl_table+0x7f/0xa0
    [ 5536.021657]  [<ffffffff810f57f5>] unregister_sched_domain_sysctl+0x15/0x40
    [ 5536.029344]  [<ffffffff810d7704>] partition_sched_domains+0x44/0x450
    [ 5536.036447]  [<ffffffff817d0761>] ? __mutex_unlock_slowpath+0x111/0x1f0
    [ 5536.043844]  [<ffffffff81167684>] rebuild_sched_domains_locked+0x64/0xb0
    [ 5536.051336]  [<ffffffff8116789d>] update_flag+0x11d/0x210
    [ 5536.057373]  [<ffffffff817cf61f>] ? mutex_lock_nested+0x2df/0x450
    [ 5536.064186]  [<ffffffff81167acb>] ? cpuset_css_offline+0x1b/0x60
    [ 5536.070899]  [<ffffffff810fce3d>] ? trace_hardirqs_on+0xd/0x10
    [ 5536.077420]  [<ffffffff817cf61f>] ? mutex_lock_nested+0x2df/0x450
    [ 5536.084234]  [<ffffffff8115a9f5>] ? css_killed_work_fn+0x25/0x220
    [ 5536.091049]  [<ffffffff81167ae5>] cpuset_css_offline+0x35/0x60
    [ 5536.097571]  [<ffffffff8115aa2c>] css_killed_work_fn+0x5c/0x220
    [ 5536.104207]  [<ffffffff810bc83f>] process_one_work+0x1df/0x710
    [ 5536.110736]  [<ffffffff810bc7c0>] ? process_one_work+0x160/0x710
    [ 5536.117461]  [<ffffffff810bce9b>] worker_thread+0x12b/0x4a0
    [ 5536.123697]  [<ffffffff810bcd70>] ? process_one_work+0x710/0x710
    [ 5536.130426]  [<ffffffff810c3f7e>] kthread+0xfe/0x120
    [ 5536.135991]  [<ffffffff817d4baf>] ret_from_fork+0x1f/0x40
    [ 5536.142041]  [<ffffffff810c3e80>] ? kthread_create_on_node+0x230/0x230
    
    One cgroup maintainer mentioned that "cgroup is trying to offline
    a cpuset css, which takes place under cgroup_mutex.  The offlining
    ends up trying to drain active usages of a sysctl table which apprently
    is not happening."
    The real reason is that proc_sys_readdir doesn't drop reference added
    by grab_header when return from !dir_emit_dots path. So this cpuset
    offline path will wait here forever.
    
    See here for details: http://www.openwall.com/lists/oss-security/2016/11/04/13
    
    Fixes: f0c3b5093add ("[readdir] convert procfs")
    Cc: stable@vger.kernel.org
    Reported-by: CAI Qian <caiqian@redhat.com>
    Tested-by: Yang Shukui <yangshukui@huawei.com>
    Signed-off-by: Zhou Chengming <zhouchengming1@huawei.com>
    Acked-by: Al Viro <viro@ZenIV.linux.org.uk>
    Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 89aca6c9f22a069b36157716bda5dc462231f129
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Tue Jan 3 14:18:43 2017 +1300

    mnt: Protect the mountpoint hashtable with mount_lock
    
    [ Upstream commit 3895dbf8985f656675b5bde610723a29cbce3fa7 ]
    
    Protecting the mountpoint hashtable with namespace_sem was sufficient
    until a call to umount_mnt was added to mntput_no_expire.  At which
    point it became possible for multiple calls of put_mountpoint on
    the same hash chain to happen on the same time.
    
    Kristen Johansen <kjlx@templeofstupid.com> reported:
    > This can cause a panic when simultaneous callers of put_mountpoint
    > attempt to free the same mountpoint.  This occurs because some callers
    > hold the mount_hash_lock, while others hold the namespace lock.  Some
    > even hold both.
    >
    > In this submitter's case, the panic manifested itself as a GP fault in
    > put_mountpoint() when it called hlist_del() and attempted to dereference
    > a m_hash.pprev that had been poisioned by another thread.
    
    Al Viro observed that the simple fix is to switch from using the namespace_sem
    to the mount_lock to protect the mountpoint hash table.
    
    I have taken Al's suggested patch moved put_mountpoint in pivot_root
    (instead of taking mount_lock an additional time), and have replaced
    new_mountpoint with get_mountpoint a function that does the hash table
    lookup and addition under the mount_lock.   The introduction of get_mounptoint
    ensures that only the mount_lock is needed to manipulate the mountpoint
    hashtable.
    
    d_set_mounted is modified to only set DCACHE_MOUNTED if it is not
    already set.  This allows get_mountpoint to use the setting of
    DCACHE_MOUNTED to ensure adding a struct mountpoint for a dentry
    happens exactly once.
    
    Cc: stable@vger.kernel.org
    Fixes: ce07d891a089 ("mnt: Honor MNT_LOCKED when detaching mounts")
    Reported-by: Krister Johansen <kjlx@templeofstupid.com>
    Suggested-by: Al Viro <viro@ZenIV.linux.org.uk>
    Acked-by: Al Viro <viro@ZenIV.linux.org.uk>
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit f8969b9416ebcd7f216e319fc9e97e17d2bd2387
Author: Johan Hovold <johan@kernel.org>
Date:   Fri Jan 6 19:15:13 2017 +0100

    USB: serial: ch341: fix open error handling
    
    [ Upstream commit f2950b78547ffb8475297ada6b92bc2d774d5461 ]
    
    Make sure to stop the interrupt URB before returning on errors during
    open.
    
    Fixes: 664d5df92e88 ("USB: usb-serial ch341: support for DTR/RTS/CTS")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit c72629ab768645a9b16d263717d88d8c1c56fc3c
Author: Johan Hovold <johan@kernel.org>
Date:   Fri Jan 6 19:15:12 2017 +0100

    USB: serial: ch341: fix modem-control and B0 handling
    
    [ Upstream commit 030ee7ae52a46a2be52ccc8242c4a330aba8d38e ]
    
    The modem-control signals are managed by the tty-layer during open and
    should not be asserted prematurely when set_termios is called from
    driver open.
    
    Also make sure that the signals are asserted only when changing speed
    from B0.
    
    Fixes: 664d5df92e88 ("USB: usb-serial ch341: support for DTR/RTS/CTS")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit f7ee5552dd91c9e4f7d6efd2ae0bb721b67b3da7
Author: Johan Hovold <johan@kernel.org>
Date:   Fri Jan 6 19:15:11 2017 +0100

    USB: serial: ch341: fix open and resume after B0
    
    [ Upstream commit a20047f36e2f6a1eea4f1fd261aaa55882369868 ]
    
    The private baud_rate variable is used to configure the port at open and
    reset-resume and must never be set to (and left at) zero or reset-resume
    and all further open attempts will fail.
    
    Fixes: aa91def41a7b ("USB: ch341: set tty baud speed according to tty
    struct")
    Fixes: 664d5df92e88 ("USB: usb-serial ch341: support for DTR/RTS/CTS")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 022104d55b754e9566102c90ac325fc5fc66cc28
Author: Johan Hovold <johan@kernel.org>
Date:   Fri Jan 6 19:15:10 2017 +0100

    USB: serial: ch341: fix initial modem-control state
    
    [ Upstream commit 4e2da44691cffbfffb1535f478d19bc2dca3e62b ]
    
    DTR and RTS will be asserted by the tty-layer when the port is opened
    and deasserted on close (if HUPCL is set). Make sure the initial state
    is not-asserted before the port is first opened as well.
    
    Fixes: 664d5df92e88 ("USB: usb-serial ch341: support for DTR/RTS/CTS")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 49d412aedd679db0c644fc7815630c2c71a470fb
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Thu Jan 5 12:39:01 2017 -0500

    drm/radeon: drop verde dpm quirks
    
    [ Upstream commit 8a08403bcb39f5d0e733bcf59a8a74f16b538f6e ]
    
    fixes:
    https://bugs.freedesktop.org/show_bug.cgi?id=98897
    https://bugs.launchpad.net/bugs/1651981
    
    Acked-by: Edward O'Callaghan <funfunctor@folklore1984.net>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Cc: Adrian Fiergolski <A.Fiergolski@gmail.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 1a472e4c2b9c5d60a9c172be6c7979c1f8ba5587
Author: Arvind Yadav <arvind.yadav.cs@gmail.com>
Date:   Mon Dec 12 23:13:27 2016 +0530

    ata: sata_mv:- Handle return value of devm_ioremap.
    
    [ Upstream commit 064c3db9c564cc5be514ac21fb4aa26cc33db746 ]
    
    Here, If devm_ioremap will fail. It will return NULL.
    Then hpriv->base = NULL - 0x20000; Kernel can run into
    a NULL-pointer dereference. This error check will avoid
    NULL pointer dereference.
    
    Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 87f674247089cbe8250f00d431885618e790fe83
Author: Damien Le Moal <damien.lemoal@wdc.com>
Date:   Mon Dec 19 10:17:40 2016 +0900

    libata: Fix ATA request sense
    
    [ Upstream commit 2dae99558e86894e9e5dbf097477baaa5eb70134 ]
    
    For an ATA device supporting the sense data reporting feature set, a
    failed command will trigger the execution of ata_eh_request_sense if
    the result task file of the failed command has the ATA_SENSE bit set
    (sense data available bit). ata_eh_request_sense executes the REQUEST
    SENSE DATA EXT command to retrieve the sense data of the failed
    command. On success of REQUEST SENSE DATA EXT, the ATA_SENSE bit will
    NOT be set (the command succeeded) but ata_eh_request_sense
    nevertheless tests the availability of sense data by testing that bit
    presence in the result tf of the REQUEST SENSE DATA EXT command.  This
    leads us to falsely assume that request sense data failed and to the
    warning message:
    
    atax.xx: request sense failed stat 50 emask 0
    
    Upon success of REQUEST SENSE DATA EXT, set the ATA_SENSE bit in the
    result task file command so that sense data can be returned by
    ata_eh_request_sense.
    
    Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit d6c83f5607bfcc1420e869cde808caf5b6013964
Author: Dave Martin <Dave.Martin@arm.com>
Date:   Fri Jan 6 17:54:51 2017 +0000

    tile/ptrace: Preserve previous registers for short regset write
    
    [ Upstream commit fd7c99142d77dc4a851879a66715abf12a3193fb ]
    
    Ensure that if userspace supplies insufficient data to
    PTRACE_SETREGSET to fill all the registers, the thread's old
    registers are preserved.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Dave Martin <Dave.Martin@arm.com>
    Signed-off-by: Chris Metcalf <cmetcalf@mellanox.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit f24c4f609ca5b05186a76d9a74522b6f6c3a873f
Author: Tejun Heo <tj@kernel.org>
Date:   Fri Jan 6 11:48:50 2017 -0500

    libata: apply MAX_SEC_1024 to all CX1-JB*-HP devices
    
    [ Upstream commit e0edc8c546463f268d41d064d855bcff994c52fa ]
    
    Marko reports that CX1-JB512-HP shows the same timeout issues as
    CX1-JB256-HP.  Let's apply MAX_SEC_128 to all devices in the series.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Reported-by: Marko Koski-Vähälä <marko@koski-vahala.com>
    Cc: stable@vger.kernel.org # v3.19+
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit e0fb4ae61143bb6b218aa8bab1730bb156c4d457
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Jan 6 15:33:36 2017 +0100

    HID: hid-cypress: validate length of report
    
    [ Upstream commit 1ebb71143758f45dc0fa76e2f48429e13b16d110 ]
    
    Make sure we have enough of a report structure to validate before
    looking at it.
    
    Reported-by: Benoit Camredon <benoit.camredon@airbus.com>
    Tested-by: Benoit Camredon <benoit.camredon@airbus.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 63d75fa737a0bddfb815f7521eef58509e067264
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Thu Jan 5 14:14:54 2017 -0800

    Input: elants_i2c - avoid divide by 0 errors on bad touchscreen data
    
    [ Upstream commit 1c3415a06b1016a596bfe59e0cfee56c773aa958 ]
    
    The following crash may be seen if bad data is received from the
    touchscreen.
    
    [ 2189.425150] elants_i2c i2c-ELAN0001:00: unknown packet ff ff ff ff
    [ 2189.430738] divide error: 0000 [#1] PREEMPT SMP
    [ 2189.434679] gsmi: Log Shutdown Reason 0x03
    [ 2189.434689] Modules linked in: ip6t_REJECT nf_reject_ipv6 rfcomm evdi
    uinput uvcvideo cmac videobuf2_vmalloc videobuf2_memops snd_hda_codec_hdmi
    i2c_dev videobuf2_core snd_soc_sst_cht_bsw_rt5645 snd_hda_intel
    snd_intel_sst_acpi btusb btrtl btbcm btintel bluetooth snd_soc_sst_acpi
    snd_hda_codec snd_intel_sst_core snd_hwdep snd_soc_sst_mfld_platform
    snd_hda_core snd_soc_rt5645 memconsole_x86_legacy memconsole zram snd_soc_rl6231
    fuse ip6table_filter iwlmvm iwlwifi iwl7000_mac80211 cfg80211 iio_trig_sysfs
    joydev cros_ec_sensors cros_ec_sensors_core industrialio_triggered_buffer
    kfifo_buf industrialio snd_seq_midi snd_seq_midi_event snd_rawmidi snd_seq
    snd_seq_device ppp_async ppp_generic slhc tun
    [ 2189.434866] CPU: 0 PID: 106 Comm: irq/184-ELAN000 Tainted: G        W
    3.18.0-13101-g57e8190 #1
    [ 2189.434883] Hardware name: GOOGLE Ultima, BIOS Google_Ultima.7287.131.43 07/20/2016
    [ 2189.434898] task: ffff88017a0b6d80 ti: ffff88017a2bc000 task.ti: ffff88017a2bc000
    [ 2189.434913] RIP: 0010:[<ffffffffbecc48d5>]  [<ffffffffbecc48d5>] elants_i2c_irq+0x190/0x200
    [ 2189.434937] RSP: 0018:ffff88017a2bfd98  EFLAGS: 00010293
    [ 2189.434948] RAX: 0000000000000000 RBX: ffff88017a967828 RCX: ffff88017a9678e8
    [ 2189.434962] RDX: 0000000000000000 RSI: 0000000000000246 RDI: 0000000000000000
    [ 2189.434975] RBP: ffff88017a2bfdd8 R08: 00000000000003e8 R09: 0000000000000000
    [ 2189.434989] R10: 0000000000000000 R11: 000000000044a2bd R12: ffff88017a991800
    [ 2189.435001] R13: ffffffffbe8a2a53 R14: ffff88017a0b6d80 R15: ffff88017a0b6d80
    [ 2189.435011] FS:  0000000000000000(0000) GS:ffff88017fc00000(0000) knlGS:0000000000000000
    [ 2189.435022] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
    [ 2189.435030] CR2: 00007f678d94b000 CR3: 000000003f41a000 CR4: 00000000001007f0
    [ 2189.435039] Stack:
    [ 2189.435044]  ffff88017a2bfda8 ffff88017a9678e8 646464647a2bfdd8 0000000006e09574
    [ 2189.435060]  0000000000000000 ffff88017a088b80 ffff88017a921000 ffffffffbe8a2a53
    [ 2189.435074]  ffff88017a2bfe08 ffffffffbe8a2a73 ffff88017a0b6d80 0000000006e09574
    [ 2189.435089] Call Trace:
    [ 2189.435101]  [<ffffffffbe8a2a53>] ? irq_thread_dtor+0xa9/0xa9
    [ 2189.435112]  [<ffffffffbe8a2a73>] irq_thread_fn+0x20/0x40
    [ 2189.435123]  [<ffffffffbe8a2be1>] irq_thread+0x14e/0x222
    [ 2189.435135]  [<ffffffffbee8cbeb>] ? __schedule+0x3b3/0x57a
    [ 2189.435145]  [<ffffffffbe8a29aa>] ? wake_threads_waitq+0x2d/0x2d
    [ 2189.435156]  [<ffffffffbe8a2a93>] ? irq_thread_fn+0x40/0x40
    [ 2189.435168]  [<ffffffffbe87c385>] kthread+0x10e/0x116
    [ 2189.435178]  [<ffffffffbe87c277>] ? __kthread_parkme+0x67/0x67
    [ 2189.435189]  [<ffffffffbee900ac>] ret_from_fork+0x7c/0xb0
    [ 2189.435199]  [<ffffffffbe87c277>] ? __kthread_parkme+0x67/0x67
    [ 2189.435208] Code: ff ff eb 73 0f b6 bb c1 00 00 00 83 ff 03 7e 13 49 8d 7c
    24 20 ba 04 00 00 00 48 c7 c6 8a cd 21 bf eb 4d 0f b6 83 c2 00 00 00 99 <f7> ff
    83 f8 37 75 15 48 6b f7 37 4c 8d a3 c4 00 00 00 4c 8d ac
    [ 2189.435312] RIP  [<ffffffffbecc48d5>] elants_i2c_irq+0x190/0x200
    [ 2189.435323]  RSP <ffff88017a2bfd98>
    [ 2189.435350] ---[ end trace f4945345a75d96dd ]---
    [ 2189.443841] Kernel panic - not syncing: Fatal exception
    [ 2189.444307] Kernel Offset: 0x3d800000 from 0xffffffff81000000
            (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
    [ 2189.444519] gsmi: Log Shutdown Reason 0x02
    
    The problem was seen with a 3.18 based kernel, but there is no reason
    to believe that the upstream code is safe.
    
    Fixes: 66aee90088da2 ("Input: add support for Elan eKTH I2C touchscreens")
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit eb7a3d89c87b0cc06aced027f4da8c7ee24e768a
Author: Rolf Eike Beer <eb@emlix.com>
Date:   Wed Dec 14 11:59:57 2016 +0100

    selftests: do not require bash to run netsocktests testcase
    
    [ Upstream commit 3659f98b5375d195f1870c3e508fe51e52206839 ]
    
    Nothing in this minimal script seems to require bash. We often run these
    tests on embedded devices where the only shell available is the busybox
    ash. Use sh instead.
    
    Signed-off-by: Rolf Eike Beer <eb@emlix.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 6d5a0b3bcbd4d64a16f148169f9e756136b4c50d
Author: Rolf Eike Beer <eb@emlix.com>
Date:   Wed Dec 14 11:59:34 2016 +0100

    selftests: do not require bash for the generated test
    
    [ Upstream commit a2b1e8a20c992b01eeb76de00d4f534cbe9f3822 ]
    
    Nothing in this minimal script seems to require bash. We often run these
    tests on embedded devices where the only shell available is the busybox
    ash. Use sh instead.
    
    Signed-off-by: Rolf Eike Beer <eb@emlix.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit b0de742a1be16b76b534d088682f18cf57f012d2
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Mon Dec 19 12:03:41 2016 -0500

    USB: fix problems with duplicate endpoint addresses
    
    [ Upstream commit 0a8fd1346254974c3a852338508e4a4cddbb35f1 ]
    
    When checking a new device's descriptors, the USB core does not check
    for duplicate endpoint addresses.  This can cause a problem when the
    sysfs files for those endpoints are created; trying to create multiple
    files with the same name will provoke a WARNING:
    
    WARNING: CPU: 2 PID: 865 at fs/sysfs/dir.c:31 sysfs_warn_dup+0x8a/0xa0
    sysfs: cannot create duplicate filename
    '/devices/platform/dummy_hcd.0/usb2/2-1/2-1:64.0/ep_05'
    Kernel panic - not syncing: panic_on_warn set ...
    
    CPU: 2 PID: 865 Comm: kworker/2:1 Not tainted 4.9.0-rc7+ #34
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
    Workqueue: usb_hub_wq hub_event
     ffff88006bee64c8 ffffffff81f96b8a ffffffff00000001 1ffff1000d7dcc2c
     ffffed000d7dcc24 0000000000000001 0000000041b58ab3 ffffffff8598b510
     ffffffff81f968f8 ffffffff850fee20 ffffffff85cff020 dffffc0000000000
    Call Trace:
     [<     inline     >] __dump_stack lib/dump_stack.c:15
     [<ffffffff81f96b8a>] dump_stack+0x292/0x398 lib/dump_stack.c:51
     [<ffffffff8168c88e>] panic+0x1cb/0x3a9 kernel/panic.c:179
     [<ffffffff812b80b4>] __warn+0x1c4/0x1e0 kernel/panic.c:542
     [<ffffffff812b8195>] warn_slowpath_fmt+0xc5/0x110 kernel/panic.c:565
     [<ffffffff819e70ca>] sysfs_warn_dup+0x8a/0xa0 fs/sysfs/dir.c:30
     [<ffffffff819e7308>] sysfs_create_dir_ns+0x178/0x1d0 fs/sysfs/dir.c:59
     [<     inline     >] create_dir lib/kobject.c:71
     [<ffffffff81fa1b07>] kobject_add_internal+0x227/0xa60 lib/kobject.c:229
     [<     inline     >] kobject_add_varg lib/kobject.c:366
     [<ffffffff81fa2479>] kobject_add+0x139/0x220 lib/kobject.c:411
     [<ffffffff82737a63>] device_add+0x353/0x1660 drivers/base/core.c:1088
     [<ffffffff82738d8d>] device_register+0x1d/0x20 drivers/base/core.c:1206
     [<ffffffff82cb77d3>] usb_create_ep_devs+0x163/0x260 drivers/usb/core/endpoint.c:195
     [<ffffffff82c9f27b>] create_intf_ep_devs+0x13b/0x200 drivers/usb/core/message.c:1030
     [<ffffffff82ca39d3>] usb_set_configuration+0x1083/0x18d0 drivers/usb/core/message.c:1937
     [<ffffffff82cc9e2e>] generic_probe+0x6e/0xe0 drivers/usb/core/generic.c:172
     [<ffffffff82caa7fa>] usb_probe_device+0xaa/0xe0 drivers/usb/core/driver.c:263
    
    This patch prevents the problem by checking for duplicate endpoint
    addresses during enumeration and skipping any duplicates.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Tested-by: Andrey Konovalov <andreyknvl@google.com>
    CC: <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit d3258941ec2a9cfbf50f7939a49f3a25b156387f
Author: Oliver Neukum <oneukum@suse.com>
Date:   Mon Jan 2 15:26:17 2017 +0100

    usb: storage: unusual_uas: Add JMicron JMS56x to unusual device
    
    [ Upstream commit 674aea07e38200ea6f31ff6d5f200f0cf6cdb325 ]
    
    This device gives the following error on detection.
    xhci_hcd 0000:00:11.0: ERROR Transfer event for disabled endpoint or
    incorrect stream ring
    
    The same error is not seen when it is added to unusual_device
    list with US_FL_NO_REPORT_OPCODES passed.
    
    Signed-off-by: George Cherian <george.cherian@cavium.com>
    Signed-off-by: Oliver Neukum <oneukun@suse.com>
    CC: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 0f6b70a5f239c41abb5e63ac56b41f6f681da4a8
Author: Bin Liu <b-liu@ti.com>
Date:   Tue Jan 3 18:13:47 2017 -0600

    usb: musb: dsps: implement clear_ep_rxintr() callback
    
    [ Upstream commit c48400baa02155a5ddad63e8554602e48782278c ]
    
    During dma teardown for dequque urb, if musb load is high, musb might
    generate bogus rx ep interrupt even when the rx fifo is flushed. In such
    case any of the follow log messages could happen.
    
        musb_host_rx 1853: BOGUS RX2 ready, csr 0000, count 0
    
        musb_host_rx 1936: RX3 dma busy, csr 2020
    
    As mentioned in the current inline comment, clearing ep interrupt in the
    teardown path avoids the bogus interrupt, so implement clear_ep_rxintr()
    callback.
    
    This bug seems to be existing since the initial driver for musb support,
    but I only validated the fix back to v4.1, so only cc stable for v4.1+.
    
    cc: stable@vger.kernel.org # 4.1+
    Signed-off-by: Bin Liu <b-liu@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 088f54978b9020677bc0ba08952aa83d4c5474b7
Author: Bin Liu <b-liu@ti.com>
Date:   Tue Jan 3 18:13:46 2017 -0600

    usb: musb: core: add clear_ep_rxintr() to musb_platform_ops
    
    [ Upstream commit 6def85a396ce7796bd9f4561c6ae8138833f7a52 ]
    
    During dma teardown for dequque urb, if musb load is high, musb might
    generate bogus rx ep interrupt even when the rx fifo is flushed. In such
    case any of the follow log messages could happen.
    
            musb_host_rx 1853: BOGUS RX2 ready, csr 0000, count 0
    
            musb_host_rx 1936: RX3 dma busy, csr 2020
    
    As mentioned in the current inline comment, clearing ep interrupt in the
    teardown path avoids the bogus interrupt.
    
    Clearing ep interrupt is platform dependent, so this patch adds a
    platform callback to allow glue driver to clear the ep interrupt.
    
    This bug seems to be existing since the initial driver for musb support,
    but I only validated the fix back to v4.1, so only cc stable for v4.1+.
    
    cc: stable@vger.kernel.org # 4.1+
    Signed-off-by: Bin Liu <b-liu@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit a7c03eb863997f4360d175e6207426b6a3211f62
Author: James Hogan <james.hogan@imgtec.com>
Date:   Tue Jan 3 17:43:01 2017 +0000

    KVM: MIPS: Flush KVM entry code from icache globally
    
    [ Upstream commit 32eb12a6c11034867401d56b012e3c15d5f8141e ]
    
    Flush the KVM entry code from the icache on all CPUs, not just the one
    that built the entry code.
    
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: "Radim Krčmář" <rkrcmar@redhat.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Cc: kvm@vger.kernel.org
    Cc: <stable@vger.kernel.org> # 3.16.x-
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 7e5bfd19212e7af0736ca0b50ed5d8f6e0570ea4
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Thu Jan 5 10:57:14 2017 +0100

    nl80211: fix sched scan netlink socket owner destruction
    
    [ Upstream commit 753aacfd2e95df6a0caf23c03dc309020765bea9 ]
    
    A single netlink socket might own multiple interfaces *and* a
    scheduled scan request (which might belong to another interface),
    so when it goes away both may need to be destroyed.
    
    Remove the schedule_scan_stop indirection to fix this - it's only
    needed for interface destruction because of the way this works
    right now, with a single work taking care of all interfaces.
    
    Cc: stable@vger.kernel.org
    Fixes: 93a1e86ce10e4 ("nl80211: Stop scheduled scan if netlink client disappears")
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 9e31671ff44a32e7193a49dad9c45f9786da4060
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Jan 4 21:38:16 2017 +0100

    ALSA: hda - Apply asus-mode8 fixup to ASUS X71SL
    
    [ Upstream commit c7efff9284dfde95a11aaa811c9d8ec8167f0f6e ]
    
    Although the old quirk table showed ASUS X71SL with ALC663 codec being
    compatible with asus-mode3 fixup, the bugzilla reporter explained that
    asus-model8 fits better for the dual headphone controls.  So be it.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=191781
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 75e3aa299e976d9cc196b3512416864bb33247ef
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Dec 6 16:20:36 2016 +0100

    ALSA: hda - Fix up GPIO for ASUS ROG Ranger
    
    [ Upstream commit 85bcf96caba8b4a7c0805555638629ba3c67ea0c ]
    
    ASUS ROG Ranger VIII with ALC1150 codec requires the extra GPIO pin to
    up for the front panel.  Just use the existing fixup for setting up
    the GPIO pins.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=189411
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 64b1c003f1408f00df864c33d88d92f69bad281a
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Jan 3 16:40:03 2017 +0100

    USB: serial: ti_usb_3410_5052: fix NULL-deref at open
    
    [ Upstream commit ef079936d3cd09e63612834fe2698eeada0d8e3f ]
    
    Fix NULL-pointer dereference in open() should a malicious device lack
    the expected endpoints:
    
    Unable to handle kernel NULL pointer dereference at virtual address 00000030
    ..
    [<bf06a6b0>] (ti_open [ti_usb_3410_5052]) from [<bf02e118>] (serial_port_activate+0x68/0x98 [usbserial])
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit f41f108aaba1eb07a382810d52eb0497639ef473
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Jan 3 16:40:02 2017 +0100

    USB: serial: spcp8x5: fix NULL-deref at open
    
    [ Upstream commit cc0909248258f679c4bb4cd315565d40abaf6bc6 ]
    
    Fix NULL-pointer dereference in open() should the device lack the
    expected endpoints:
    
    Unable to handle kernel NULL pointer dereference at virtual address 00000030
    ...
    PC is at spcp8x5_open+0x30/0xd0 [spcp8x5]
    
    Fixes: 619a6f1d1423 ("USB: add usb-serial spcp8x5 driver")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 17afc4c87c61f677720fdc1845c2f67d517a343d
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Jan 3 16:40:01 2017 +0100

    USB: serial: quatech2: fix sleep-while-atomic in close
    
    [ Upstream commit f09d1886a41e9063b43da493ef0e845ac8afd2fa ]
    
    The write URB was being killed using the synchronous interface while
    holding a spin lock in close().
    
    Simply drop the lock and busy-flag update, something which would have
    been taken care of by the completion handler if the URB was in flight.
    
    Fixes: f7a33e608d9a ("USB: serial: add quatech2 usb to serial driver")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit fb7a11218016343f03f855d7b213545fff62a38a
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Jan 3 16:40:00 2017 +0100

    USB: serial: pl2303: fix NULL-deref at open
    
    [ Upstream commit 76ab439ed1b68778e9059c79ecc5d14de76c89a8 ]
    
    Fix NULL-pointer dereference in open() should a type-0 or type-1 device
    lack the expected endpoints:
    
    Unable to handle kernel NULL pointer dereference at virtual address 00000030
    ...
    PC is at pl2303_open+0x38/0xec [pl2303]
    
    Note that a missing interrupt-in endpoint would have caused open() to
    fail.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit f61e65c87df647e51309b3e0b397b0fa7423ceeb
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Jan 3 16:39:59 2017 +0100

    USB: serial: oti6858: fix NULL-deref at open
    
    [ Upstream commit 5afeef2366db14587b65558bbfd5a067542e07fb ]
    
    Fix NULL-pointer dereference in open() should the device lack the
    expected endpoints:
    
    Unable to handle kernel NULL pointer dereference at virtual address 00000030
    ...
    PC is at oti6858_open+0x30/0x1d0 [oti6858]
    
    Note that a missing interrupt-in endpoint would have caused open() to
    fail.
    
    Fixes: 49cdee0ed0fc ("USB: oti6858 usb-serial driver (in Nokia CA-42
    cable)")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit be501013380acd5c52b2f541874e0bdf4feaa451
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Jan 3 16:39:58 2017 +0100

    USB: serial: omninet: fix NULL-derefs at open and disconnect
    
    [ Upstream commit a5bc01949e3b19d8a23b5eabc6fc71bb50dc820e ]
    
    Fix NULL-pointer dereferences at open() and disconnect() should the
    device lack the expected bulk-out endpoints:
    
    Unable to handle kernel NULL pointer dereference at virtual address 000000b4
    ...
    [c0170ff0>] (__lock_acquire) from [<c0172f00>] (lock_acquire+0x108/0x264)
    [<c0172f00>] (lock_acquire) from [<c06a5090>] (_raw_spin_lock_irqsave+0x58/0x6c)
    [<c06a5090>] (_raw_spin_lock_irqsave) from [<c0470684>] (tty_port_tty_set+0x28/0xa4)
    [<c0470684>] (tty_port_tty_set) from [<bf08d384>] (omninet_open+0x30/0x40 [omninet])
    [<bf08d384>] (omninet_open [omninet]) from [<bf07c118>] (serial_port_activate+0x68/0x98 [usbserial])
    
    Unable to handle kernel NULL pointer dereference at virtual address 00000234
    ...
    [<bf01f418>] (omninet_disconnect [omninet]) from [<bf0016c0>] (usb_serial_disconnect+0xe4/0x100 [usbserial])
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 98ca459c07be5d18cb07a900e0deb2ca9da0752e
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Jan 3 16:39:55 2017 +0100

    USB: serial: mos7840: fix NULL-deref at open
    
    [ Upstream commit 5c75633ef751dd4cd8f443dc35152c1ae563162e ]
    
    Fix NULL-pointer dereference in open() should the device lack the
    expected endpoints:
    
    Unable to handle kernel NULL pointer dereference at virtual address 00000030
    ...
    PC is at mos7840_open+0x88/0x8dc [mos7840]
    
    Note that we continue to treat the interrupt-in endpoint as optional for
    now.
    
    Fixes: 3f5429746d91 ("USB: Moschip 7840 USB-Serial Driver")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 019f8122171eab7d79a5994d9e3ba158b57b64c6
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Jan 3 16:39:53 2017 +0100

    USB: serial: mos7720: fix parallel probe
    
    [ Upstream commit fde1faf872ed86d88e245191bc15a8e57368cd1c ]
    
    A static usb-serial-driver structure that is used to initialise the
    interrupt URB was modified during probe depending on the currently
    probed device type, something which could break a parallel probe of a
    device of a different type.
    
    Fix this up by overriding the default completion callback for MCS7715
    devices in attach() instead. We may want to use two usb-serial driver
    instances for the two types later.
    
    Fixes: fb088e335d78 ("USB: serial: add support for serial port on the
    moschip 7715")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit e53241374417e0ca82fc0623a681e6f20c94d6d2
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Jan 3 16:39:52 2017 +0100

    USB: serial: mos7720: fix parport use-after-free on probe errors
    
    [ Upstream commit 75dd211e773afcbc264677b0749d1cf7d937ab2d ]
    
    Do not submit the interrupt URB until after the parport has been
    successfully registered to avoid another use-after-free in the
    completion handler when accessing the freed parport private data in case
    of a racing completion.
    
    Fixes: b69578df7e98 ("USB: usbserial: mos7720: add support for parallel
    port on moschip 7715")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 63009c59f271c846b44381b75f7de37cf677b463
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Jan 3 16:39:51 2017 +0100

    USB: serial: mos7720: fix use-after-free on probe errors
    
    [ Upstream commit 91a1ff4d53c5184d383d0baeeaeab6f9736f2ff3 ]
    
    The interrupt URB was submitted on probe but never stopped on probe
    errors. This can lead to use-after-free issues in the completion
    handler when accessing the freed usb-serial struct:
    
    Unable to handle kernel paging request at virtual address 6b6b6be7
    ...
    [<bf052e70>] (mos7715_interrupt_callback [mos7720]) from [<c052a894>] (__usb_hcd_giveback_urb+0x80/0x140)
    [<c052a894>] (__usb_hcd_giveback_urb) from [<c052a9a4>] (usb_hcd_giveback_urb+0x50/0x138)
    [<c052a9a4>] (usb_hcd_giveback_urb) from [<c0550684>] (musb_giveback+0xc8/0x1cc)
    
    Fixes: b69578df7e98 ("USB: usbserial: mos7720: add support for parallel
    port on moschip 7715")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 51ecc07fe3a6e15402e284630eae71648019a83a
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Jan 3 16:39:50 2017 +0100

    USB: serial: mos7720: fix NULL-deref at open
    
    [ Upstream commit b05aebc25fdc5aeeac3ee29f0dc9f58dd07c13cc ]
    
    Fix NULL-pointer dereference at port open if a device lacks the expected
    bulk in and out endpoints.
    
    Unable to handle kernel NULL pointer dereference at virtual address 00000030
    ...
    [<bf071c20>] (mos7720_open [mos7720]) from [<bf0490e0>] (serial_port_activate+0x68/0x98 [usbserial])
    [<bf0490e0>] (serial_port_activate [usbserial]) from [<c0470ca4>] (tty_port_open+0x9c/0xe8)
    [<c0470ca4>] (tty_port_open) from [<bf049d98>] (serial_open+0x48/0x6c [usbserial])
    [<bf049d98>] (serial_open [usbserial]) from [<c0469178>] (tty_open+0xcc/0x5cc)
    
    Fixes: 0f64478cbc7a ("USB: add USB serial mos7720 driver")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit d6e7aa701630922fc782e207d82e3caf0a2a9ea3
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Jan 3 16:39:49 2017 +0100

    USB: serial: kobil_sct: fix NULL-deref in write
    
    [ Upstream commit 21ce57840243c7b70fbc1ebd3dceeb70bb6e9e09 ]
    
    Fix NULL-pointer dereference in write() should the device lack the
    expected interrupt-out endpoint:
    
    Unable to handle kernel NULL pointer dereference at virtual address 00000054
    ...
    PC is at kobil_write+0x144/0x2a0 [kobil_sct]
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 77c5492b11f6c0f075c3f09e3a10874a4de3e5db
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Jan 3 16:39:48 2017 +0100

    USB: serial: keyspan_pda: verify endpoints at probe
    
    [ Upstream commit 5d9b0f859babe96175cd33d7162a9463a875ffde ]
    
    Check for the expected endpoints in attach() and fail loudly if not
    present.
    
    Note that failing to do this appears to be benign since da280e348866
    ("USB: keyspan_pda: clean up write-urb busy handling") which prevents a
    NULL-pointer dereference in write() by never marking a non-existent
    write-urb as free.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Cc: stable <stable@vger.kernel.org>     # < v3.3
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 276aae5b819e600ad678ee785f5df6d524cdb238
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Jan 3 16:39:47 2017 +0100

    USB: serial: iuu_phoenix: fix NULL-deref at open
    
    [ Upstream commit 90507d54f712d81b74815ef3a4bbb555cd9fab2f ]
    
    Fix NULL-pointer dereference at open should the device lack a bulk-in or
    bulk-out endpoint:
    
    Unable to handle kernel NULL pointer dereference at virtual address 00000030
    ...
    PC is at iuu_open+0x78/0x59c [iuu_phoenix]
    
    Fixes: 07c3b1a10016 ("USB: remove broken usb-serial num_endpoints
    check")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit fe4362588d860721861862159e0d5f18d6ea6283
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Jan 3 16:39:43 2017 +0100

    USB: serial: io_ti: fix NULL-deref at open
    
    [ Upstream commit a323fefc6f5079844dc62ffeb54f491d0242ca35 ]
    
    Fix NULL-pointer dereference when clearing halt at open should a
    malicious device lack the expected endpoints when in download mode.
    
    Unable to handle kernel NULL pointer dereference at virtual address 00000030
    ...
    [<bf011ed8>] (edge_open [io_ti]) from [<bf000118>] (serial_port_activate+0x68/0x98 [usbserial])
    [<bf000118>] (serial_port_activate [usbserial]) from [<c0470ca4>] (tty_port_open+0x9c/0xe8)
    [<c0470ca4>] (tty_port_open) from [<bf000da0>] (serial_open+0x48/0x6c [usbserial])
    [<bf000da0>] (serial_open [usbserial]) from [<c0469178>] (tty_open+0xcc/0x5cc)
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 611bc0f4e09f4f84ec5063826c1ee016ce67279f
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Jan 3 16:39:42 2017 +0100

    USB: serial: io_edgeport: fix NULL-deref at open
    
    [ Upstream commit 0dd408425eb21ddf26a692b3c8044c9e7d1a7948 ]
    
    Fix NULL-pointer dereference when initialising URBs at open should a
    non-EPIC device lack a bulk-in or interrupt-in endpoint.
    
    Unable to handle kernel NULL pointer dereference at virtual address 00000028
    ...
    PC is at edge_open+0x24c/0x3e8 [io_edgeport]
    
    Note that the EPIC-device probe path has the required sanity checks so
    this makes those checks partially redundant.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 63d2b06681c38035ae19709985bad210db03d89e
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Jan 3 16:39:41 2017 +0100

    USB: serial: garmin_gps: fix memory leak on failed URB submit
    
    [ Upstream commit c4ac4496e835b78a45dfbf74f6173932217e4116 ]
    
    Make sure to free the URB transfer buffer in case submission fails (e.g.
    due to a disconnect).
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 028643e891d1b052b293ebc403bf8e541cfae8b7
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Jan 3 16:39:40 2017 +0100

    USB: serial: cyberjack: fix NULL-deref at open
    
    [ Upstream commit 3dca01114dcecb1cf324534cd8d75fd1306a516b ]
    
    Fix NULL-pointer dereference when clearing halt at open should the device
    lack a bulk-out endpoint.
    
    Unable to handle kernel NULL pointer dereference at virtual address 00000030
    ...
    PC is at cyberjack_open+0x40/0x9c [cyberjack]
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 8e77b808bd129e57622a9f633be1aa85be76ed8b
Author: Wan Ahmad Zainie <wan.ahmad.zainie.wan.mohamad@intel.com>
Date:   Tue Jan 3 18:28:52 2017 +0200

    usb: xhci: apply XHCI_PME_STUCK_QUIRK to Intel Apollo Lake
    
    [ Upstream commit 6c97cfc1a097b1e0786c836e92b7a72b4d031e25 ]
    
    Intel Apollo Lake also requires XHCI_PME_STUCK_QUIRK.
    Adding its PCI ID to quirk.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Wan Ahmad Zainie <wan.ahmad.zainie.wan.mohamad@intel.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 18ee106457587d2b14f6a78b0f8ca33651c63886
Author: Lu Baolu <baolu.lu@linux.intel.com>
Date:   Tue Jan 3 18:28:49 2017 +0200

    usb: xhci: hold lock over xhci_abort_cmd_ring()
    
    [ Upstream commit 4dea70778c0f48b4385c7720c363ec8d37a401b4 ]
    
    In command timer function, xhci_handle_command_timeout(), xhci->lock
    is unlocked before call into xhci_abort_cmd_ring(). This might cause
    race between the timer function and the event handler.
    
    The xhci_abort_cmd_ring() function sets the CMD_RING_ABORT bit in the
    command register and polling it until the setting takes effect. A stop
    command ring event might be handled between writing the abort bit and
    polling for it. The event handler will restart the command ring, which
    causes the failure of polling, and we ever believed that we failed to
    stop it.
    
    As a bonus, this also fixes some issues of calling functions without
    locking in xhci_handle_command_timeout().
    
    Cc: <stable@vger.kernel.org> # 3.7+
    Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit af7f5bf2903a9cd2865326f5b836890ef84433f4
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Tue Jan 3 18:28:48 2017 +0200

    xhci: Handle command completion and timeout race
    
    [ Upstream commit a5a1b9514154437aa1ed35c291191f82fd3e941a ]
    
    If we get a command completion event at the same time as the command
    timeout work starts on another cpu we might end up aborting the wrong
    command.
    
    If the command completion takes the xhci lock before the timeout work, it
    will handle the command, pick the next command, mark it as current_cmd, and
    re-queue the timeout work. When the timeout work finally gets the lock
    It will start aborting the wrong command.
    
    This case can be resolved by checking if the timeout work is pending inside
    the timeout function itself. A new timeout work can only be pending if the
    command completed and a new command was queued.
    
    If there are no more commands pending then command completion will set
    the current_cmd to NULL, which is already handled in the timeout work.
    
    Cc: <stable@vger.kernel.org>
    Reported-by: Baolin Wang <baolin.wang@linaro.org>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit adae87116ab2a54f9ac8eca0aa6f4262ec54184b
Author: Baolin Wang <baolin.wang@linaro.org>
Date:   Tue Jan 3 18:28:47 2017 +0200

    usb: host: xhci: Fix possible wild pointer when handling abort command
    
    [ Upstream commit 2a7cfdf37b7c08ac29df4c62ea5ccb01474b6597 ]
    
    When current command was supposed to be aborted, host will free the command
    in handle_cmd_completion() function. But it might be still referenced by
    xhci->current_cmd, which need to set NULL.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Baolin Wang <baolin.wang@linaro.org>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 073dd4e9fec1e9fbedbc5b6239183134f849933c
Author: Lu Baolu <baolu.lu@linux.intel.com>
Date:   Tue Jan 3 18:28:46 2017 +0200

    usb: xhci: fix possible wild pointer
    
    [ Upstream commit 2b985467371a58ae44d76c7ba12b0951fee6ed98 ]
    
    handle_cmd_completion() frees a command structure which might be still
    referenced by xhci->current_cmd.
    This might cause problem when xhci->current_cmd is accessed after that.
    
    A real-life case could be like this. The host takes a very long time to
    respond to a command, and the command timer is fired at the same time
    when the command completion event arrives. The command completion
    handler frees xhci->current_cmd before the timer function can grab
    xhci->lock. Afterward, timer function grabs the lock and go ahead with
    checking and setting members of xhci->current_cmd.
    
    Cc: <stable@vger.kernel.org> # v3.16+
    Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 4b6ac3407b1e6da7c285da3718b4e0fcaef8eda0
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Tue Jan 3 18:28:43 2017 +0200

    xhci: free xhci virtual devices with leaf nodes first
    
    [ Upstream commit ee8665e28e8d90ce69d4abe5a469c14a8707ae0e ]
    
    the tt_info provided by a HS hub might be in use to by a child device
    Make sure we free the devices in the correct order.
    
    This is needed in special cases such as when xhci controller is
    reset when resuming from hibernate, and all virt_devices are freed.
    
    Also free the virt_devices starting from max slot_id as children
    more commonly have higher slot_id than parent.
    
    CC: <stable@vger.kernel.org>
    Reported-by: Guenter Roeck <groeck@chromium.org>
    Tested-by: Guenter Roeck <groeck@chromium.org>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 3e88ba68952a30721133e517c8b277bbde2651d7
Author: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Date:   Wed Dec 7 16:22:16 2016 +0100

    ARM: davinci: da850: don't add emac clock to lookup table twice
    
    [ Upstream commit ef37427ac5677331145ab27a17e6f5f1b43f0c11 ]
    
    Similarly to the aemif clock - this screws up the linked list of clock
    children. Create a separate clock for mdio inheriting the rate from
    emac_clk.
    
    Cc: <stable@vger.kernel.org> # 3.12.x-
    Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
    [nsekhar@ti.com: add a comment over mdio_clk to explaing its existence +
                     commit headline updates]
    Signed-off-by: Sekhar Nori <nsekhar@ti.com>
    
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 4848f01b579b748572c1033eed383b57af137151
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Fri Dec 9 15:24:24 2016 -0500

    USB: gadgetfs: fix checks of wTotalLength in config descriptors
    
    [ Upstream commit 1c069b057dcf64fada952eaa868d35f02bb0cfc2 ]
    
    Andrey Konovalov's fuzz testing of gadgetfs showed that we should
    improve the driver's checks for valid configuration descriptors passed
    in by the user.  In particular, the driver needs to verify that the
    wTotalLength value in the descriptor is not too short (smaller
    than USB_DT_CONFIG_SIZE).  And the check for whether wTotalLength is
    too large has to be changed, because the driver assumes there is
    always enough room remaining in the buffer to hold a device descriptor
    (at least USB_DT_DEVICE_SIZE bytes).
    
    This patch adds the additional check and fixes the existing check.  It
    may do a little more than strictly necessary, but one extra check
    won't hurt.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    CC: Andrey Konovalov <andreyknvl@google.com>
    CC: <stable@vger.kernel.org>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit fdd21c63dc9fd3826b097eeba2627a93af1b094c
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Fri Dec 9 15:18:43 2016 -0500

    USB: gadgetfs: fix use-after-free bug
    
    [ Upstream commit add333a81a16abbd4f106266a2553677a165725f ]
    
    Andrey Konovalov reports that fuzz testing with syzkaller causes a
    KASAN use-after-free bug report in gadgetfs:
    
    BUG: KASAN: use-after-free in gadgetfs_setup+0x208a/0x20e0 at addr ffff88003dfe5bf2
    Read of size 2 by task syz-executor0/22994
    CPU: 3 PID: 22994 Comm: syz-executor0 Not tainted 4.9.0-rc7+ #16
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
     ffff88006df06a18 ffffffff81f96aba ffffffffe0528500 1ffff1000dbe0cd6
     ffffed000dbe0cce ffff88006df068f0 0000000041b58ab3 ffffffff8598b4c8
     ffffffff81f96828 1ffff1000dbe0ccd ffff88006df06708 ffff88006df06748
    Call Trace:
     <IRQ> [  201.343209]  [<     inline     >] __dump_stack lib/dump_stack.c:15
     <IRQ> [  201.343209]  [<ffffffff81f96aba>] dump_stack+0x292/0x398 lib/dump_stack.c:51
     [<ffffffff817e4dec>] kasan_object_err+0x1c/0x70 mm/kasan/report.c:159
     [<     inline     >] print_address_description mm/kasan/report.c:197
     [<ffffffff817e5080>] kasan_report_error+0x1f0/0x4e0 mm/kasan/report.c:286
     [<     inline     >] kasan_report mm/kasan/report.c:306
     [<ffffffff817e562a>] __asan_report_load_n_noabort+0x3a/0x40 mm/kasan/report.c:337
     [<     inline     >] config_buf drivers/usb/gadget/legacy/inode.c:1298
     [<ffffffff8322c8fa>] gadgetfs_setup+0x208a/0x20e0 drivers/usb/gadget/legacy/inode.c:1368
     [<ffffffff830fdcd0>] dummy_timer+0x11f0/0x36d0 drivers/usb/gadget/udc/dummy_hcd.c:1858
     [<ffffffff814807c1>] call_timer_fn+0x241/0x800 kernel/time/timer.c:1308
     [<     inline     >] expire_timers kernel/time/timer.c:1348
     [<ffffffff81482de6>] __run_timers+0xa06/0xec0 kernel/time/timer.c:1641
     [<ffffffff814832c1>] run_timer_softirq+0x21/0x80 kernel/time/timer.c:1654
     [<ffffffff84f4af8b>] __do_softirq+0x2fb/0xb63 kernel/softirq.c:284
    
    The cause of the bug is subtle.  The dev_config() routine gets called
    twice by the fuzzer.  The first time, the user data contains both a
    full-speed configuration descriptor and a high-speed config
    descriptor, causing dev->hs_config to be set.  But it also contains an
    invalid device descriptor, so the buffer containing the descriptors is
    deallocated and dev_config() returns an error.
    
    The second time dev_config() is called, the user data contains only a
    full-speed config descriptor.  But dev->hs_config still has the stale
    pointer remaining from the first call, causing the routine to think
    that there is a valid high-speed config.  Later on, when the driver
    dereferences the stale pointer to copy that descriptor, we get a
    use-after-free access.
    
    The fix is simple: Clear dev->hs_config if the passed-in data does not
    contain a high-speed config descriptor.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Tested-by: Andrey Konovalov <andreyknvl@google.com>
    CC: <stable@vger.kernel.org>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 6cd527a32740e59baca3095a0928a9eb92ec47cc
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Fri Dec 9 15:17:46 2016 -0500

    USB: gadgetfs: fix unbounded memory allocation bug
    
    [ Upstream commit faab50984fe6636e616c7cc3d30308ba391d36fd ]
    
    Andrey Konovalov reports that fuzz testing with syzkaller causes a
    KASAN warning in gadgetfs:
    
    BUG: KASAN: slab-out-of-bounds in dev_config+0x86f/0x1190 at addr ffff88003c47e160
    Write of size 65537 by task syz-executor0/6356
    CPU: 3 PID: 6356 Comm: syz-executor0 Not tainted 4.9.0-rc7+ #19
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
     ffff88003c107ad8 ffffffff81f96aba ffffffff3dc11ef0 1ffff10007820eee
     ffffed0007820ee6 ffff88003dc11f00 0000000041b58ab3 ffffffff8598b4c8
     ffffffff81f96828 ffffffff813fb4a0 ffff88003b6eadc0 ffff88003c107738
    Call Trace:
     [<     inline     >] __dump_stack lib/dump_stack.c:15
     [<ffffffff81f96aba>] dump_stack+0x292/0x398 lib/dump_stack.c:51
     [<ffffffff817e4dec>] kasan_object_err+0x1c/0x70 mm/kasan/report.c:159
     [<     inline     >] print_address_description mm/kasan/report.c:197
     [<ffffffff817e5080>] kasan_report_error+0x1f0/0x4e0 mm/kasan/report.c:286
     [<ffffffff817e5705>] kasan_report+0x35/0x40 mm/kasan/report.c:306
     [<     inline     >] check_memory_region_inline mm/kasan/kasan.c:308
     [<ffffffff817e3fb9>] check_memory_region+0x139/0x190 mm/kasan/kasan.c:315
     [<ffffffff817e4044>] kasan_check_write+0x14/0x20 mm/kasan/kasan.c:326
     [<     inline     >] copy_from_user arch/x86/include/asm/uaccess.h:689
     [<     inline     >] ep0_write drivers/usb/gadget/legacy/inode.c:1135
     [<ffffffff83228caf>] dev_config+0x86f/0x1190 drivers/usb/gadget/legacy/inode.c:1759
     [<ffffffff817fdd55>] __vfs_write+0x5d5/0x760 fs/read_write.c:510
     [<ffffffff817ff650>] vfs_write+0x170/0x4e0 fs/read_write.c:560
     [<     inline     >] SYSC_write fs/read_write.c:607
     [<ffffffff81803a5b>] SyS_write+0xfb/0x230 fs/read_write.c:599
     [<ffffffff84f47ec1>] entry_SYSCALL_64_fastpath+0x1f/0xc2
    
    Indeed, there is a comment saying that the value of len is restricted
    to a 16-bit integer, but the code doesn't actually do this.
    
    This patch fixes the warning.  It replaces the comment with a
    computation that forces the amount of data copied from the user in
    ep0_write() to be no larger than the wLength size for the control
    transfer, which is a 16-bit quantity.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Tested-by: Andrey Konovalov <andreyknvl@google.com>
    CC: <stable@vger.kernel.org>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 709c49864a119e6904fd4e529c87295563b35e5a
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Tue Dec 6 08:36:29 2016 +0100

    usb: gadgetfs: restrict upper bound on device configuration size
    
    [ Upstream commit 0994b0a257557e18ee8f0b7c5f0f73fe2b54eec1 ]
    
    Andrey Konovalov reported that we were not properly checking the upper
    limit before of a device configuration size before calling
    memdup_user(), which could cause some problems.
    
    So set the upper limit to PAGE_SIZE * 4, which should be good enough for
    all devices.
    
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit dde808bfc80cfc0824f6a7d0f21ea79d9b47f923
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Wed Dec 14 14:55:56 2016 -0500

    USB: dummy-hcd: fix bug in stop_activity (handle ep0)
    
    [ Upstream commit bcdbeb844773333d2d1c08004f3b3e25921040e5 ]
    
    The stop_activity() routine in dummy-hcd is supposed to unlink all
    active requests for every endpoint, among other things.  But it
    doesn't handle ep0.  As a result, fuzz testing can generate a WARNING
    like the following:
    
    WARNING: CPU: 0 PID: 4410 at drivers/usb/gadget/udc/dummy_hcd.c:672 dummy_free_request+0x153/0x170
    Modules linked in:
    CPU: 0 PID: 4410 Comm: syz-executor Not tainted 4.9.0-rc7+ #32
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
     ffff88006a64ed10 ffffffff81f96b8a ffffffff41b58ab3 1ffff1000d4c9d35
     ffffed000d4c9d2d ffff880065f8ac00 0000000041b58ab3 ffffffff8598b510
     ffffffff81f968f8 0000000041b58ab3 ffffffff859410e0 ffffffff813f0590
    Call Trace:
     [<     inline     >] __dump_stack lib/dump_stack.c:15
     [<ffffffff81f96b8a>] dump_stack+0x292/0x398 lib/dump_stack.c:51
     [<ffffffff812b808f>] __warn+0x19f/0x1e0 kernel/panic.c:550
     [<ffffffff812b831c>] warn_slowpath_null+0x2c/0x40 kernel/panic.c:585
     [<ffffffff830fcb13>] dummy_free_request+0x153/0x170 drivers/usb/gadget/udc/dummy_hcd.c:672
     [<ffffffff830ed1b0>] usb_ep_free_request+0xc0/0x420 drivers/usb/gadget/udc/core.c:195
     [<ffffffff83225031>] gadgetfs_unbind+0x131/0x190 drivers/usb/gadget/legacy/inode.c:1612
     [<ffffffff830ebd8f>] usb_gadget_remove_driver+0x10f/0x2b0 drivers/usb/gadget/udc/core.c:1228
     [<ffffffff830ec084>] usb_gadget_unregister_driver+0x154/0x240 drivers/usb/gadget/udc/core.c:1357
    
    This patch fixes the problem by iterating over all the endpoints in
    the driver's ep array instead of iterating over the gadget's ep_list,
    which explicitly leaves out ep0.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    CC: <stable@vger.kernel.org>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 6c0b4029be49a650385c4252a713bca71beabf97
Author: Krzysztof Opasiak <k.opasiak@samsung.com>
Date:   Tue Dec 20 19:52:16 2016 +0100

    usb: gadget: composite: Test get_alt() presence instead of set_alt()
    
    [ Upstream commit 7e4da3fcf7c9fe042f2f7cb7bf23861a899b4a8f ]
    
    By convention (according to doc) if function does not provide
    get_alt() callback composite framework should assume that it has only
    altsetting 0 and should respond with error if host tries to set
    other one.
    
    After commit dd4dff8b035f ("USB: composite: Fix bug: should test
    set_alt function pointer before use it")
    we started checking set_alt() callback instead of get_alt().
    This check is useless as we check if set_alt() is set inside
    usb_add_function() and fail if it's NULL.
    
    Let's fix this check and move comment about why we check the get
    method instead of set a little bit closer to prevent future false
    fixes.
    
    Fixes: dd4dff8b035f ("USB: composite: Fix bug: should test set_alt function pointer before use it")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit df6a1fb20b5ce6d8f7445c45fd3c82b0fca4c9ca
Author: Felipe Balbi <felipe.balbi@linux.intel.com>
Date:   Tue Dec 20 14:14:40 2016 +0200

    usb: dwc3: gadget: always unmap EP0 requests
    
    [ Upstream commit d62145929992f331fdde924d5963ab49588ccc7d ]
    
    commit 0416e494ce7d ("usb: dwc3: ep0: correct cache
    sync issue in case of ep0_bounced") introduced a bug
    where we would leak DMA resources which would cause
    us to starve the system of them resulting in failing
    DMA transfers.
    
    Fix the bug by making sure that we always unmap EP0
    requests since those are *always* mapped.
    
    Fixes: 0416e494ce7d ("usb: dwc3: ep0: correct cache
            sync issue in case of ep0_bounced")
    Cc: <stable@vger.kernel.org>
    Tested-by: Tomasz Medrek <tomaszx.medrek@intel.com>
    Reported-by: Janusz Dziedzic <januszx.dziedzic@linux.intel.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit d4000ff45d1085b2da1153a1fa1cc29e83edc312
Author: Hauke Mehrtens <hauke@hauke-m.de>
Date:   Mon Dec 5 22:14:36 2016 +0100

    mtd: nand: xway: disable module support
    
    [ Upstream commit 73529c872a189c747bdb528ce9b85b67b0e28dec ]
    
    The xway_nand driver accesses the ltq_ebu_membase symbol which is not
    exported. This also should not get exported and we should handle the
    EBU interface in a better way later. This quick fix just deactivated
    support for building as module.
    
    Fixes: 99f2b107924c ("mtd: lantiq: Add NAND support on Lantiq XWAY SoC.")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
    Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>

commit 6d2374517c06dd8ae4b478d355817563d1043317
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Mon Nov 14 18:48:07 2016 -0600

    ptrace: Capture the ptracer's creds not PT_PTRACE_CAP
    
    [ Upstream commit 64b875f7ac8a5d60a4e191479299e931ee949b67 ]
    
    When the flag PT_PTRACE_CAP was added the PTRACE_TRACEME path was
    overlooked.  This can result in incorrect behavior when an application
    like strace traces an exec of a setuid executable.
    
    Further PT_PTRACE_CAP does not have enough information for making good
    security decisions as it does not report which user namespace the
    capability is in.  This has already allowed one mistake through
    insufficient granulariy.
    
    I found this issue when I was testing another corner case of exec and
    discovered that I could not get strace to set PT_PTRACE_CAP even when
    running strace as root with a full set of caps.
    
    This change fixes the above issue with strace allowing stracing as
    root a setuid executable without disabling setuid.  More fundamentaly
    this change allows what is allowable at all times, by using the correct
    information in it's decision.
    
    Cc: stable@vger.kernel.org
    Fixes: 4214e42f96d4 ("v2.4.9.11 -> v2.4.9.12")
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>