commit 582441d3f8d0a120af98cf05dd56c6701161883a
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Thu Oct 31 22:15:07 2019 +0000

    Linux 3.16.76

commit f343a590cd81d67d05742530ed97529a42d3093d
Author: Like Xu <like.xu@linux.intel.com>
Date:   Thu Jul 18 13:35:14 2019 +0800

    KVM: x86/vPMU: refine kvm_pmu err msg when event creation failed
    
    commit 6fc3977ccc5d3c22e851f2dce2d3ce2a0a843842 upstream.
    
    If a perf_event creation fails due to any reason of the host perf
    subsystem, it has no chance to log the corresponding event for guest
    which may cause abnormal sampling data in guest result. In debug mode,
    this message helps to understand the state of vPMC and we may not
    limit the number of occurrences but not in a spamming style.
    
    Suggested-by: Joe Perches <joe@perches.com>
    Signed-off-by: Like Xu <like.xu@linux.intel.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7d38923f3c1c0795fbb0180ef514611cf5e41fff
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Tue Jul 16 20:17:20 2019 +0200

    Input: psmouse - fix build error of multiple definition
    
    commit 49e6979e7e92cf496105b5636f1df0ac17c159c0 upstream.
    
    trackpoint_detect() should be static inline while
    CONFIG_MOUSE_PS2_TRACKPOINT is not set, otherwise, we build fails:
    
    drivers/input/mouse/alps.o: In function `trackpoint_detect':
    alps.c:(.text+0x8e00): multiple definition of `trackpoint_detect'
    drivers/input/mouse/psmouse-base.o:psmouse-base.c:(.text+0x1b50): first defined here
    
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Fixes: 55e3d9224b60 ("Input: psmouse - allow disabing certain protocol extensions")
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 28630af424f21fb71119278891cd2845df5bf3cd
Author: Daniel Jordan <daniel.m.jordan@oracle.com>
Date:   Tue Jul 16 12:32:53 2019 -0400

    padata: use smp_mb in padata_reorder to avoid orphaned padata jobs
    
    commit cf144f81a99d1a3928f90b0936accfd3f45c9a0a upstream.
    
    Testing padata with the tcrypt module on a 5.2 kernel...
    
        # modprobe tcrypt alg="pcrypt(rfc4106(gcm(aes)))" type=3
        # modprobe tcrypt mode=211 sec=1
    
    ...produces this splat:
    
        INFO: task modprobe:10075 blocked for more than 120 seconds.
              Not tainted 5.2.0-base+ #16
        modprobe        D    0 10075  10064 0x80004080
        Call Trace:
         ? __schedule+0x4dd/0x610
         ? ring_buffer_unlock_commit+0x23/0x100
         schedule+0x6c/0x90
         schedule_timeout+0x3b/0x320
         ? trace_buffer_unlock_commit_regs+0x4f/0x1f0
         wait_for_common+0x160/0x1a0
         ? wake_up_q+0x80/0x80
         { crypto_wait_req }             # entries in braces added by hand
         { do_one_aead_op }
         { test_aead_jiffies }
         test_aead_speed.constprop.17+0x681/0xf30 [tcrypt]
         do_test+0x4053/0x6a2b [tcrypt]
         ? 0xffffffffa00f4000
         tcrypt_mod_init+0x50/0x1000 [tcrypt]
         ...
    
    The second modprobe command never finishes because in padata_reorder,
    CPU0's load of reorder_objects is executed before the unlocking store in
    spin_unlock_bh(pd->lock), causing CPU0 to miss CPU1's increment:
    
    CPU0                                 CPU1
    
    padata_reorder                       padata_do_serial
      LOAD reorder_objects  // 0
                                           INC reorder_objects  // 1
                                           padata_reorder
                                             TRYLOCK pd->lock   // failed
      UNLOCK pd->lock
    
    CPU0 deletes the timer before returning from padata_reorder and since no
    other job is submitted to padata, modprobe waits indefinitely.
    
    Add a pair of full barriers to guarantee proper ordering:
    
    CPU0                                 CPU1
    
    padata_reorder                       padata_do_serial
      UNLOCK pd->lock
      smp_mb()
      LOAD reorder_objects
                                           INC reorder_objects
                                           smp_mb__after_atomic()
                                           padata_reorder
                                             TRYLOCK pd->lock
    
    smp_mb__after_atomic is needed so the read part of the trylock operation
    comes after the INC, as Andrea points out.   Thanks also to Andrea for
    help with writing a litmus test.
    
    Fixes: 16295bec6398 ("padata: Generic parallelization/serialization interface")
    Signed-off-by: Daniel Jordan <daniel.m.jordan@oracle.com>
    Cc: Andrea Parri <andrea.parri@amarulasolutions.com>
    Cc: Boqun Feng <boqun.feng@gmail.com>
    Cc: Herbert Xu <herbert@gondor.apana.org.au>
    Cc: Paul E. McKenney <paulmck@linux.ibm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Steffen Klassert <steffen.klassert@secunet.com>
    Cc: linux-arch@vger.kernel.org
    Cc: linux-crypto@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f7ac4bf23b92c0018e160c39747ff332ed5ea7b7
Author: Helge Deller <deller@gmx.de>
Date:   Tue Jul 16 21:43:11 2019 +0200

    parisc: Fix kernel panic due invalid values in IAOQ0 or IAOQ1
    
    commit 10835c854685393a921b68f529bf740fa7c9984d upstream.
    
    On parisc the privilege level of a process is stored in the lowest two bits of
    the instruction pointers (IAOQ0 and IAOQ1). On Linux we use privilege level 0
    for the kernel and privilege level 3 for user-space. So userspace should not be
    allowed to modify IAOQ0 or IAOQ1 of a ptraced process to change it's privilege
    level to e.g. 0 to try to gain kernel privileges.
    
    This patch prevents such modifications by always setting the two lowest bits to
    one (which relates to privilege level 3 for user-space) if IAOQ0 or IAOQ1 are
    modified via ptrace calls in the native and compat ptrace paths.
    
    Link: https://bugs.gentoo.org/481768
    Reported-by: Jeroen Roovers <jer@gentoo.org>
    Tested-by: Rolf Eike Beer <eike-kernel@sf-tec.de>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7c711c927a6a0db6b992c9b1a35981e7f361cdf5
Author: Taehee Yoo <ap420073@gmail.com>
Date:   Mon Jul 15 14:10:17 2019 +0900

    caif-hsi: fix possible deadlock in cfhsi_exit_module()
    
    commit fdd258d49e88a9e0b49ef04a506a796f1c768a8e upstream.
    
    cfhsi_exit_module() calls unregister_netdev() under rtnl_lock().
    but unregister_netdev() internally calls rtnl_lock().
    So deadlock would occur.
    
    Fixes: c41254006377 ("caif-hsi: Add rtnl support")
    Signed-off-by: Taehee Yoo <ap420073@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b33b7003f4a40c15cec238eaa62ba0829d8d5269
