commit 2ba480453d5acb3d9d5635358c6af84201d70939
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Apr 20 15:41:04 2016 +0900

    Linux 3.14.67

commit 5d2be8b0cc4070e28bb5ab829122cd57b7aeeb46
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sat Feb 20 14:19:34 2016 -0800

    Revert "usb: hub: do not clear BOS field during reset device"
    
    commit e5bdfd50d6f76077bf8441d130c606229e100d40 upstream.
    
    This reverts commit d8f00cd685f5c8e0def8593e520a7fef12c22407.
    
    Tony writes:
    
    This upstream commit is causing an oops:
    d8f00cd685f5 ("usb: hub: do not clear BOS field during reset device")
    
    This patch has already been included in several -stable kernels.  Here
    are the affected kernels:
    4.5.0-rc4 (current git)
    4.4.2
    4.3.6 (currently in review)
    4.1.18
    3.18.27
    3.14.61
    
    How to reproduce the problem:
    Boot kernel with slub debugging enabled (otherwise memory corruption
    will cause random oopses later instead of immediately)
    Plug in USB 3.0 disk to xhci USB 3.0 port
    dd if=/dev/sdc of=/dev/null bs=65536
    (where /dev/sdc is the USB 3.0 disk)
    Unplug USB cable while dd is still going
    Oops is immediate:
    
    Reported-by: Tony Battersby <tonyb@cybernetics.com>
    Cc: Du, Changbin <changbin.du@intel.com>
    Cc: Roger Quadros <rogerq@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5cdf1343689212304bcb841037a3bd4bab33d6cb
Author: Vladis Dronov <vdronov@redhat.com>
Date:   Mon Nov 16 15:55:11 2015 -0200

    usbvision: fix crash on detecting device with invalid configuration
    
    commit fa52bd506f274b7619955917abfde355e3d19ffe upstream.
    
    The usbvision driver crashes when a specially crafted usb device with invalid
    number of interfaces or endpoints is detected. This fix adds checks that the
    device has proper configuration expected by the driver.
    
    Reported-by: Ralf Spenneberg <ralf@spenneberg.net>
    Signed-off-by: Vladis Dronov <vdronov@redhat.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6b89cc72070b70e375d0786e19289fe31bdf385f
Author: Alexey Khoroshilov <khoroshilov@ispras.ru>
Date:   Fri Mar 27 19:39:09 2015 -0300

    usbvision: fix leak of usb_dev on failure paths in usbvision_probe()
    
    commit afd270d1a45043cef14341bcceff62ed50e8dc9a upstream.
    
    There is no usb_put_dev() on failure paths in usbvision_probe().
    
    Found by Linux Driver Verification project (linuxtesting.org).
    
    Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4e8190cf1e6f2213f76a038132e7ad19014214d4