Author: Jan Harkes <jaharkes@cs.cmu.edu>
Date:   Tue Jul 16 16:28:04 2019 -0700

    coda: pass the host file in vma->vm_file on mmap
    
    commit 7fa0a1da3dadfd9216df7745a1331fdaa0940d1c upstream.
    
    Patch series "Coda updates".
    
    The following patch series is a collection of various fixes for Coda,
    most of which were collected from linux-fsdevel or linux-kernel but
    which have as yet not found their way upstream.
    
    This patch (of 22):
    
    Various file systems expect that vma->vm_file points at their own file
    handle, several use file_inode(vma->vm_file) to get at their inode or
    use vma->vm_file->private_data.  However the way Coda wrapped mmap on a
    host file broke this assumption, vm_file was still pointing at the Coda
    file and the host file systems would scribble over Coda's inode and
    private file data.
    
    This patch fixes the incorrect expectation and wraps vm_ops->open and
    vm_ops->close to allow Coda to track when the vm_area_struct is
    destroyed so we still release the reference on the Coda file handle at
    the right time.
    
    Link: http://lkml.kernel.org/r/0e850c6e59c0b147dc2dcd51a3af004c948c3697.1558117389.git.jaharkes@cs.cmu.edu
    Signed-off-by: Jan Harkes <jaharkes@cs.cmu.edu>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Colin Ian King <colin.king@canonical.com>
    Cc: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: David Howells <dhowells@redhat.com>
    Cc: Fabian Frederick <fabf@skynet.be>
    Cc: Mikko Rapeli <mikko.rapeli@iki.fi>
    Cc: Sam Protsenko <semen.protsenko@linaro.org>
    Cc: Yann Droneaud <ydroneaud@opteya.com>
    Cc: Zhouyang Jia <jiazhouyang09@gmail.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [bwh: Backported to 3.16: Keep calling file_operations::mmap directly]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a173eee8ce89d5a1c22fe603f04b1c7b24c09a87
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Jul 15 22:50:27 2019 +0200

    ALSA: seq: Break too long mutex context in the write loop
    
    commit ede34f397ddb063b145b9e7d79c6026f819ded13 upstream.
    
    The fix for the racy writes and ioctls to sequencer widened the
    application of client->ioctl_mutex to the whole write loop.  Although
    it does unlock/relock for the lengthy operation like the event dup,
    the loop keeps the ioctl_mutex for the whole time in other
    situations.  This may take quite long time if the user-space would
    give a huge buffer, and this is a likely cause of some weird behavior
    spotted by syzcaller fuzzer.
    
    This patch puts a simple workaround, just adding a mutex break in the
    loop when a large number of events have been processed.  This
    shouldn't hit any performance drop because the threshold is set high
    enough for usual operations.
    
    Fixes: 7bd800915677 ("ALSA: seq: More protection for concurrent write and ioctl races")
    Reported-by: syzbot+97aae04ce27e39cbfca9@syzkaller.appspotmail.com
    Reported-by: syzbot+4c595632b98bb8ffcc66@syzkaller.appspotmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6048bf226c595c0c5dbc80c736ae2e4275bb7e34
Author: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Date:   Sun Jul 14 23:36:11 2019 +0200

    net: neigh: fix multiple neigh timer scheduling
    
    commit 071c37983d99da07797294ea78e9da1a6e287144 upstream.
    
    Neigh timer can be scheduled multiple times from userspace adding
    multiple neigh entries and forcing the neigh timer scheduling passing
    NTF_USE in the netlink requests.
    This will result in a refcount leak and in the following dump stack:
    
    [   32.465295] NEIGH: BUG, double timer add, state is 8
    [   32.465308] CPU: 0 PID: 416 Comm: double_timer_ad Not tainted 5.2.0+ #65
    [   32.465311] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.12.0-2.fc30 04/01/2014
    [   32.465313] Call Trace:
    [   32.465318]  dump_stack+0x7c/0xc0
    [   32.465323]  __neigh_event_send+0x20c/0x880
    [   32.465326]  ? ___neigh_create+0x846/0xfb0
    [   32.465329]  ? neigh_lookup+0x2a9/0x410
    [   32.465332]  ? neightbl_fill_info.constprop.0+0x800/0x800
    [   32.465334]  neigh_add+0x4f8/0x5e0
    [   32.465337]  ? neigh_xmit+0x620/0x620
    [   32.465341]  ? find_held_lock+0x85/0xa0
    [   32.465345]  rtnetlink_rcv_msg+0x204/0x570
    [   32.465348]  ? rtnl_dellink+0x450/0x450
    [   32.465351]  ? mark_held_locks+0x90/0x90
    [   32.465354]  ? match_held_lock+0x1b/0x230
    [   32.465357]  netlink_rcv_skb+0xc4/0x1d0
    [   32.465360]  ? rtnl_dellink+0x450/0x450
    [   32.465363]  ? netlink_ack+0x420/0x420
    [   32.465366]  ? netlink_deliver_tap+0x115/0x560
    [   32.465369]  ? __alloc_skb+0xc9/0x2f0
    [   32.465372]  netlink_unicast+0x270/0x330
    [   32.465375]  ? netlink_attachskb+0x2f0/0x2f0
    [   32.465378]  netlink_sendmsg+0x34f/0x5a0
    [   32.465381]  ? netlink_unicast+0x330/0x330
    [   32.465385]  ? move_addr_to_kernel.part.0+0x20/0x20
    [   32.465388]  ? netlink_unicast+0x330/0x330
    [   32.465391]  sock_sendmsg+0x91/0xa0
    [   32.465394]  ___sys_sendmsg+0x407/0x480
    [   32.465397]  ? copy_msghdr_from_user+0x200/0x200
    [   32.465401]  ? _raw_spin_unlock_irqrestore+0x37/0x40
    [   32.465404]  ? lockdep_hardirqs_on+0x17d/0x250
    [   32.465407]  ? __wake_up_common_lock+0xcb/0x110
    [   32.465410]  ? __wake_up_common+0x230/0x230
    [   32.465413]  ? netlink_bind+0x3e1/0x490
    [   32.465416]  ? netlink_setsockopt+0x540/0x540
    [   32.465420]  ? __fget_light+0x9c/0xf0
    [   32.465423]  ? sockfd_lookup_light+0x8c/0xb0
    [   32.465426]  __sys_sendmsg+0xa5/0x110
    [   32.465429]  ? __ia32_sys_shutdown+0x30/0x30
    [   32.465432]  ? __fd_install+0xe1/0x2c0
    [   32.465435]  ? lockdep_hardirqs_off+0xb5/0x100
    [   32.465438]  ? mark_held_locks+0x24/0x90
    [   32.465441]  ? do_syscall_64+0xf/0x270
    [   32.465444]  do_syscall_64+0x63/0x270
    [   32.465448]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    Fix the issue unscheduling neigh_timer if selected entry is in 'IN_TIMER'
    receiving a netlink request with NTF_USE flag set
    
    Reported-by: Marek Majkowski <marek@cloudflare.com>
    Fixes: 0c5c2d308906 ("neigh: Allow for user space users of the neighbour table")
    Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
    Reviewed-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c6b762d03dfd64c37850b77f2cd05ddb0766f2e5
Author: Jean-Philippe Brucker <jean-philippe.brucker@arm.com>
Date:   Thu Jul 11 20:58:50 2019 -0700

    mm/mmu_notifier: use hlist_add_head_rcu()
    
    commit 543bdb2d825fe2400d6e951f1786d92139a16931 upstream.
    
    Make mmu_notifier_register() safer by issuing a memory barrier before
    registering a new notifier.  This fixes a theoretical bug on weakly
    ordered CPUs.  For example, take this simplified use of notifiers by a
    driver:
    
            my_struct->mn.ops = &my_ops; /* (1) */
            mmu_notifier_register(&my_struct->mn, mm)
                    ...
                    hlist_add_head(&mn->hlist, &mm->mmu_notifiers); /* (2) */
                    ...
    
    Once mmu_notifier_register() releases the mm locks, another thread can
    invalidate a range:
    
            mmu_notifier_invalidate_range()
                    ...
                    hlist_for_each_entry_rcu(mn, &mm->mmu_notifiers, hlist) {
                            if (mn->ops->invalidate_range)
    
    The read side relies on the data dependency between mn and ops to ensure
    that the pointer is properly initialized.  But the write side doesn't have
    any dependency between (1) and (2), so they could be reordered and the
    readers could dereference an invalid mn->ops.  mmu_notifier_register()
    does take all the mm locks before adding to the hlist, but those have
    acquire semantics which isn't sufficient.
    
    By calling hlist_add_head_rcu() instead of hlist_add_head() we update the
    hlist using a store-release, ensuring that readers see prior
    initialization of my_struct.  This situation is better illustated by
    litmus test MP+onceassign+derefonce.
    
    Link: http://lkml.kernel.org/r/20190502133532.24981-1-jean-philippe.brucker@arm.com
    Fixes: cddb8a5c14aa ("mmu-notifiers: core")
    Signed-off-by: Jean-Philippe Brucker <jean-philippe.brucker@arm.com>
    Cc: Jérôme Glisse <jglisse@redhat.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 407399f65a00cd97a630500c27a5ded025df0f95
Author: Steven J. Magnani <steve.magnani@digidescorp.com>
Date:   Sun Jun 30 21:39:35 2019 -0500

    udf: Fix incorrect final NOT_ALLOCATED (hole) extent length
    
    commit fa33cdbf3eceb0206a4f844fe91aeebcf6ff2b7a upstream.
    
    In some cases, using the 'truncate' command to extend a UDF file results
    in a mismatch between the length of the file's extents (specifically, due
    to incorrect length of the final NOT_ALLOCATED extent) and the information
    (file) length. The discrepancy can prevent other operating systems
    (i.e., Windows 10) from opening the file.
    
    Two particular errors have been observed when extending a file:
    
    1. The final extent is larger than it should be, having been rounded up
       to a multiple of the block size.
    
    B. The final extent is not shorter than it should be, due to not having
       been updated when the file's information length was increased.
    
    [JK: simplified udf_do_extend_final_block(), fixed up some types]
    
    Fixes: 2c948b3f86e5 ("udf: Avoid IO in udf_clear_inode")
    Signed-off-by: Steven J. Magnani <steve@digidescorp.com>
    Link: https://lore.kernel.org/r/1561948775-5878-1-git-send-email-steve@digidescorp.com
    Signed-off-by: Jan Kara <jack@suse.cz>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2d19005e0bc3ea53b63131380ab9ef4d1f475325
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Wed Jul 3 15:39:25 2019 +0200

    ARC: hide unused function unw_hdr_alloc
    
    commit fd5de2721ea7d16e2b16c4049ac49f229551b290 upstream.
    
    As kernelci.org reports, this function is not used in
    vdk_hs38_defconfig:
    
    arch/arc/kernel/unwind.c:188:14: warning: 'unw_hdr_alloc' defined but not used [-Wunused-function]
    
    Fixes: bc79c9a72165 ("ARC: dw2 unwind: Reinstante unwinding out of modules")
    Link: https://kernelci.org/build/id/5d1cae3f59b514300340c132/logs/
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f239aa5697a418e7216315c1437abc1fc2b5c658
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Thu Jun 27 06:41:45 2019 -0400

    NFSv4: Handle the special Linux file open access mode
    
    commit 44942b4e457beda00981f616402a1a791e8c616e upstream.
    
    According to the open() manpage, Linux reserves the access mode 3
    to mean "check for read and write permission on the file and return
    a file descriptor that can't be used for reading or writing."
    
    Currently, the NFSv4 code will ask the server to open the file,
    and will use an incorrect share access mode of 0. Since it has
    an incorrect share access mode, the client later forgets to send
    a corresponding close, meaning it can leak stateids on the server.
    
    Fixes: ce4ef7c0a8a05 ("NFS: Split out NFS v4 file operations")
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c78cea757215f10b8285619e408930aff23754df
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Mon Jul 1 20:40:24 2019 -0700

    bonding: validate ip header before check IPPROTO_IGMP
    
    commit 9d1bc24b52fb8c5d859f9a47084bf1179470e04c upstream.
    
    bond_xmit_roundrobin() checks for IGMP packets but it parses
    the IP header even before checking skb->protocol.
    
    We should validate the IP header with pskb_may_pull() before
    using iph->protocol.
    
    Reported-and-tested-by: syzbot+e5be16aa39ad6e755391@syzkaller.appspotmail.com
    Fixes: a2fd940f4cff ("bonding: fix broken multicast with round-robin mode")
    Cc: Jay Vosburgh <j.vosburgh@gmail.com>
    Cc: Veaceslav Falico <vfalico@gmail.com>
    Cc: Andy Gospodarek <andy@greyhouse.net>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16:
     - Keep using ACCESS_ONCE(), dev_kfree_skb_any(), …_can_tx()
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 95030117c3ff3a5e7b394ff7e1d27b1d97510c0f
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Mon Jun 24 07:20:14 2019 +0000

    lib/scatterlist: Fix mapping iterator when sg->offset is greater than PAGE_SIZE
    
    commit aeb87246537a83c2aff482f3f34a2e0991e02cbc upstream.
    
    All mapping iterator logic is based on the assumption that sg->offset
    is always lower than PAGE_SIZE.
    
    But there are situations where sg->offset is such that the SG item
    is on the second page. In that case sg_copy_to_buffer() fails
    properly copying the data into the buffer. One of the reason is
    that the data will be outside the kmapped area used to access that
    data.
    
    This patch fixes the issue by adjusting the mapping iterator
    offset and pgoffset fields such that offset is always lower than
    PAGE_SIZE.
    
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Fixes: 4225fc8555a9 ("lib/scatterlist: use page iterator in the mapping iterator")
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit bc31cd94c64f7e8cfadac6ba654c4a7f358c9d8b
Author: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Date:   Tue Jul 2 15:00:21 2019 +0300

    net: bridge: stp: don't cache eth dest pointer before skb pull
    
    commit 2446a68ae6a8cee6d480e2f5b52f5007c7c41312 upstream.
    
    Don't cache eth dest pointer before calling pskb_may_pull.
    
    Fixes: cf0f02d04a83 ("[BRIDGE]: use llc for receiving STP packets")
    Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit bc9daf00a60ea5d2927b84f97afb3ffde15461ee
Author: Julian Wiedmann <jwi@linux.ibm.com>
Date:   Tue Jun 18 13:12:20 2019 +0200

    s390/qdio: don't touch the dsci in tiqdio_add_input_queues()
    
    commit ac6639cd3db607d386616487902b4cc1850a7be5 upstream.
    
    Current code sets the dsci to 0x00000080. Which doesn't make any sense,
    as the indicator area is located in the _left-most_ byte.
    
    Worse: if the dsci is the _shared_ indicator, this potentially clears
    the indication of activity for a _different_ device.
    tiqdio_thinint_handler() will then have no reason to call that device's
    IRQ handler, and the device ends up stalling.
    
    Fixes: d0c9d4a89fff ("[S390] qdio: set correct bit in dsci")
    Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 225f5992ed839029e8be4ad96e04a1a1be172d08