Author: Nicolai Hähnle <nicolai.haehnle@amd.com>
Date:   Tue Mar 15 12:56:45 2016 -0500

    drm/radeon: hold reference to fences in radeon_sa_bo_new (3.17 and older)
    
    [Backport of upstream commit f6ff4f67cdf8455d0a4226eeeaf5af17c37d05eb, with
     an additional NULL pointer guard that is required for kernels 3.17 and older.
    
     To be precise, any kernel that does *not* have commit 954605ca3 "drm/radeon:
     use common fence implementation for fences, v4" requires this additional
     NULL pointer guard.]
    
    An arbitrary amount of time can pass between spin_unlock and
    radeon_fence_wait_any, so we need to ensure that nobody frees the
    fences from under us.
    
    Based on the analogous fix for amdgpu.
    
    Signed-off-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
    Reviewed-by: Christian König <christian.koenig@amd.com> (v1 + fix)
    Tested-by: Lutz Euler <lutz.euler@freenet.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8ac960dc06ca2d618c40206d8839180a5703552f
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Mon Apr 18 10:31:57 2016 +0900

    Revert bad backport of "drm/radeon: hold reference to fences in radeon_sa_bo_new"
    
    This reverts commit 50353e6f86eb2ac46ffe3cc0b9f9a11ddc8a9410, which is
    commit f6ff4f67cdf8455d0a4226eeeaf5af17c37d05eb upstream, as it was
    backported to the 3.14-stable tree incorrectly.  A correct fix will
    happen next.
    
    Reported-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
    Cc: Christian König <christian.koenig@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0caa9766ca3ad03680a539b5023163a36702728d
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Wed Mar 23 12:17:09 2016 -0400

    HID: usbhid: fix inconsistent reset/resume/reset-resume behavior
    
    commit 972e6a993f278b416a8ee3ec65475724fc36feb2 upstream.
    
    The usbhid driver has inconsistently duplicated code in its post-reset,
    resume, and reset-resume pathways.
    
    	reset-resume doesn't check HID_STARTED before trying to
    	restart the I/O queues.
    
    	resume fails to clear the HID_SUSPENDED flag if HID_STARTED
    	isn't set.
    
    	resume calls usbhid_restart_queues() with usbhid->lock held
    	and the others call it without holding the lock.
    
    The first item in particular causes a problem following a reset-resume
    if the driver hasn't started up its I/O.  URB submission fails because
    usbhid->urbin is NULL, and this triggers an unending reset-retry loop.
    
    This patch fixes the problem by creating a new subroutine,
    hid_restart_io(), to carry out all the common activities.  It also
    adds some checks that were missing in the original code:
    
    	After a reset, there's no need to clear any halted endpoints.
    
    	After a resume, if a reset is pending there's no need to
    	restart any I/O until the reset is finished.
    
    	After a resume, if the interrupt-IN endpoint is halted there's
    	no need to submit the input URB until the halt has been
    	cleared.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Daniel Fraga <fragabr@gmail.com>
    Tested-by: Daniel Fraga <fragabr@gmail.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1931344f79a1fe720c0f98ce78df3823bf3bef17
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Wed Feb 24 18:45:46 2016 +0100

    perf: Cure event->pending_disable race
    
    commit 28a967c3a2f99fa3b5f762f25cb2a319d933571b upstream.
    
    Because event_sched_out() checks event->pending_disable _before_
    actually disabling the event, it can happen that the event fires after
    it checks but before it gets disabled.
    
    This would leave event->pending_disable set and the queued irq_work
    will try and process it.
    
    However, if the event trigger was during schedule(), the event might
    have been de-scheduled by the time the irq_work runs, and
    perf_event_disable_local() will fail.
    
    Fix this by checking event->pending_disable _after_ we call
    event->pmu->del(). This depends on the latter being a compiler
    barrier, such that the compiler does not lift the load and re-creates
    the problem.
    
    Tested-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: 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: Thomas Gleixner <tglx@linutronix.de>
    Cc: dvyukov@google.com
    Cc: eranian@google.com
    Cc: oleg@redhat.com
    Cc: panand@redhat.com
    Cc: sasha.levin@oracle.com
    Cc: vince@deater.net
    Link: http://lkml.kernel.org/r/20160224174948.040469884@infradead.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ebe9c20f8d6e7b499b515ed4b3326d3faa226848
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Fri Apr 1 01:31:28 2016 -0400

    ext4: add lockdep annotations for i_data_sem
    
    commit daf647d2dd58cec59570d7698a45b98e580f2076 upstream.
    
    With the internal Quota feature, mke2fs creates empty quota inodes and
    quota usage tracking is enabled as soon as the file system is mounted.
    Since quotacheck is no longer preallocating all of the blocks in the
    quota inode that are likely needed to be written to, we are now seeing
    a lockdep false positive caused by needing to allocate a quota block
    from inside ext4_map_blocks(), while holding i_data_sem for a data
    inode.  This results in this complaint:
    
      Possible unsafe locking scenario:
    
            CPU0                    CPU1
            ----                    ----
       lock(&ei->i_data_sem);
                                    lock(&s->s_dquot.dqio_mutex);
                                    lock(&ei->i_data_sem);
       lock(&s->s_dquot.dqio_mutex);
    
    Google-Bug-Id: 27907753
    
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8fab4f52448dd8b329ef442dd67dc06dd39a3b02
Author: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Date:   Thu Mar 10 11:30:15 2016 +0900

    usb: renesas_usbhs: disable TX IRQ before starting TX DMAC transfer
    
    commit 6490865c67825277b29638e839850882600b48ec upstream.
    
    This patch adds a code to surely disable TX IRQ of the pipe before
    starting TX DMAC transfer. Otherwise, a lot of unnecessary TX IRQs
    may happen in rare cases when DMAC is used.
    
    Fixes: e73a989 ("usb: renesas_usbhs: add DMAEngine support")
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit df6e6cc0f1d4bfbce7a4e23593891bb28f55ff58
Author: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Date:   Thu Mar 10 11:30:14 2016 +0900

    usb: renesas_usbhs: avoid NULL pointer derefernce in usbhsf_pkt_handler()
    
    commit 894f2fc44f2f3f48c36c973b1123f6ab298be160 upstream.
    
    When unexpected situation happened (e.g. tx/rx irq happened while
    DMAC is used), the usbhsf_pkt_handler() was possible to cause NULL
    pointer dereference like the followings:
    
    Unable to handle kernel NULL pointer dereference at virtual address 00000000
    pgd = c0004000
    [00000000] *pgd=00000000
    Internal error: Oops: 80000007 [#1] SMP ARM
    Modules linked in: usb_f_acm u_serial g_serial libcomposite
    CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.5.0-rc6-00842-gac57066-dirty #63
    Hardware name: Generic R8A7790 (Flattened Device Tree)
    task: c0729c00 ti: c0724000 task.ti: c0724000
    PC is at 0x0
    LR is at usbhsf_pkt_handler+0xac/0x118
    pc : [<00000000>]    lr : [<c03257e0>]    psr: 60000193
    sp : c0725db8  ip : 00000000  fp : c0725df4
    r10: 00000001  r9 : 00000193  r8 : ef3ccab4
    r7 : ef3cca10  r6 : eea4586c  r5 : 00000000  r4 : ef19ceb4
    r3 : 00000000  r2 : 0000009c  r1 : c0725dc4  r0 : ef19ceb4
    
    This patch adds a condition to avoid the dereference.
    
    Fixes: e73a989 ("usb: renesas_usbhs: add DMAEngine support")
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8c755b42de3b709056b210e9e2ccde0676c713d0
Author: Michal Kazior <michal.kazior@tieto.com>
Date:   Mon Jan 25 14:43:24 2016 +0100

    mac80211: fix unnecessary frame drops in mesh fwding
    
    commit cf44012810ccdd8fd947518e965cb04b7b8498be upstream.
    
    The ieee80211_queue_stopped() expects hw queue
    number but it was given raw WMM AC number instead.
    
    This could cause frame drops and problems with
    traffic in some cases - most notably if driver
    doesn't map AC numbers to queue numbers 1:1 and
    uses ieee80211_stop_queues() and
    ieee80211_wake_queue() only without ever calling
    ieee80211_wake_queues().
    
    On ath10k it was possible to hit this problem in
    the following case:
    
      1. wlan0 uses queue 0
         (ath10k maps queues per vif)
      2. offchannel uses queue 15
      3. queues 1-14 are unused
      4. ieee80211_stop_queues()
      5. ieee80211_wake_queue(q=0)
      6. ieee80211_wake_queue(q=15)
         (other queues are not woken up because both
          driver and mac80211 know other queues are
          unused)
      7. ieee80211_rx_h_mesh_fwding()
      8. ieee80211_select_queue_80211() returns 2
      9. ieee80211_queue_stopped(q=2) returns true
     10. frame is dropped (oops!)
    
    Fixes: d3c1597b8d1b ("mac80211: fix forwarded mesh frame queue mapping")
    Signed-off-by: Michal Kazior <michal.kazior@tieto.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 59cc645a85e80ff831dbfbf65f4f9ce27914f0a0
Author: Thadeu Lima de Souza Cascardo <cascardo@redhat.com>
Date:   Fri Apr 1 17:17:50 2016 -0300

    ip6_tunnel: set rtnl_link_ops before calling register_netdevice
    
    [ Upstream commit b6ee376cb0b7fb4e7e07d6cd248bd40436fb9ba6 ]
    
    When creating an ip6tnl tunnel with ip tunnel, rtnl_link_ops is not set
    before ip6_tnl_create2 is called. When register_netdevice is called, there
    is no linkinfo attribute in the NEWLINK message because of that.
    
    Setting rtnl_link_ops before calling register_netdevice fixes that.
    
    Fixes: 0b112457229d ("ip6tnl: add support of link creation via rtnl")
    Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@redhat.com>
    Acked-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 80f9b401a79b6c932a042e0fc98ec21801d325bd
Author: Haishuang Yan <yanhaishuang@cmss.chinamobile.com>
Date:   Sun Apr 3 22:09:24 2016 +0800

    ipv6: l2tp: fix a potential issue in l2tp_ip6_recv
    
    [ Upstream commit be447f305494e019dfc37ea4cdf3b0e4200b4eba ]
    
    pskb_may_pull() can change skb->data, so we have to load ptr/optr at the
    right place.
    
    Signed-off-by: Haishuang Yan <yanhaishuang@cmss.chinamobile.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0123df6309868720d6bf9b6da74f612151766637
Author: Haishuang Yan <yanhaishuang@cmss.chinamobile.com>
Date:   Sun Apr 3 22:09:23 2016 +0800

    ipv4: l2tp: fix a potential issue in l2tp_ip_recv
    
    [ Upstream commit 5745b8232e942abd5e16e85fa9b27cc21324acf0 ]
    
    pskb_may_pull() can change skb->data, so we have to load ptr/optr at the
    right place.
    
    Signed-off-by: Haishuang Yan <yanhaishuang@cmss.chinamobile.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 50474f1f92b45dac3c63c079698e37f83d3d5084
Author: Bjørn Mork <bjorn@mork.no>
Date:   Mon Mar 28 22:38:16 2016 +0200

    qmi_wwan: add "D-Link DWM-221 B1" device id
    
    [ Upstream commit e84810c7b85a2d7897797b3ad3e879168a8e032a ]
    
    Thomas reports:
    "Windows:
    
    00 diagnostics
    01 modem
    02 at-port
    03 nmea
    04 nic
    
    Linux:
    
    T:  Bus=02 Lev=01 Prnt=01 Port=03 Cnt=01 Dev#=  4 Spd=480 MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=2001 ProdID=7e19 Rev=02.32
    S:  Manufacturer=Mobile Connect
    S:  Product=Mobile Connect
    S:  SerialNumber=0123456789ABCDEF
    C:  #Ifs= 6 Cfg#= 1 Atr=a0 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    I:  If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    I:  If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    I:  If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
    I:  If#= 5 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage"
    
    Reported-by: Thomas Schäfer <tschaefer@t-online.de>
    Signed-off-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2d6c3459438d6c0bab867b79c35db7e154648ad1
Author: Guillaume Nault <g.nault@alphalink.fr>
Date:   Wed Mar 23 16:38:55 2016 +0100

    ppp: take reference on channels netns
    
    [ Upstream commit 1f461dcdd296eecedaffffc6bae2bfa90bd7eb89 ]
    
    Let channels hold a reference on their network namespace.
    Some channel types, like ppp_async and ppp_synctty, can have their
    userspace controller running in a different namespace. Therefore they
    can't rely on them to preclude their netns from being removed from
    under them.
    
    ==================================================================
    BUG: KASAN: use-after-free in ppp_unregister_channel+0x372/0x3a0 at
    addr ffff880064e217e0
    Read of size 8 by task syz-executor/11581
    =============================================================================
    BUG net_namespace (Not tainted): kasan: bad access detected
    -----------------------------------------------------------------------------
    
    Disabling lock debugging due to kernel taint
    INFO: Allocated in copy_net_ns+0x6b/0x1a0 age=92569 cpu=3 pid=6906
    [<      none      >] ___slab_alloc+0x4c7/0x500 kernel/mm/slub.c:2440
    [<      none      >] __slab_alloc+0x4c/0x90 kernel/mm/slub.c:2469
    [<     inline     >] slab_alloc_node kernel/mm/slub.c:2532
    [<     inline     >] slab_alloc kernel/mm/slub.c:2574
    [<      none      >] kmem_cache_alloc+0x23a/0x2b0 kernel/mm/slub.c:2579
    [<     inline     >] kmem_cache_zalloc kernel/include/linux/slab.h:597
    [<     inline     >] net_alloc kernel/net/core/net_namespace.c:325
    [<      none      >] copy_net_ns+0x6b/0x1a0 kernel/net/core/net_namespace.c:360
    [<      none      >] create_new_namespaces+0x2f6/0x610 kernel/kernel/nsproxy.c:95
    [<      none      >] copy_namespaces+0x297/0x320 kernel/kernel/nsproxy.c:150
    [<      none      >] copy_process.part.35+0x1bf4/0x5760 kernel/kernel/fork.c:1451
    [<     inline     >] copy_process kernel/kernel/fork.c:1274
    [<      none      >] _do_fork+0x1bc/0xcb0 kernel/kernel/fork.c:1723
    [<     inline     >] SYSC_clone kernel/kernel/fork.c:1832
    [<      none      >] SyS_clone+0x37/0x50 kernel/kernel/fork.c:1826
    [<      none      >] entry_SYSCALL_64_fastpath+0x16/0x7a kernel/arch/x86/entry/entry_64.S:185
    
    INFO: Freed in net_drop_ns+0x67/0x80 age=575 cpu=2 pid=2631
    [<      none      >] __slab_free+0x1fc/0x320 kernel/mm/slub.c:2650
    [<     inline     >] slab_free kernel/mm/slub.c:2805
    [<      none      >] kmem_cache_free+0x2a0/0x330 kernel/mm/slub.c:2814
    [<     inline     >] net_free kernel/net/core/net_namespace.c:341
    [<      none      >] net_drop_ns+0x67/0x80 kernel/net/core/net_namespace.c:348
    [<      none      >] cleanup_net+0x4e5/0x600 kernel/net/core/net_namespace.c:448
    [<      none      >] process_one_work+0x794/0x1440 kernel/kernel/workqueue.c:2036
    [<      none      >] worker_thread+0xdb/0xfc0 kernel/kernel/workqueue.c:2170
    [<      none      >] kthread+0x23f/0x2d0 kernel/drivers/block/aoe/aoecmd.c:1303
    [<      none      >] ret_from_fork+0x3f/0x70 kernel/arch/x86/entry/entry_64.S:468
    INFO: Slab 0xffffea0001938800 objects=3 used=0 fp=0xffff880064e20000
    flags=0x5fffc0000004080
    INFO: Object 0xffff880064e20000 @offset=0 fp=0xffff880064e24200
    
    CPU: 1 PID: 11581 Comm: syz-executor Tainted: G    B           4.4.0+
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
    rel-1.8.2-0-g33fbe13 by qemu-project.org 04/01/2014
     00000000ffffffff ffff8800662c7790 ffffffff8292049d ffff88003e36a300
     ffff880064e20000 ffff880064e20000 ffff8800662c77c0 ffffffff816f2054
     ffff88003e36a300 ffffea0001938800 ffff880064e20000 0000000000000000
    Call Trace:
     [<     inline     >] __dump_stack kernel/lib/dump_stack.c:15
     [<ffffffff8292049d>] dump_stack+0x6f/0xa2 kernel/lib/dump_stack.c:50
     [<ffffffff816f2054>] print_trailer+0xf4/0x150 kernel/mm/slub.c:654
     [<ffffffff816f875f>] object_err+0x2f/0x40 kernel/mm/slub.c:661
     [<     inline     >] print_address_description kernel/mm/kasan/report.c:138
     [<ffffffff816fb0c5>] kasan_report_error+0x215/0x530 kernel/mm/kasan/report.c:236
     [<     inline     >] kasan_report kernel/mm/kasan/report.c:259
     [<ffffffff816fb4de>] __asan_report_load8_noabort+0x3e/0x40 kernel/mm/kasan/report.c:280
     [<     inline     >] ? ppp_pernet kernel/include/linux/compiler.h:218
     [<ffffffff83ad71b2>] ? ppp_unregister_channel+0x372/0x3a0 kernel/drivers/net/ppp/ppp_generic.c:2392
     [<     inline     >] ppp_pernet kernel/include/linux/compiler.h:218
     [<ffffffff83ad71b2>] ppp_unregister_channel+0x372/0x3a0 kernel/drivers/net/ppp/ppp_generic.c:2392
     [<     inline     >] ? ppp_pernet kernel/drivers/net/ppp/ppp_generic.c:293
     [<ffffffff83ad6f26>] ? ppp_unregister_channel+0xe6/0x3a0 kernel/drivers/net/ppp/ppp_generic.c:2392
     [<ffffffff83ae18f3>] ppp_asynctty_close+0xa3/0x130 kernel/drivers/net/ppp/ppp_async.c:241
     [<ffffffff83ae1850>] ? async_lcp_peek+0x5b0/0x5b0 kernel/drivers/net/ppp/ppp_async.c:1000
     [<ffffffff82c33239>] tty_ldisc_close.isra.1+0x99/0xe0 kernel/drivers/tty/tty_ldisc.c:478
     [<ffffffff82c332c0>] tty_ldisc_kill+0x40/0x170 kernel/drivers/tty/tty_ldisc.c:744
     [<ffffffff82c34943>] tty_ldisc_release+0x1b3/0x260 kernel/drivers/tty/tty_ldisc.c:772
     [<ffffffff82c1ef21>] tty_release+0xac1/0x13e0 kernel/drivers/tty/tty_io.c:1901
     [<ffffffff82c1e460>] ? release_tty+0x320/0x320 kernel/drivers/tty/tty_io.c:1688
     [<ffffffff8174de36>] __fput+0x236/0x780 kernel/fs/file_table.c:208
     [<ffffffff8174e405>] ____fput+0x15/0x20 kernel/fs/file_table.c:244
     [<ffffffff813595ab>] task_work_run+0x16b/0x200 kernel/kernel/task_work.c:115
     [<     inline     >] exit_task_work kernel/include/linux/task_work.h:21
     [<ffffffff81307105>] do_exit+0x8b5/0x2c60 kernel/kernel/exit.c:750
     [<ffffffff813fdd20>] ? debug_check_no_locks_freed+0x290/0x290 kernel/kernel/locking/lockdep.c:4123
     [<ffffffff81306850>] ? mm_update_next_owner+0x6f0/0x6f0 kernel/kernel/exit.c:357
     [<ffffffff813215e6>] ? __dequeue_signal+0x136/0x470 kernel/kernel/signal.c:550
     [<ffffffff8132067b>] ? recalc_sigpending_tsk+0x13b/0x180 kernel/kernel/signal.c:145
     [<ffffffff81309628>] do_group_exit+0x108/0x330 kernel/kernel/exit.c:880
     [<ffffffff8132b9d4>] get_signal+0x5e4/0x14f0 kernel/kernel/signal.c:2307
     [<     inline     >] ? kretprobe_table_lock kernel/kernel/kprobes.c:1113
     [<ffffffff8151d355>] ? kprobe_flush_task+0xb5/0x450 kernel/kernel/kprobes.c:1158
     [<ffffffff8115f7d3>] do_signal+0x83/0x1c90 kernel/arch/x86/kernel/signal.c:712
     [<ffffffff8151d2a0>] ? recycle_rp_inst+0x310/0x310 kernel/include/linux/list.h:655
     [<ffffffff8115f750>] ? setup_sigcontext+0x780/0x780 kernel/arch/x86/kernel/signal.c:165
     [<ffffffff81380864>] ? finish_task_switch+0x424/0x5f0 kernel/kernel/sched/core.c:2692
     [<     inline     >] ? finish_lock_switch kernel/kernel/sched/sched.h:1099
     [<ffffffff81380560>] ? finish_task_switch+0x120/0x5f0 kernel/kernel/sched/core.c:2678
     [<     inline     >] ? context_switch kernel/kernel/sched/core.c:2807
     [<ffffffff85d794e9>] ? __schedule+0x919/0x1bd0 kernel/kernel/sched/core.c:3283
     [<ffffffff81003901>] exit_to_usermode_loop+0xf1/0x1a0 kernel/arch/x86/entry/common.c:247
     [<     inline     >] prepare_exit_to_usermode kernel/arch/x86/entry/common.c:282
     [<ffffffff810062ef>] syscall_return_slowpath+0x19f/0x210 kernel/arch/x86/entry/common.c:344
     [<ffffffff85d88022>] int_ret_from_sys_call+0x25/0x9f kernel/arch/x86/entry/entry_64.S:281
    Memory state around the buggy address:
     ffff880064e21680: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
     ffff880064e21700: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    >ffff880064e21780: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                                                           ^
     ffff880064e21800: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
     ffff880064e21880: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
    ==================================================================
    
    Fixes: 273ec51dd7ce ("net: ppp_generic - introduce net-namespace functionality v2")
    Reported-by: Baozeng Ding <sploving1@gmail.com>
    Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
    Reviewed-by: Cyrill Gorcunov <gorcunov@openvz.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 821710a05056bee8a3560d54d64bf9320afda9c6
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Tue Mar 22 09:19:38 2016 +0100

    ipv4: fix broadcast packets reception
    
    [ Upstream commit ad0ea1989cc4d5905941d0a9e62c63ad6d859cef ]
    
    Currently, ingress ipv4 broadcast datagrams are dropped since,
    in udp_v4_early_demux(), ip_check_mc_rcu() is invoked even on
    bcast packets.
    
    This patch addresses the issue, invoking ip_check_mc_rcu()
    only for mcast packets.
    
    Fixes: 6e5403093261 ("ipv4/udp: Verify multicast group is ours in upd_v4_early_demux()")
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fd87f95c015280aa087f04cbc1f7d8061e3b34a8
Author: Manish Chopra <manish.chopra@qlogic.com>
Date:   Tue Mar 15 07:13:45 2016 -0400

    qlge: Fix receive packets drop.
    
    [ Upstream commit 2c9a266afefe137bff06bbe0fc48b4d3b3cb348c ]
    
    When running small packets [length < 256 bytes] traffic, packets were
    being dropped due to invalid data in those packets which were
    delivered by the driver upto the stack. Using pci_dma_sync_single_for_cpu
    ensures copying latest and updated data into skb from the receive buffer.
    
    Signed-off-by: Sony Chacko <sony.chacko@qlogic.com>
    Signed-off-by: Manish Chopra <manish.chopra@qlogic.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d805f291ee2f594c015c9411d20d41e7e56f1bc6
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Mon Mar 14 15:18:36 2016 +0100

    ath9k: fix buffer overrun for ar9287
    
    [ Upstream commit 83d6f1f15f8cce844b0a131cbc63e444620e48b5 ]
    
    Code that was added back in 2.6.38 has an obvious overflow
    when accessing a static array, and at the time it was added
    only a code comment was put in front of it as a reminder
    to have it reviewed properly.
    
    This has not happened, but gcc-6 now points to the specific
    overflow:
    
    drivers/net/wireless/ath/ath9k/eeprom.c: In function 'ath9k_hw_get_gain_boundaries_pdadcs':
    drivers/net/wireless/ath/ath9k/eeprom.c:483:44: error: array subscript is above array bounds [-Werror=array-bounds]
         maxPwrT4[i] = data_9287[idxL].pwrPdg[i][4];
                       ~~~~~~~~~~~~~~~~~~~~~~~~~^~~
    
    It turns out that the correct array length exists in the local
    'intercepts' variable of this function, so we can just use that
    instead of hardcoding '4', so this patch changes all three
    instances to use that variable. The other two instances were
    already correct, but it's more consistent this way.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Fixes: 940cd2c12ebf ("ath9k_hw: merge the ar9287 version of ath9k_hw_get_gain_boundaries_pdadcs")
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 26a628c5c79d35a0f121179beeed635f4930e801
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Mon Mar 14 15:18:35 2016 +0100

    farsync: fix off-by-one bug in fst_add_one
    
    [ Upstream commit e725a66c0202b5f36c2f9d59d26a65c53bbf21f7 ]
    
    gcc-6 finds an out of bounds access in the fst_add_one function
    when calculating the end of the mmio area:
    
    drivers/net/wan/farsync.c: In function 'fst_add_one':
    drivers/net/wan/farsync.c:418:53: error: index 2 denotes an offset greater than size of 'u8[2][8192] {aka unsigned char[2][8192]}' [-Werror=array-bounds]
     #define BUF_OFFSET(X)   (BFM_BASE + offsetof(struct buf_window, X))
                                                         ^
    include/linux/compiler-gcc.h:158:21: note: in definition of macro '__compiler_offsetof'
      __builtin_offsetof(a, b)
                         ^
    drivers/net/wan/farsync.c:418:37: note: in expansion of macro 'offsetof'
     #define BUF_OFFSET(X)   (BFM_BASE + offsetof(struct buf_window, X))
                                         ^~~~~~~~
    drivers/net/wan/farsync.c:2519:36: note: in expansion of macro 'BUF_OFFSET'
                                      + BUF_OFFSET ( txBuffer[i][NUM_TX_BUFFER][0]);
                                        ^~~~~~~~~~
    
    The warning is correct, but not critical because this appears
    to be a write-only variable that is set by each WAN driver but
    never accessed afterwards.
    
    I'm taking the minimal fix here, using the correct pointer by
    pointing 'mem_end' to the last byte inside of the register area
    as all other WAN drivers do, rather than the first byte outside of
    it. An alternative would be to just remove the mem_end member
    entirely.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 902b916d00ba73095b58a9a8dfe926c6a7f635d5
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Mon Mar 14 09:56:35 2016 -0300

    net: Fix use after free in the recvmmsg exit path
    
    [ Upstream commit 34b88a68f26a75e4fded796f1a49c40f82234b7d ]
    
    The syzkaller fuzzer hit the following use-after-free:
    
      Call Trace:
       [<ffffffff8175ea0e>] __asan_report_load8_noabort+0x3e/0x40 mm/kasan/report.c:295
       [<ffffffff851cc31a>] __sys_recvmmsg+0x6fa/0x7f0 net/socket.c:2261
       [<     inline     >] SYSC_recvmmsg net/socket.c:2281
       [<ffffffff851cc57f>] SyS_recvmmsg+0x16f/0x180 net/socket.c:2270
       [<ffffffff86332bb6>] entry_SYSCALL_64_fastpath+0x16/0x7a
      arch/x86/entry/entry_64.S:185
    
    And, as Dmitry rightly assessed, that is because we can drop the
    reference and then touch it when the underlying recvmsg calls return
    some packets and then hit an error, which will make recvmmsg to set
    sock->sk->sk_err, oops, fix it.
    
    Reported-and-Tested-by: Dmitry Vyukov <dvyukov@google.com>
    Cc: Alexander Potapenko <glider@google.com>
    Cc: Eric Dumazet <edumazet@google.com>
    Cc: Kostya Serebryany <kcc@google.com>
    Cc: Sasha Levin <sasha.levin@oracle.com>
    Fixes: a2e2725541fa ("net: Introduce recvmmsg socket syscall")
    http://lkml.kernel.org/r/20160122211644.GC2470@redhat.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3b199517879d1db45a75aa1d9072a1374f661380
Author: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Date:   Tue Mar 8 01:36:28 2016 +0300

    sh_eth: fix NULL pointer dereference in sh_eth_ring_format()
    
    [ Upstream commit c1b7fca65070bfadca94dd53a4e6b71cd4f69715 ]
    
    In a low memory situation, if netdev_alloc_skb() fails on a first RX ring
    loop iteration  in sh_eth_ring_format(), 'rxdesc' is still NULL.  Avoid
    kernel oops by adding the 'rxdesc' check after the loop.
    
    Reported-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1a6602079d4afd08cdf62d211b8b86a3c8bbcf85
Author: Bill Sommerfeld <wsommerfeld@google.com>
Date:   Fri Mar 4 14:47:21 2016 -0800

    udp6: fix UDP/IPv6 encap resubmit path
    
    [ Upstream commit 59dca1d8a6725a121dae6c452de0b2611d5865dc ]
    
    IPv4 interprets a negative return value from a protocol handler as a
    request to redispatch to a new protocol.  In contrast, IPv6 interprets a
    negative value as an error, and interprets a positive value as a request
    for redispatch.
    
    UDP for IPv6 was unaware of this difference.  Change __udp6_lib_rcv() to
    return a positive value for redispatch.  Note that the socket's
    encap_rcv hook still needs to return a negative value to request
    dispatch, and in the case of IPv6 packets, adjust IP6CB(skb)->nhoff to
    identify the byte containing the next protocol.
    
    Signed-off-by: Bill Sommerfeld <wsommerfeld@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7f3216bee081816d415566a86a5bd3fcf2d5dcd7
Author: Oliver Neukum <oneukum@suse.com>
Date:   Mon Mar 7 11:31:10 2016 +0100

    usbnet: cleanup after bind() in probe()
    
    [ Upstream commit 1666984c8625b3db19a9abc298931d35ab7bc64b ]
    
    In case bind() works, but a later error forces bailing
    in probe() in error cases work and a timer may be scheduled.
    They must be killed. This fixes an error case related to
    the double free reported in
    http://www.spinics.net/lists/netdev/msg367669.html
    and needs to go on top of Linus' fix to cdc-ncm.
    
    Signed-off-by: Oliver Neukum <ONeukum@suse.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3aec7e0989d2ea5bec73c36081b28b0f11258c6f
Author: Bjørn Mork <bjorn@mork.no>
Date:   Thu Mar 3 22:20:53 2016 +0100

    cdc_ncm: toggle altsetting to force reset before setup
    
    [ Upstream commit 48906f62c96cc2cd35753e59310cb70eb08cc6a5 ]
    
    Some devices will silently fail setup unless they are reset first.
    This is necessary even if the data interface is already in
    altsetting 0, which it will be when the device is probed for the
    first time.  Briefly toggling the altsetting forces a function
    reset regardless of the initial state.
    
    This fixes a setup problem observed on a number of Huawei devices,
    appearing to operate in NTB-32 mode even if we explicitly set them
    to NTB-16 mode.
    
    Signed-off-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 369b2427aabaf9d7ec7dc66b5e55b12c83c6770c
Author: Florian Westphal <fw@strlen.de>
Date:   Tue Mar 1 16:15:16 2016 +0100

    ipv6: re-enable fragment header matching in ipv6_find_hdr
    
    [ Upstream commit 5d150a985520bbe3cb2aa1ceef24a7e32f20c15f ]
    
    When ipv6_find_hdr is used to find a fragment header
    (caller specifies target NEXTHDR_FRAGMENT) we erronously return
    -ENOENT for all fragments with nonzero offset.
    
    Before commit 9195bb8e381d, when target was specified, we did not
    enter the exthdr walk loop as nexthdr == target so this used to work.
    
    Now we do (so we can skip empty route headers). When we then stumble upon
    a frag with nonzero frag_off we must return -ENOENT ("header not found")
    only if the caller did not specifically request NEXTHDR_FRAGMENT.
    
    This allows nfables exthdr expression to match ipv6 fragments, e.g. via
    
    nft add rule ip6 filter input frag frag-off gt 0
    
    Fixes: 9195bb8e381d ("ipv6: improve ipv6_find_hdr() to skip empty routing headers")
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 893ec5b72193fba1d3aca768e5b1796b45fd60b3
Author: Xin Long <lucien.xin@gmail.com>
Date:   Sun Feb 28 10:03:51 2016 +0800

    sctp: lack the check for ports in sctp_v6_cmp_addr
    
    [ Upstream commit 40b4f0fd74e46c017814618d67ec9127ff20f157 ]
    
    As the member .cmp_addr of sctp_af_inet6, sctp_v6_cmp_addr should also check
    the port of addresses, just like sctp_v4_cmp_addr, cause it's invoked by
    sctp_cmp_addr_exact().
    
    Now sctp_v6_cmp_addr just check the port when two addresses have different
    family, and lack the port check for two ipv6 addresses. that will make
    sctp_hash_cmp() cannot work well.
    
    so fix it by adding ports comparison in sctp_v6_cmp_addr().
    
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1911c25b643550cdcb0e49652d57250eb00eef07
Author: Diego Viola <diego.viola@gmail.com>
Date:   Tue Feb 23 12:04:04 2016 -0300

    net: jme: fix suspend/resume on JMC260
    
    [ Upstream commit ee50c130c82175eaa0820c96b6d3763928af2241 ]
    
    The JMC260 network card fails to suspend/resume because the call to
    jme_start_irq() was too early, moving the call to jme_start_irq() after
    the call to jme_reset_link() makes it work.
    
    Prior this change suspend/resume would fail unless /sys/power/pm_async=0
    was explicitly specified.
    
    Relevant bug report: https://bugzilla.kernel.org/show_bug.cgi?id=112351
    
    Signed-off-by: Diego Viola <diego.viola@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f808d9a02c64110f29218c3f4437f4d9282998ad
Author: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Date:   Fri Mar 18 10:11:07 2016 -0400

    xen/events: Mask a moving irq
    
    commit ff1e22e7a638a0782f54f81a6c9cb139aca2da35 upstream.
    
    Moving an unmasked irq may result in irq handler being invoked on both
    source and target CPUs.
    
    With 2-level this can happen as follows:
    
    On source CPU:
            evtchn_2l_handle_events() ->
                generic_handle_irq() ->
                    handle_edge_irq() ->
                       eoi_pirq():
                           irq_move_irq(data);
    
                           /***** WE ARE HERE *****/
    
                           if (VALID_EVTCHN(evtchn))
                               clear_evtchn(evtchn);
    
    If at this moment target processor is handling an unrelated event in
    evtchn_2l_handle_events()'s loop it may pick up our event since target's
    cpu_evtchn_mask claims that this event belongs to it *and* the event is
    unmasked and still pending. At the same time, source CPU will continue
    executing its own handle_edge_irq().
    
    With FIFO interrupt the scenario is similar: irq_move_irq() may result
    in a EVTCHNOP_unmask hypercall which, in turn, may make the event
    pending on the target CPU.
    
    We can avoid this situation by moving and clearing the event while
    keeping event masked.
    
    Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Signed-off-by: David Vrabel <david.vrabel@citrix.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c59ffbe17b2b6c9f68bf4f101e4d6b16b5254aa5
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Mon Mar 28 10:21:20 2016 -0400

    drm/radeon: add a dpm quirk for all R7 370 parts
    
    commit 0e5585dc870af947fab2af96a88c2d8b4270247c upstream.
    
    Higher mclk values are not stable due to a bug somewhere.
    Limit them for now.
    
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b29ddd02cdfa8316e7b54fe438cbf01e10eef7e7
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Fri Mar 25 10:31:04 2016 -0400

    drm/radeon: add a dpm quirk for sapphire Dual-X R7 370 2G D5
    
    commit f971f2263deaa4a441e377b385c11aee0f3b3f9a upstream.
    
    bug:
    https://bugs.freedesktop.org/show_bug.cgi?id=94692
    
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 37f2c8b804e9299238f0b5774f202f46121c998e
Author: Xishi Qiu <qiuxishi@huawei.com>
Date:   Fri Apr 1 14:31:20 2016 -0700

    mm: fix invalid node in alloc_migrate_target()
    
    commit 6f25a14a7053b69917e2ebea0d31dd444cd31fd5 upstream.
    
    It is incorrect to use next_node to find a target node, it will return
    MAX_NUMNODES or invalid node.  This will lead to crash in buddy system
    allocation.
    
    Fixes: c8721bbbdd36 ("mm: memory-hotplug: enable memory hotplug to handle hugepage")
    Signed-off-by: Xishi Qiu <qiuxishi@huawei.com>
    Acked-by: Vlastimil Babka <vbabka@suse.cz>
    Acked-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Cc: Joonsoo Kim <js1304@gmail.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: "Laura Abbott" <lauraa@codeaurora.org>
    Cc: Hui Zhu <zhuhui@xiaomi.com>
    Cc: Wang Xiaoqiang <wangxq10@lzu.edu.cn>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f0c3c0e137da84c0201eb5ba8f847991f1bb48ef
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Apr 1 12:28:16 2016 +0200

    ALSA: timer: Use mod_timer() for rearming the system timer
    
    commit 4a07083ed613644c96c34a7dd2853dc5d7c70902 upstream.
    
    ALSA system timer backend stops the timer via del_timer() without sync
    and leaves del_timer_sync() at the close instead.  This is because of
    the restriction by the design of ALSA timer: namely, the stop callback
    may be called from the timer handler, and calling the sync shall lead
    to a hangup.  However, this also triggers a kernel BUG() when the
    timer is rearmed immediately after stopping without sync:
     kernel BUG at kernel/time/timer.c:966!
     Call Trace:
      <IRQ>
      [<ffffffff8239c94e>] snd_timer_s_start+0x13e/0x1a0
      [<ffffffff8239e1f4>] snd_timer_interrupt+0x504/0xec0
      [<ffffffff8122fca0>] ? debug_check_no_locks_freed+0x290/0x290
      [<ffffffff8239ec64>] snd_timer_s_function+0xb4/0x120
      [<ffffffff81296b72>] call_timer_fn+0x162/0x520
      [<ffffffff81296add>] ? call_timer_fn+0xcd/0x520
      [<ffffffff8239ebb0>] ? snd_timer_interrupt+0xec0/0xec0
      ....
    
    It's the place where add_timer() checks the pending timer.  It's clear
    that this may happen after the immediate restart without sync in our
    cases.
    
    So, the workaround here is just to use mod_timer() instead of
    add_timer().  This looks like a band-aid fix, but it's a right move,
    as snd_timer_interrupt() takes care of the continuous rearm of timer.
    
    Reported-by: Jiri Slaby <jslaby@suse.cz>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7b5b3bf5638221359c03d71589b8784e1735b4db
Author: Helge Deller <deller@gmx.de>
Date:   Fri Apr 8 18:18:48 2016 +0200

    parisc: Fix kernel crash with reversed copy_from_user()
    
    commit ef72f3110d8b19f4c098a0bff7ed7d11945e70c6 upstream.
    
    The kernel module testcase (lib/test_user_copy.c) exhibited a kernel
    crash on parisc if the parameters for copy_from_user were reversed
    ("illegal reversed copy_to_user" testcase).
    
    Fix this potential crash by checking the fault handler if the faulting
    address is in the exception table.
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Cc: Kees Cook <keescook@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e2e26bf7be49e583aab8046807230c00f42390fb
Author: Helge Deller <deller@gmx.de>
Date:   Fri Apr 8 18:11:33 2016 +0200

    parisc: Avoid function pointers for kernel exception routines
    
    commit e3893027a300927049efc1572f852201eb785142 upstream.
    
    We want to avoid the kernel module loader to create function pointers
    for the kernel fixup routines of get_user() and put_user(). Changing
    the external reference from function type to int type fixes this.
    
    This unbreaks exception handling for get_user() and put_user() when
    called from a kernel module.
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a0132681fab64c47e07feb944e27b90e96cc21b1
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Sat Mar 26 12:28:05 2016 -0700

    hwmon: (max1111) Return -ENODEV from max1111_read_channel if not instantiated
    
    commit 3c2e2266a5bd2d1cef258e6e54dca1d99946379f upstream.
    
    arm:pxa_defconfig can result in the following crash if the max1111 driver
    is not instantiated.
    
    Unhandled fault: page domain fault (0x01b) at 0x00000000
    pgd = c0004000
    [00000000] *pgd=00000000
    Internal error: : 1b [#1] PREEMPT ARM
    Modules linked in:
    CPU: 0 PID: 300 Comm: kworker/0:1 Not tainted 4.5.0-01301-g1701f680407c #10
    Hardware name: SHARP Akita
    Workqueue: events sharpsl_charge_toggle
    task: c390a000 ti: c391e000 task.ti: c391e000
    PC is at max1111_read_channel+0x20/0x30
    LR is at sharpsl_pm_pxa_read_max1111+0x2c/0x3c
    pc : [<c03aaab0>]    lr : [<c0024b50>]    psr: 20000013
    ...
    [<c03aaab0>] (max1111_read_channel) from [<c0024b50>]
    					(sharpsl_pm_pxa_read_max1111+0x2c/0x3c)
    [<c0024b50>] (sharpsl_pm_pxa_read_max1111) from [<c00262e0>]
    					(spitzpm_read_devdata+0x5c/0xc4)
    [<c00262e0>] (spitzpm_read_devdata) from [<c0024094>]
    					(sharpsl_check_battery_temp+0x78/0x110)
    [<c0024094>] (sharpsl_check_battery_temp) from [<c0024f9c>]
    					(sharpsl_charge_toggle+0x48/0x110)
    [<c0024f9c>] (sharpsl_charge_toggle) from [<c004429c>]
    					(process_one_work+0x14c/0x48c)
    [<c004429c>] (process_one_work) from [<c0044618>] (worker_thread+0x3c/0x5d4)
    [<c0044618>] (worker_thread) from [<c004a238>] (kthread+0xd0/0xec)
    [<c004a238>] (kthread) from [<c000a670>] (ret_from_fork+0x14/0x24)
    
    This can occur because the SPI controller driver (SPI_PXA2XX) is built as
    module and thus not necessarily loaded. While building SPI_PXA2XX into the
    kernel would make the problem disappear, it appears prudent to ensure that
    the driver is instantiated before accessing its data structures.
    
    Cc: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>