Author: Julian Wiedmann <jwi@linux.ibm.com>
Date:   Tue Jun 18 11:25:59 2019 +0200

    s390/qdio: (re-)initialize tiqdio list entries
    
    commit e54e4785cb5cb4896cf4285964aeef2125612fb2 upstream.
    
    When tiqdio_remove_input_queues() removes a queue from the tiq_list as
    part of qdio_shutdown(), it doesn't re-initialize the queue's list entry
    and the prev/next pointers go stale.
    
    If a subsequent qdio_establish() fails while sending the ESTABLISH cmd,
    it calls qdio_shutdown() again in QDIO_IRQ_STATE_ERR state and
    tiqdio_remove_input_queues() will attempt to remove the queue entry a
    second time. This dereferences the stale pointers, and bad things ensue.
    Fix this by re-initializing the list entry after removing it from the
    list.
    
    For good practice also initialize the list entry when the queue is first
    allocated, and remove the quirky checks that papered over this omission.
    Note that prior to
    commit e521813468f7 ("s390/qdio: fix access to uninitialized qdio_q fields"),
    these checks were bogus anyway.
    
    setup_queues_misc() clears the whole queue struct, and thus needs to
    re-init the prev/next pointers as well.
    
    Fixes: 779e6e1c724d ("[S390] qdio: new qdio driver.")
    Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a19230f4a8340452f62daae11fd8f12b19a8c00c
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Jun 27 01:27:01 2019 -0700

    igmp: fix memory leak in igmpv3_del_delrec()
    
    commit e5b1c6c6277d5a283290a8c033c72544746f9b5b upstream.
    
    im->tomb and/or im->sources might not be NULL, but we
    currently overwrite their values blindly.
    
    Using swap() will make sure the following call to kfree_pmc(pmc)
    will properly free the psf structures.
    
    Tested with the C repro provided by syzbot, which basically does :
    
     socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3
     setsockopt(3, SOL_IP, IP_ADD_MEMBERSHIP, "\340\0\0\2\177\0\0\1\0\0\0\0", 12) = 0
     ioctl(3, SIOCSIFFLAGS, {ifr_name="lo", ifr_flags=0}) = 0
     setsockopt(3, SOL_IP, IP_MSFILTER, "\340\0\0\2\177\0\0\1\1\0\0\0\1\0\0\0\377\377\377\377", 20) = 0
     ioctl(3, SIOCSIFFLAGS, {ifr_name="lo", ifr_flags=IFF_UP}) = 0
     exit_group(0)                    = ?
    
    BUG: memory leak
    unreferenced object 0xffff88811450f140 (size 64):
      comm "softirq", pid 0, jiffies 4294942448 (age 32.070s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00  ................
        00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00  ................
      backtrace:
        [<00000000c7bad083>] kmemleak_alloc_recursive include/linux/kmemleak.h:43 [inline]
        [<00000000c7bad083>] slab_post_alloc_hook mm/slab.h:439 [inline]
        [<00000000c7bad083>] slab_alloc mm/slab.c:3326 [inline]
        [<00000000c7bad083>] kmem_cache_alloc_trace+0x13d/0x280 mm/slab.c:3553
        [<000000009acc4151>] kmalloc include/linux/slab.h:547 [inline]
        [<000000009acc4151>] kzalloc include/linux/slab.h:742 [inline]
        [<000000009acc4151>] ip_mc_add1_src net/ipv4/igmp.c:1976 [inline]
        [<000000009acc4151>] ip_mc_add_src+0x36b/0x400 net/ipv4/igmp.c:2100
        [<000000004ac14566>] ip_mc_msfilter+0x22d/0x310 net/ipv4/igmp.c:2484
        [<0000000052d8f995>] do_ip_setsockopt.isra.0+0x1795/0x1930 net/ipv4/ip_sockglue.c:959
        [<000000004ee1e21f>] ip_setsockopt+0x3b/0xb0 net/ipv4/ip_sockglue.c:1248
        [<0000000066cdfe74>] udp_setsockopt+0x4e/0x90 net/ipv4/udp.c:2618
        [<000000009383a786>] sock_common_setsockopt+0x38/0x50 net/core/sock.c:3126
        [<00000000d8ac0c94>] __sys_setsockopt+0x98/0x120 net/socket.c:2072
        [<000000001b1e9666>] __do_sys_setsockopt net/socket.c:2083 [inline]
        [<000000001b1e9666>] __se_sys_setsockopt net/socket.c:2080 [inline]
        [<000000001b1e9666>] __x64_sys_setsockopt+0x26/0x30 net/socket.c:2080
        [<00000000420d395e>] do_syscall_64+0x76/0x1a0 arch/x86/entry/common.c:301
        [<000000007fd83a4b>] entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Fixes: 24803f38a5c0 ("igmp: do not remove igmp souce list info when set link down")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Hangbin Liu <liuhangbin@gmail.com>
    Reported-by: syzbot+6ca1abd0db68b5173a4f@syzkaller.appspotmail.com
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit afe729d8d2247b15de19f6b833990f84a827786c
Author: Andreas Fritiofson <andreas.fritiofson@unjo.com>
Date:   Fri Jun 28 15:08:34 2019 +0200

    USB: serial: ftdi_sio: add ID for isodebug v1
    
    commit f8377eff548170e8ea8022c067a1fbdf9e1c46a8 upstream.
    
    This adds the vid:pid of the isodebug v1 isolated JTAG/SWD+UART. Only the
    second channel is available for use as a serial port.
    
    Signed-off-by: Andreas Fritiofson <andreas.fritiofson@unjo.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8c53bd9834261151c0c68f3164cf5cc6f7a965af
Author: Dianzhang Chen <dianzhangchen0@gmail.com>
Date:   Wed Jun 26 12:50:30 2019 +0800

    x86/tls: Fix possible spectre-v1 in do_get_thread_area()
    
    commit 993773d11d45c90cb1c6481c2638c3d9f092ea5b upstream.
    
    The index to access the threads tls array is controlled by userspace
    via syscall: sys_ptrace(), hence leading to a potential exploitation
    of the Spectre variant 1 vulnerability.
    
    The index can be controlled from:
            ptrace -> arch_ptrace -> do_get_thread_area.
    
    Fix this by sanitizing the user supplied index before using it to access
    the p->thread.tls_array.
    
    Signed-off-by: Dianzhang Chen <dianzhangchen0@gmail.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: bp@alien8.de
    Cc: hpa@zytor.com
    Link: https://lkml.kernel.org/r/1561524630-3642-1-git-send-email-dianzhangchen0@gmail.com
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 58ba5001051390e30d726fc44240ed182aa26c1b
Author: Dianzhang Chen <dianzhangchen0@gmail.com>
Date:   Tue Jun 25 23:30:17 2019 +0800

    x86/ptrace: Fix possible spectre-v1 in ptrace_get_debugreg()
    
    commit 31a2fbb390fee4231281b939e1979e810f945415 upstream.
    
    The index to access the threads ptrace_bps is controlled by userspace via
    syscall: sys_ptrace(), hence leading to a potential exploitation of the
    Spectre variant 1 vulnerability.
    
    The index can be controlled from:
        ptrace -> arch_ptrace -> ptrace_get_debugreg.
    
    Fix this by sanitizing the user supplied index before using it access
    thread->ptrace_bps.
    
    Signed-off-by: Dianzhang Chen <dianzhangchen0@gmail.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: bp@alien8.de
    Cc: hpa@zytor.com
    Link: https://lkml.kernel.org/r/1561476617-3759-1-git-send-email-dianzhangchen0@gmail.com
    [bwh: Backported to 3.16: fold in fix-up from commit 223cea6a4f05
     "Merge branch 'x86-pti-for-linus' of ..."]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c21c17039e93b5d4c1db276e448b5a197ae0963c
Author: Christian Lamparter <chunkeey@gmail.com>
Date:   Sat Jun 8 16:49:47 2019 +0200

    carl9170: fix misuse of device driver API
    
    commit feb09b2933275a70917a869989ea2823e7356be8 upstream.
    
    This patch follows Alan Stern's recent patch:
    "p54: Fix race between disconnect and firmware loading"
    
    that overhauled carl9170 buggy firmware loading and driver
    unbinding procedures.
    
    Since the carl9170 code was adapted from p54 it uses the
    same functions and is likely to have the same problem, but
    it's just that the syzbot hasn't reproduce them (yet).
    
    a summary from the changes (copied from the p54 patch):
     * Call usb_driver_release_interface() rather than
       device_release_driver().
    
     * Lock udev (the interface's parent) before unbinding the
       driver instead of locking udev->parent.
    
     * During the firmware loading process, take a reference
       to the USB interface instead of the USB device.
    
     * Don't take an unnecessary reference to the device during
       probe (and then don't drop it during disconnect).
    
    and
    
     * Make sure to prevent use-after-free bugs by explicitly
       setting the driver context to NULL after signaling the
       completion.
    
    Cc: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1c82c87a9280e921faf1ee2b473488f178287c19
Author: Eiichi Tsukata <devel@etsukata.com>
Date:   Wed Jun 26 14:40:11 2019 +0900

    EDAC: Fix global-out-of-bounds write when setting edac_mc_poll_msec
    
    commit d8655e7630dafa88bc37f101640e39c736399771 upstream.
    
    Commit 9da21b1509d8 ("EDAC: Poll timeout cannot be zero, p2") assumes
    edac_mc_poll_msec to be unsigned long, but the type of the variable still
    remained as int. Setting edac_mc_poll_msec can trigger out-of-bounds
    write.
    
    Reproducer:
    
      # echo 1001 > /sys/module/edac_core/parameters/edac_mc_poll_msec
    
    KASAN report:
    
      BUG: KASAN: global-out-of-bounds in edac_set_poll_msec+0x140/0x150
      Write of size 8 at addr ffffffffb91b2d00 by task bash/1996
    
      CPU: 1 PID: 1996 Comm: bash Not tainted 5.2.0-rc6+ #23
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.12.0-2.fc30 04/01/2014
      Call Trace:
       dump_stack+0xca/0x13e
       print_address_description.cold+0x5/0x246
       __kasan_report.cold+0x75/0x9a
       ? edac_set_poll_msec+0x140/0x150
       kasan_report+0xe/0x20
       edac_set_poll_msec+0x140/0x150
       ? dimmdev_location_show+0x30/0x30
       ? vfs_lock_file+0xe0/0xe0
       ? _raw_spin_lock+0x87/0xe0
       param_attr_store+0x1b5/0x310
       ? param_array_set+0x4f0/0x4f0
       module_attr_store+0x58/0x80
       ? module_attr_show+0x80/0x80
       sysfs_kf_write+0x13d/0x1a0
       kernfs_fop_write+0x2bc/0x460
       ? sysfs_kf_bin_read+0x270/0x270
       ? kernfs_notify+0x1f0/0x1f0
       __vfs_write+0x81/0x100
       vfs_write+0x1e1/0x560
       ksys_write+0x126/0x250
       ? __ia32_sys_read+0xb0/0xb0
       ? do_syscall_64+0x1f/0x390
       do_syscall_64+0xc1/0x390
       entry_SYSCALL_64_after_hwframe+0x49/0xbe
      RIP: 0033:0x7fa7caa5e970
      Code: 73 01 c3 48 8b 0d 28 d5 2b 00 f7 d8 64 89 01 48 83 c8 ff c3 66 0f 1f 44 00 00 83 3d 99 2d 2c 00 00 75 10 b8 01 00 00 00 04
      RSP: 002b:00007fff6acfdfe8 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
      RAX: ffffffffffffffda RBX: 0000000000000005 RCX: 00007fa7caa5e970
      RDX: 0000000000000005 RSI: 0000000000e95c08 RDI: 0000000000000001
      RBP: 0000000000e95c08 R08: 00007fa7cad1e760 R09: 00007fa7cb36a700
      R10: 0000000000000073 R11: 0000000000000246 R12: 0000000000000005
      R13: 0000000000000001 R14: 00007fa7cad1d600 R15: 0000000000000005
    
      The buggy address belongs to the variable:
       edac_mc_poll_msec+0x0/0x40
    
      Memory state around the buggy address:
       ffffffffb91b2c00: 00 00 00 00 fa fa fa fa 00 00 00 00 fa fa fa fa
       ffffffffb91b2c80: 00 00 00 00 fa fa fa fa 00 00 00 00 fa fa fa fa
      >ffffffffb91b2d00: 04 fa fa fa fa fa fa fa 04 fa fa fa fa fa fa fa
                         ^
       ffffffffb91b2d80: 04 fa fa fa fa fa fa fa 00 00 00 00 00 00 00 00
       ffffffffb91b2e00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    
    Fix it by changing the type of edac_mc_poll_msec to unsigned int.
    The reason why this patch adopts unsigned int rather than unsigned long
    is msecs_to_jiffies() assumes arg to be unsigned int. We can avoid
    integer conversion bugs and unsigned int will be large enough for
    edac_mc_poll_msec.
    
    Reviewed-by: James Morse <james.morse@arm.com>
    Fixes: 9da21b1509d8 ("EDAC: Poll timeout cannot be zero, p2")
    Signed-off-by: Eiichi Tsukata <devel@etsukata.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit fd6ab3a53b3f2882c6e59ef2a9d6494dfc351c14
Author: Boris Brezillon <boris.brezillon@collabora.com>
Date:   Wed Jun 19 05:21:33 2019 -0400

    media: v4l2: Test type instead of cfg->type in v4l2_ctrl_new_custom()
    
    commit 07d89227a983df957a6a7c56f7c040cde9ac571f upstream.
    
    cfg->type can be overridden by v4l2_ctrl_fill() and the new value is
    stored in the local type var. Fix the tests to use this local var.
    
    Fixes: 0996517cf8ea ("V4L/DVB: v4l2: Add new control handling framework")
    Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
    [hverkuil-cisco@xs4all.nl: change to !qmenu and !qmenu_int (checkpatch)]
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5d9aad6eb6002a6d6af0a3a709cb3a7a7aef173d
Author: Brian Norris <briannorris@chromium.org>
Date:   Wed Jul 24 12:46:34 2019 -0700

    mwifiex: fix 802.11n/WPA detection
    
    commit df612421fe2566654047769c6852ffae1a31df16 upstream.
    
    Commit 63d7ef36103d ("mwifiex: Don't abort on small, spec-compliant
    vendor IEs") adjusted the ieee_types_vendor_header struct, which
    inadvertently messed up the offsets used in
    mwifiex_is_wpa_oui_present(). Add that offset back in, mirroring
    mwifiex_is_rsn_oui_present().
    
    As it stands, commit 63d7ef36103d breaks compatibility with WPA (not
    WPA2) 802.11n networks, since we hit the "info: Disable 11n if AES is
    not supported by AP" case in mwifiex_is_network_compatible().
    
    Fixes: 63d7ef36103d ("mwifiex: Don't abort on small, spec-compliant vendor IEs")
    Signed-off-by: Brian Norris <briannorris@chromium.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    [bwh: Backported to 3.16: adjust filenames, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0297dc70e19eb2a114e0c5763718f55165742644
Author: Brian Norris <briannorris@chromium.org>
Date:   Fri Jun 14 17:13:20 2019 -0700

    mwifiex: Don't abort on small, spec-compliant vendor IEs
    
    commit 63d7ef36103d26f20325a921ecc96a3288560146 upstream.
    
    Per the 802.11 specification, vendor IEs are (at minimum) only required
    to contain an OUI. A type field is also included in ieee80211.h (struct
    ieee80211_vendor_ie) but doesn't appear in the specification. The
    remaining fields (subtype, version) are a convention used in WMM
    headers.
    
    Thus, we should not reject vendor-specific IEs that have only the
    minimum length (3 bytes) -- we should skip over them (since we only want
    to match longer IEs, that match either WMM or WPA formats). We can
    reject elements that don't have the minimum-required 3 byte OUI.
    
    While we're at it, move the non-standard subtype and version fields into
    the WMM structs, to avoid this confusion in the future about generic
    "vendor header" attributes.
    
    Fixes: 685c9b7750bf ("mwifiex: Abort at too short BSS descriptor element")
    Cc: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Brian Norris <briannorris@chromium.org>
    Reviewed-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    [bwh: Backported to 3.16: adjust filenames, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 40e148c0888c95d49dad797ec045f96ade8ed4a1
Author: Vishnu DASA <vdasa@vmware.com>
Date:   Fri May 24 15:13:10 2019 +0000

    VMCI: Fix integer overflow in VMCI handle arrays
    
    commit 1c2eb5b2853c9f513690ba6b71072d8eb65da16a upstream.
    
    The VMCI handle array has an integer overflow in
    vmci_handle_arr_append_entry when it tries to expand the array. This can be
    triggered from a guest, since the doorbell link hypercall doesn't impose a
    limit on the number of doorbell handles that a VM can create in the
    hypervisor, and these handles are stored in a handle array.
    
    In this change, we introduce a mandatory max capacity for handle
    arrays/lists to avoid excessive memory usage.
    
    Signed-off-by: Vishnu Dasa <vdasa@vmware.com>
    Reviewed-by: Adit Ranadive <aditr@vmware.com>
    Reviewed-by: Jorgen Hansen <jhansen@vmware.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2d1d8632e0d99f1ef5cc90332080c3e41d9ef637
Author: Heiko Carstens <heiko.carstens@de.ibm.com>
Date:   Mon Jun 17 14:02:41 2019 +0200

    s390: fix stfle zero padding
    
    commit 4f18d869ffd056c7858f3d617c71345cf19be008 upstream.
    
    The stfle inline assembly returns the number of double words written
    (condition code 0) or the double words it would have written
    (condition code 3), if the memory array it got as parameter would have
    been large enough.
    
    The current stfle implementation assumes that the array is always
    large enough and clears those parts of the array that have not been
    written to with a subsequent memset call.
    
    If however the array is not large enough memset will get a negative
    length parameter, which means that memset clears memory until it gets
    an exception and the kernel crashes.
    
    To fix this simply limit the maximum length. Move also the inline
    assembly to an extra function to avoid clobbering of register 0, which
    might happen because of the added min_t invocation together with code
    instrumentation.
    
    The bug was introduced with commit 14375bc4eb8d ("[S390] cleanup
    facility list handling") but was rather harmless, since it would only
    write to a rather large array. It became a potential problem with
    commit 3ab121ab1866 ("[S390] kernel: Add z/VM LGR detection"). Since
    then it writes to an array with only four double words, while some
    machines already deliver three double words. As soon as machines have
    a facility bit within the fifth double a crash on IPL would happen.
    
    Fixes: 14375bc4eb8d ("[S390] cleanup facility list handling")
    Reviewed-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1d69d0876f0fc40fa7a08c9bba4bdc90ab16d957
Author: Jörgen Storvist <jorgen.storvist@gmail.com>
Date:   Wed Jun 19 00:30:19 2019 +0200

    USB: serial: option: add support for GosunCn ME3630 RNDIS mode
    
    commit aed2a26283528fb69c38e414f649411aa48fb391 upstream.
    
    Added USB IDs for GosunCn ME3630 cellular module in RNDIS mode.
    
    T:  Bus=03 Lev=01 Prnt=01 Port=01 Cnt=03 Dev#= 18 Spd=480 MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=19d2 ProdID=0601 Rev=03.18
    S:  Manufacturer=Android
    S:  Product=Android
    S:  SerialNumber=b950269c
    C:  #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=500mA
    I:  If#=0x0 Alt= 0 #EPs= 1 Cls=e0(wlcon) Sub=01 Prot=03 Driver=rndis_host
    I:  If#=0x1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=rndis_host
    I:  If#=0x2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    I:  If#=0x3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    I:  If#=0x4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    
    Signed-off-by: Jörgen Storvist <jorgen.storvist@gmail.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4b33fc433fbcf408b4b79874e779ccd3e02ec1bf
Author: Jörgen Storvist <jorgen.storvist@gmail.com>
Date:   Tue Dec 11 18:28:28 2018 +0100

    USB: serial: option: add GosunCn ZTE WeLink ME3630
    
    commit 70a7444c550a75584ffcfae95267058817eff6a7 upstream.
    
    Added USB serial option driver support for GosunCn ZTE WeLink ME3630
    series cellular modules for USB modes ECM/NCM and MBIM.
    
    usb-devices output MBIM mode:
    T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 10 Spd=480 MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=19d2 ProdID=0602 Rev=03.18
    S:  Manufacturer=Android
    S:  Product=Android
    S:  SerialNumber=
    C:  #Ifs= 5 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= 1 Cls=02(commc) Sub=0e Prot=00 Driver=cdc_mbim
    I:  If#= 4 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
    
    usb-devices output ECM/NCM mode:
    T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 11 Spd=480 MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=19d2 ProdID=1476 Rev=03.18
    S:  Manufacturer=Android
    S:  Product=Android
    S:  SerialNumber=
    C:  #Ifs= 5 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= 1 Cls=02(commc) Sub=06 Prot=00 Driver=cdc_ether
    I:  If#= 4 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
    
    Signed-off-by: Jörgen Storvist <jorgen.storvist@gmail.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 987d601f0884e468b2c86070a20e73dfd6918c09
Author: Ravi Bangoria <ravi.bangoria@linux.ibm.com>
Date:   Thu Jun 13 09:00:14 2019 +0530

    powerpc/watchpoint: Restore NV GPRs while returning from exception
    
    commit f474c28fbcbe42faca4eb415172c07d76adcb819 upstream.
    
    powerpc hardware triggers watchpoint before executing the instruction.
    To make trigger-after-execute behavior, kernel emulates the
    instruction. If the instruction is 'load something into non-volatile
    register', exception handler should restore emulated register state
    while returning back, otherwise there will be register state
    corruption. eg, adding a watchpoint on a list can corrput the list:
    
      # cat /proc/kallsyms | grep kthread_create_list
      c00000000121c8b8 d kthread_create_list
    
    Add watchpoint on kthread_create_list->prev:
    
      # perf record -e mem:0xc00000000121c8c0
    
    Run some workload such that new kthread gets invoked. eg, I just
    logged out from console:
    
      list_add corruption. next->prev should be prev (c000000001214e00), \
            but was c00000000121c8b8. (next=c00000000121c8b8).
      WARNING: CPU: 59 PID: 309 at lib/list_debug.c:25 __list_add_valid+0xb4/0xc0
      CPU: 59 PID: 309 Comm: kworker/59:0 Kdump: loaded Not tainted 5.1.0-rc7+ #69
      ...
      NIP __list_add_valid+0xb4/0xc0
      LR __list_add_valid+0xb0/0xc0
      Call Trace:
      __list_add_valid+0xb0/0xc0 (unreliable)
      __kthread_create_on_node+0xe0/0x260
      kthread_create_on_node+0x34/0x50
      create_worker+0xe8/0x260
      worker_thread+0x444/0x560
      kthread+0x160/0x1a0
      ret_from_kernel_thread+0x5c/0x70
    
    List corruption happened because it uses 'load into non-volatile
    register' instruction:
    
    Snippet from __kthread_create_on_node:
    
      c000000000136be8:     addis   r29,r2,-19
      c000000000136bec:     ld      r29,31424(r29)
            if (!__list_add_valid(new, prev, next))
      c000000000136bf0:     mr      r3,r30
      c000000000136bf4:     mr      r5,r28
      c000000000136bf8:     mr      r4,r29
      c000000000136bfc:     bl      c00000000059a2f8 <__list_add_valid+0x8>
    
    Register state from WARN_ON():
    
      GPR00: c00000000059a3a0 c000007ff23afb50 c000000001344e00 0000000000000075
      GPR04: 0000000000000000 0000000000000000 0000001852af8bc1 0000000000000000
      GPR08: 0000000000000001 0000000000000007 0000000000000006 00000000000004aa
      GPR12: 0000000000000000 c000007ffffeb080 c000000000137038 c000005ff62aaa00
      GPR16: 0000000000000000 0000000000000000 c000007fffbe7600 c000007fffbe7370
      GPR20: c000007fffbe7320 c000007fffbe7300 c000000001373a00 0000000000000000
      GPR24: fffffffffffffef7 c00000000012e320 c000007ff23afcb0 c000000000cb8628
      GPR28: c00000000121c8b8 c000000001214e00 c000007fef5b17e8 c000007fef5b17c0
    
    Watchpoint hit at 0xc000000000136bec.
    
      addis   r29,r2,-19
       => r29 = 0xc000000001344e00 + (-19 << 16)
       => r29 = 0xc000000001214e00
    
      ld      r29,31424(r29)
       => r29 = *(0xc000000001214e00 + 31424)
       => r29 = *(0xc00000000121c8c0)
    
    0xc00000000121c8c0 is where we placed a watchpoint and thus this
    instruction was emulated by emulate_step. But because handle_dabr_fault
    did not restore emulated register state, r29 still contains stale
    value in above register state.
    
    Fixes: 5aae8a5370802 ("powerpc, hw_breakpoints: Implement hw_breakpoints for 64-bit server processors")
    Signed-off-by: Ravi Bangoria <ravi.bangoria@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a0cb3f60e1f982751d64503031d4a49ea2e3e750
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Mon Jun 17 21:42:14 2019 +0000

    powerpc/32s: fix suspend/resume when IBATs 4-7 are used
    
    commit 6ecb78ef56e08d2119d337ae23cb951a640dc52d upstream.
    
    Previously, only IBAT1 and IBAT2 were used to map kernel linear mem.
    Since commit 63b2bc619565 ("powerpc/mm/32s: Use BATs for
    STRICT_KERNEL_RWX"), we may have all 8 BATs used for mapping
    kernel text. But the suspend/restore functions only save/restore
    BATs 0 to 3, and clears BATs 4 to 7.
    
    Make suspend and restore functions respectively save and reload
    the 8 BATs on CPUs having MMU_FTR_USE_HIGH_BATS feature.
    
    Reported-by: Andreas Schwab <schwab@linux-m68k.org>
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d96f66a122450fb86dfb93a528f728a30d845676
Author: Kiruthika Varadarajan <Kiruthika.Varadarajan@harman.com>
Date:   Tue Jun 18 08:39:06 2019 +0000

    usb: gadget: ether: Fix race between gether_disconnect and rx_submit
    
    commit d29fcf7078bc8be2b6366cbd4418265b53c94fac upstream.
    
    On spin lock release in rx_submit, gether_disconnect get a chance to
    run, it makes port_usb NULL, rx_submit access NULL port USB, hence null
    pointer crash.
    
    Fixed by releasing the lock in rx_submit after port_usb is used.
    
    Fixes: 2b3d942c4878 ("usb ethernet gadget: split out network core")
    Signed-off-by: Kiruthika Varadarajan <Kiruthika.Varadarajan@harman.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    [bwh: Backported to 3.16: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9e00f6e083097d9ea5c9e6c4387fe541375869f9
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date:   Wed Jun 12 13:57:39 2019 +0300

    PCI: Do not poll for PME if the device is in D3cold
    
    commit 000dd5316e1c756a1c028f22e01d06a38249dd4d upstream.
    
    PME polling does not take into account that a device that is directly
    connected to the host bridge may go into D3cold as well. This leads to a
    situation where the PME poll thread reads from a config space of a
    device that is in D3cold and gets incorrect information because the
    config space is not accessible.
    
    Here is an example from Intel Ice Lake system where two PCIe root ports
    are in D3cold (I've instrumented the kernel to log the PMCSR register
    contents):
    
      [   62.971442] pcieport 0000:00:07.1: Check PME status, PMCSR=0xffff
      [   62.971504] pcieport 0000:00:07.0: Check PME status, PMCSR=0xffff
    
    Since 0xffff is interpreted so that PME is pending, the root ports will
    be runtime resumed. This repeats over and over again essentially
    blocking all runtime power management.
    
    Prevent this from happening by checking whether the device is in D3cold
    before its PME status is read.
    
    Fixes: 71a83bd727cc ("PCI/PM: add runtime PM support to PCIe port")
    Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Reviewed-by: Lukas Wunner <lukas@wunner.de>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4188755609651c638af746dfd814c8aba297d81c
Author: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Date:   Fri Jun 14 11:13:55 2019 +0200

    xfrm: fix sa selector validation
    
    commit b8d6d0079757cbd1b69724cfd1c08e2171c68cee upstream.
    
    After commit b38ff4075a80, the following command does not work anymore:
    $ ip xfrm state add src 10.125.0.2 dst 10.125.0.1 proto esp spi 34 reqid 1 \
      mode tunnel enc 'cbc(aes)' 0xb0abdba8b782ad9d364ec81e3a7d82a1 auth-trunc \
      'hmac(sha1)' 0xe26609ebd00acb6a4d51fca13e49ea78a72c73e6 96 flag align4
    
    In fact, the selector is not mandatory, allow the user to provide an empty
    selector.
    
    Fixes: b38ff4075a80 ("xfrm: Fix xfrm sel prefix length validation")
    CC: Anirudh Gupta <anirudh.gupta@sophos.com>
    Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 500b7fc33efa5189da1238dd9dd84acecdbb749b
Author: Russell King <rmk+kernel@armlinux.org.uk>
Date:   Mon Jun 10 20:10:45 2019 +0300

    gpio: omap: fix lack of irqstatus_raw0 for OMAP4
    
    commit 64ea3e9094a1f13b96c33244a3fb3a0f45690bd2 upstream.
    
    Commit 384ebe1c2849 ("gpio/omap: Add DT support to GPIO driver") added
    the register definition tables to the gpio-omap driver. Subsequently to
    that commit, commit 4e962e8998cc ("gpio/omap: remove cpu_is_omapxxxx()
    checks from *_runtime_resume()") added definitions for irqstatus_raw*
    registers to the legacy OMAP4 definitions, but missed the DT
    definitions.
    
    This causes an unintentional change of behaviour for the 1.101 errata
    workaround on OMAP4 platforms. Fix this oversight.
    
    Fixes: 4e962e8998cc ("gpio/omap: remove cpu_is_omapxxxx() checks from *_runtime_resume()")
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
    Tested-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e75bccfb93dd7bc4f7c393e563fabcf99cd14057
Author: Wang Hai <wanghai26@huawei.com>
Date:   Wed May 15 22:37:25 2019 +0800

    memstick: Fix error cleanup path of memstick_init
    
    commit 65f1a0d39c289bb6fc85635528cd36c4b07f560e upstream.
    
    If bus_register fails. On its error handling path, it has cleaned up
    what it has done. There is no need to call bus_unregister again.
    Otherwise, if bus_unregister is called, issues such as null-ptr-deref
    will arise.
    
    Syzkaller report this:
    
    kobject_add_internal failed for memstick (error: -12 parent: bus)
    BUG: KASAN: null-ptr-deref in sysfs_remove_file_ns+0x1b/0x40 fs/sysfs/file.c:467
    Read of size 8 at addr 0000000000000078 by task syz-executor.0/4460
    
    Call Trace:
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0xa9/0x10e lib/dump_stack.c:113
     __kasan_report+0x171/0x18d mm/kasan/report.c:321
     kasan_report+0xe/0x20 mm/kasan/common.c:614
     sysfs_remove_file_ns+0x1b/0x40 fs/sysfs/file.c:467
     sysfs_remove_file include/linux/sysfs.h:519 [inline]
     bus_remove_file+0x6c/0x90 drivers/base/bus.c:145
     remove_probe_files drivers/base/bus.c:599 [inline]
     bus_unregister+0x6e/0x100 drivers/base/bus.c:916 ? 0xffffffffc1590000
     memstick_init+0x7a/0x1000 [memstick]
     do_one_initcall+0xb9/0x3b5 init/main.c:914
     do_init_module+0xe0/0x330 kernel/module.c:3468
     load_module+0x38eb/0x4270 kernel/module.c:3819
     __do_sys_finit_module+0x162/0x190 kernel/module.c:3909
     do_syscall_64+0x72/0x2a0 arch/x86/entry/common.c:298
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    Fixes: baf8532a147d ("memstick: initial commit for Sony MemoryStick support")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Wang Hai <wanghai26@huawei.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d94e6466aa2f5defd5910b35b2cfa35d7e31c640
Author: Julian Wiedmann <jwi@linux.ibm.com>
Date:   Mon Jun 3 07:47:04 2019 +0200

    s390/qdio: handle PENDING state for QEBSM devices
    
    commit 04310324c6f482921c071444833e70fe861b73d9 upstream.
    
    When a CQ-enabled device uses QEBSM for SBAL state inspection,
    get_buf_states() can return the PENDING state for an Output Queue.
    get_outbound_buffer_frontier() isn't prepared for this, and any PENDING
    buffer will permanently stall all further completion processing on this
    Queue.
    
    This isn't a concern for non-QEBSM devices, as get_buf_states() for such
    devices will manually turn PENDING buffers into EMPTY ones.
    
    Fixes: 104ea556ee7f ("qdio: support asynchronous delivery of storage blocks")
    Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
    Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9ac9eeca2c06155e2198ee15ea96ccf7c85e477c
Author: Eric Biggers <ebiggers@google.com>
Date:   Thu May 30 10:50:39 2019 -0700

    crypto: ghash - fix unaligned memory access in ghash_setkey()
    
    commit 5c6bc4dfa515738149998bb0db2481a4fdead979 upstream.
    
    Changing ghash_mod_init() to be subsys_initcall made it start running
    before the alignment fault handler has been installed on ARM.  In kernel
    builds where the keys in the ghash test vectors happened to be
    misaligned in the kernel image, this exposed the longstanding bug that
    ghash_setkey() is incorrectly casting the key buffer (which can have any
    alignment) to be128 for passing to gf128mul_init_4k_lle().
    
    Fix this by memcpy()ing the key to a temporary buffer.
    
    Don't fix it by setting an alignmask on the algorithm instead because
    that would unnecessarily force alignment of the data too.
    
    Fixes: 2cdc6899a88e ("crypto: ghash - Add GHASH digest algorithm for GCM")
    Reported-by: Peter Robinson <pbrobinson@gmail.com>
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Tested-by: Peter Robinson <pbrobinson@gmail.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0e473077206cacaf3beb9401e8ecd3d5b6cf8397
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Tue May 21 13:34:10 2019 +0000

    crypto: talitos - check AES key size
    
    commit 1ba34e71e9e56ac29a52e0d42b6290f3dc5bfd90 upstream.
    
    Although the HW accepts any size and silently truncates
    it to the correct length, the extra tests expects EINVAL
    to be returned when the key size is not valid.
    
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Fixes: 4de9d0b547b9 ("crypto: talitos - Add ablkcipher algorithms")
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    [bwh: Backported to 3.16: only cbc(aes) algorithm is supported]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 63cd7cdd67aa02475629b15b91742188657e5493
Author: Jeremy Sowden <jeremy@azazel.net>
Date:   Sat May 25 19:09:35 2019 +0100

    af_key: fix leaks in key_pol_get_resp and dump_sp.
    
    commit 7c80eb1c7e2b8420477fbc998971d62a648035d9 upstream.
    
    In both functions, if pfkey_xfrm_policy2msg failed we leaked the newly
    allocated sk_buff.  Free it on error.
    
    Fixes: 55569ce256ce ("Fix conversion between IPSEC_MODE_xxx and XFRM_MODE_xxx.")
    Reported-by: syzbot+4f0529365f7f2208d9f0@syzkaller.appspotmail.com
    Signed-off-by: Jeremy Sowden <jeremy@azazel.net>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 53fa36261afe8c5e53367a80896a86412c52b5ed
Author: Anirudh Gupta <anirudhrudr@gmail.com>
Date:   Tue May 21 20:59:47 2019 +0530

    xfrm: Fix xfrm sel prefix length validation
    
    commit b38ff4075a80b4da5cb2202d7965332ca0efb213 upstream.
    
    Family of src/dst can be different from family of selector src/dst.
    Use xfrm selector family to validate address prefix length,
    while verifying new sa from userspace.
    
    Validated patch with this command:
    ip xfrm state add src 1.1.6.1 dst 1.1.6.2 proto esp spi 4260196 \
    reqid 20004 mode tunnel aead "rfc4106(gcm(aes))" \
    0x1111016400000000000000000000000044440001 128 \
    sel src 1011:1:4::2/128 sel dst 1021:1:4::2/128 dev Port5
    
    Fixes: 07bf7908950a ("xfrm: Validate address prefix lengths in the xfrm selector.")
    Signed-off-by: Anirudh Gupta <anirudh.gupta@sophos.com>
    Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 73a9a357fa49fa39f7e45e6e03077efaf5253233
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Wed May 15 12:29:52 2019 -0500

    signal/pid_namespace: Fix reboot_pid_ns to use send_sig not force_sig
    
    commit f9070dc94542093fd516ae4ccea17ef46a4362c5 upstream.
    
    The locking in force_sig_info is not prepared to deal with a task that
    exits or execs (as sighand may change).  The is not a locking problem
    in force_sig as force_sig is only built to handle synchronous
    exceptions.
    
    Further the function force_sig_info changes the signal state if the
    signal is ignored, or blocked or if SIGNAL_UNKILLABLE will prevent the
    delivery of the signal.  The signal SIGKILL can not be ignored and can
    not be blocked and SIGNAL_UNKILLABLE won't prevent it from being
    delivered.
    
    So using force_sig rather than send_sig for SIGKILL is confusing
    and pointless.
    
    Because it won't impact the sending of the signal and and because
    using force_sig is wrong, replace force_sig with send_sig.
    
    Cc: Daniel Lezcano <daniel.lezcano@free.fr>
    Cc: Serge Hallyn <serge@hallyn.com>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Fixes: cf3f89214ef6 ("pidns: add reboot_pid_ns() to handle the reboot syscall")
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9b5ca7c1bb9fac115a2ea7483f38cde21b88eb28
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Wed May 22 12:17:11 2019 +0000

    tty: serial: cpm_uart - fix init when SMC is relocated
    
    commit 06aaa3d066db87e8478522d910285141d44b1e58 upstream.
    
    SMC relocation can also be activated earlier by the bootloader,
    so the driver's behaviour cannot rely on selected kernel config.
    
    When the SMC is relocated, CPM_CR_INIT_TRX cannot be used.
    
    But the only thing CPM_CR_INIT_TRX does is to clear the
    rstate and tstate registers, so this can be done manually,
    even when SMC is not relocated.
    
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Fixes: 9ab921201444 ("cpm_uart: fix non-console port startup bug")
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d8c831f003fa37ddd9db714581479e9340f584c4
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Tue Apr 30 19:59:42 2019 +0800

    9p/virtio: Add cleanup path in p9_virtio_init
    
    commit d4548543fc4ece56c6f04b8586f435fb4fd84c20 upstream.
    
    KASAN report this:
    
    BUG: unable to handle kernel paging request at ffffffffa0097000
    PGD 3870067 P4D 3870067 PUD 3871063 PMD 2326e2067 PTE 0
    Oops: 0000 [#1
    CPU: 0 PID: 5340 Comm: modprobe Not tainted 5.1.0-rc7+ #25
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.9.3-0-ge2fc41e-prebuilt.qemu-project.org 04/01/2014
    RIP: 0010:__list_add_valid+0x10/0x70
    Code: c3 48 8b 06 55 48 89 e5 5d 48 39 07 0f 94 c0 0f b6 c0 c3 90 90 90 90 90 90 90 55 48 89 d0 48 8b 52 08 48 89 e5 48 39 f2 75 19 <48> 8b 32 48 39 f0 75 3a
    
    RSP: 0018:ffffc90000e23c68 EFLAGS: 00010246
    RAX: ffffffffa00ad000 RBX: ffffffffa009d000 RCX: 0000000000000000
    RDX: ffffffffa0097000 RSI: ffffffffa0097000 RDI: ffffffffa009d000
    RBP: ffffc90000e23c68 R08: 0000000000000001 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000000 R12: ffffffffa0097000
    R13: ffff888231797180 R14: 0000000000000000 R15: ffffc90000e23e78
    FS:  00007fb215285540(0000) GS:ffff888237a00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: ffffffffa0097000 CR3: 000000022f144000 CR4: 00000000000006f0
    Call Trace:
     v9fs_register_trans+0x2f/0x60 [9pnet
     ? 0xffffffffa0087000
     p9_virtio_init+0x25/0x1000 [9pnet_virtio
     do_one_initcall+0x6c/0x3cc
     ? kmem_cache_alloc_trace+0x248/0x3b0
     do_init_module+0x5b/0x1f1
     load_module+0x1db1/0x2690
     ? m_show+0x1d0/0x1d0
     __do_sys_finit_module+0xc5/0xd0
     __x64_sys_finit_module+0x15/0x20
     do_syscall_64+0x6b/0x1d0
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    RIP: 0033:0x7fb214d8e839
    Code: 00 f3 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01
    
    RSP: 002b:00007ffc96554278 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
    RAX: ffffffffffffffda RBX: 000055e67eed2aa0 RCX: 00007fb214d8e839
    RDX: 0000000000000000 RSI: 000055e67ce95c2e RDI: 0000000000000003
    RBP: 000055e67ce95c2e R08: 0000000000000000 R09: 000055e67eed2aa0
    R10: 0000000000000003 R11: 0000000000000246 R12: 0000000000000000
    R13: 000055e67eeda500 R14: 0000000000040000 R15: 000055e67eed2aa0
    Modules linked in: 9pnet_virtio(+) 9pnet gre rfkill vmw_vsock_virtio_transport_common vsock [last unloaded: 9pnet_virtio
    CR2: ffffffffa0097000
    ---[ end trace 4a52bb13ff07b761
    
    If register_virtio_driver() fails in p9_virtio_init,
    we should call v9fs_unregister_trans() to do cleanup.
    
    Link: http://lkml.kernel.org/r/20190430115942.41840-1-yuehaibing@huawei.com
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Fixes: b530cc794024 ("9p: add virtio transport")
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Signed-off-by: Dominique Martinet <dominique.martinet@cea.fr>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 67880a74c0504623e0ad9d30c32ada45b1a9d9a0
Author: Russell King <rmk+kernel@armlinux.org.uk>
Date:   Thu May 2 17:19:18 2019 +0100

    ARM: riscpc: fix DMA
    
    commit ffd9a1ba9fdb7f2bd1d1ad9b9243d34e96756ba2 upstream.
    
    DMA got broken a while back in two different ways:
    1) a change in the behaviour of disable_irq() to wait for the interrupt
       to finish executing causes us to deadlock at the end of DMA.
    2) a change to avoid modifying the scatterlist left the first transfer
       uninitialised.
    
    DMA is only used with expansion cards, so has gone unnoticed.
    
    Fixes: fa4e99899932 ("[ARM] dma: RiscPC: don't modify DMA SG entries")
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 30f52cfd5239697c0552ff169e16c2aebcd3b665
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed Jul 4 12:35:56 2018 +0300

    eCryptfs: fix a couple type promotion bugs
    
    commit 0bdf8a8245fdea6f075a5fede833a5fcf1b3466c upstream.
    
    ECRYPTFS_SIZE_AND_MARKER_BYTES is type size_t, so if "rc" is negative
    that gets type promoted to a high positive value and treated as success.
    
    Fixes: 778aeb42a708 ("eCryptfs: Cleanup and optimize ecryptfs_lookup_interpose()")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    [tyhicks: Use "if/else if" rather than "if/if"]
    Signed-off-by: Tyler Hicks <tyhicks@canonical.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>