commit 65be6fa1da9eb665ae50b2d52bc450e64cbc4ec0
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Thu Mar 16 02:27:28 2017 +0000

    Linux 3.16.42

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

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

commit 3931fb83dd1944016f8d719108dfd986494c0235
Author: Jiri Slaby <jslaby@suse.cz>
Date:   Thu Nov 26 19:28:26 2015 +0100

    TTY: n_hdlc, fix lockdep false positive
    
    commit e9b736d88af1a143530565929390cadf036dc799 upstream.
    
    The class of 4 n_hdls buf locks is the same because a single function
    n_hdlc_buf_list_init is used to init all the locks. But since
    flush_tx_queue takes n_hdlc->tx_buf_list.spinlock and then calls
    n_hdlc_buf_put which takes n_hdlc->tx_free_buf_list.spinlock, lockdep
    emits a warning:
    =============================================
    [ INFO: possible recursive locking detected ]
    4.3.0-25.g91e30a7-default #1 Not tainted
    ---------------------------------------------
    a.out/1248 is trying to acquire lock:
     (&(&list->spinlock)->rlock){......}, at: [<ffffffffa01fd020>] n_hdlc_buf_put+0x20/0x60 [n_hdlc]
    
    but task is already holding lock:
     (&(&list->spinlock)->rlock){......}, at: [<ffffffffa01fdc07>] n_hdlc_tty_ioctl+0x127/0x1d0 [n_hdlc]
    
    other info that might help us debug this:
     Possible unsafe locking scenario:
    
           CPU0
           ----
      lock(&(&list->spinlock)->rlock);
      lock(&(&list->spinlock)->rlock);
    
     *** DEADLOCK ***
    
     May be due to missing lock nesting notation
    
    2 locks held by a.out/1248:
     #0:  (&tty->ldisc_sem){++++++}, at: [<ffffffff814c9eb0>] tty_ldisc_ref_wait+0x20/0x50
     #1:  (&(&list->spinlock)->rlock){......}, at: [<ffffffffa01fdc07>] n_hdlc_tty_ioctl+0x127/0x1d0 [n_hdlc]
    ...
    Call Trace:
    ...
     [<ffffffff81738fd0>] _raw_spin_lock_irqsave+0x50/0x70
     [<ffffffffa01fd020>] n_hdlc_buf_put+0x20/0x60 [n_hdlc]
     [<ffffffffa01fdc24>] n_hdlc_tty_ioctl+0x144/0x1d0 [n_hdlc]
     [<ffffffff814c25c1>] tty_ioctl+0x3f1/0xe40
    ...
    
    Fix it by initializing the spin_locks separately. This removes also
    reduntand memset of a freshly kzallocated space.
    
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ae722d6df3efc7a2df272644d82639f2679042ed
Author: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Date:   Thu Feb 23 09:31:18 2017 -0300

    sctp: deny peeloff operation on asocs with threads sleeping on it
    
    commit dfcb9f4f99f1e9a49e43398a7bfbf56927544af1 upstream.
    
    commit 2dcab5984841 ("sctp: avoid BUG_ON on sctp_wait_for_sndbuf")
    attempted to avoid a BUG_ON call when the association being used for a
    sendmsg() is blocked waiting for more sndbuf and another thread did a
    peeloff operation on such asoc, moving it to another socket.
    
    As Ben Hutchings noticed, then in such case it would return without
    locking back the socket and would cause two unlocks in a row.
    
    Further analysis also revealed that it could allow a double free if the
    application managed to peeloff the asoc that is created during the
    sendmsg call, because then sctp_sendmsg() would try to free the asoc
    that was created only for that call.
    
    This patch takes another approach. It will deny the peeloff operation
    if there is a thread sleeping on the asoc, so this situation doesn't
    exist anymore. This avoids the issues described above and also honors
    the syscalls that are already being handled (it can be multiple sendmsg
    calls).
    
    Joint work with Xin Long.
    
    Fixes: 2dcab5984841 ("sctp: avoid BUG_ON on sctp_wait_for_sndbuf")
    Cc: Alexander Popov <alex.popov@linux.com>
    Cc: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2ad78d37e15d7adba80deb103068faf6d88f95ac
Author: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Date:   Mon Feb 6 18:10:31 2017 -0200

    sctp: avoid BUG_ON on sctp_wait_for_sndbuf
    
    commit 2dcab598484185dea7ec22219c76dcdd59e3cb90 upstream.
    
    Alexander Popov reported that an application may trigger a BUG_ON in
    sctp_wait_for_sndbuf if the socket tx buffer is full, a thread is
    waiting on it to queue more data and meanwhile another thread peels off
    the association being used by the first thread.
    
    This patch replaces the BUG_ON call with a proper error handling. It
    will return -EPIPE to the original sendmsg call, similarly to what would
    have been done if the association wasn't found in the first place.
    
    Acked-by: Alexander Popov <alex.popov@linux.com>
    Signed-off-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Reviewed-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 13508cb3bf17a73b91957e7070112b710bdfadc2
Author: Davidlohr Bueso <dave@stgolabs.net>
Date:   Mon Feb 27 14:28:24 2017 -0800

    ipc/shm: Fix shmat mmap nil-page protection
    
    commit 95e91b831f87ac8e1f8ed50c14d709089b4e01b8 upstream.
    
    The issue is described here, with a nice testcase:
    
        https://bugzilla.kernel.org/show_bug.cgi?id=192931
    
    The problem is that shmat() calls do_mmap_pgoff() with MAP_FIXED, and
    the address rounded down to 0.  For the regular mmap case, the
    protection mentioned above is that the kernel gets to generate the
    address -- arch_get_unmapped_area() will always check for MAP_FIXED and
    return that address.  So by the time we do security_mmap_addr(0) things
    get funky for shmat().
    
    The testcase itself shows that while a regular user crashes, root will
    not have a problem attaching a nil-page.  There are two possible fixes
    to this.  The first, and which this patch does, is to simply allow root
    to crash as well -- this is also regular mmap behavior, ie when hacking
    up the testcase and adding mmap(...  |MAP_FIXED).  While this approach
    is the safer option, the second alternative is to ignore SHM_RND if the
    rounded address is 0, thus only having MAP_SHARED flags.  This makes the
    behavior of shmat() identical to the mmap() case.  The downside of this
    is obviously user visible, but does make sense in that it maintains
    semantics after the round-down wrt 0 address and mmap.
    
    Passes shm related ltp tests.
    
    Link: http://lkml.kernel.org/r/1486050195-18629-1-git-send-email-dave@stgolabs.net
    Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
    Reported-by: Gareth Evans <gareth.evans@contextis.co.uk>
    Cc: Manfred Spraul <manfred@colorfullife.com>
    Cc: Michael Kerrisk <mtk.manpages@googlemail.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 591fc80b6369a886a1d21cacf11f91b455781df3
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Tue Jan 24 11:56:21 2017 +0100

    kvm: fix page struct leak in handle_vmon
    
    commit 06ce521af9558814b8606c0476c54497cf83a653 upstream.
    
    handle_vmon gets a reference on VMXON region page,
    but does not release it. Release the reference.
    
    Found by syzkaller; based on a patch by Dmitry.
    
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    [bwh: Backported to 3.16: use skip_emulated_instruction()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 58b44358eb71133ac72ec5cc7267625b78598815
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Mon Mar 6 19:09:14 2017 +0000

    Revert "KVM: x86: expose MSR_TSC_AUX to userspace"
    
    This reverts commit a79ed0ed3763b3558b74e7d65fdd8c0215b5b6a2, which was
    commit 9dbe6cf941a6fe82933aef565e4095fb10f65023 upstream.  It depends on
    several other large commits to work, and without them causes a regression.
    
    References: https://bugzilla.redhat.com/show_bug.cgi?id=1408333
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Cc: Eric Wheeler <kvm@lists.ewheeler.net>

commit 5bae9a418946b9379ed1abd41a9ba9687bd1744a
Author: Hangbin Liu <liuhangbin@gmail.com>
Date:   Wed Feb 8 21:16:45 2017 +0800

    igmp, mld: Fix memory leak in igmpv3/mld_del_delrec()
    
    commit 9c8bb163ae784be4f79ae504e78c862806087c54 upstream.
    
    In function igmpv3/mld_add_delrec() we allocate pmc and put it in
    idev->mc_tomb, so we should free it when we don't need it in del_delrec().
    But I removed kfree(pmc) incorrectly in latest two patches. Now fix it.
    
    Fixes: 24803f38a5c0 ("igmp: do not remove igmp souce list info when ...")
    Fixes: 1666d49e1d41 ("mld: do not remove mld souce list info when ...")
    Reported-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8752be621d73a766284a7cb89ccd1b0a4d0b45f3
Author: Hangbin Liu <liuhangbin@gmail.com>
Date:   Thu Jan 12 21:19:37 2017 +0800

    mld: do not remove mld souce list info when set link down
    
    commit 1666d49e1d416fcc2cce708242a52fe3317ea8ba upstream.
    
    This is an IPv6 version of commit 24803f38a5c0 ("igmp: do not remove igmp
    souce list..."). In mld_del_delrec(), we will restore back all source filter
    info instead of flush them.
    
    Move mld_clear_delrec() from ipv6_mc_down() to ipv6_mc_destroy_dev() since
    we should not remove source list info when set link down. Remove
    igmp6_group_dropped() in ipv6_mc_destroy_dev() since we have called it in
    ipv6_mc_down().
    
    Also clear all source info after igmp6_group_dropped() instead of in it
    because ipv6_mc_down() will call igmp6_group_dropped().
    
    Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b38c6e0bd5b5e439ecebdc0df599d573c2f610f8
Author: Hangbin Liu <liuhangbin@gmail.com>
Date:   Mon Nov 14 16:16:28 2016 +0800

    igmp: do not remove igmp souce list info when set link down
    
    commit 24803f38a5c0b6c57ed800b47e695f9ce474bc3a upstream.
    
    In commit 24cf3af3fed5 ("igmp: call ip_mc_clear_src..."), we forgot to remove
    igmpv3_clear_delrec() in ip_mc_down(), which also called ip_mc_clear_src().
    This make us clear all IGMPv3 source filter info after NETDEV_DOWN.
    Move igmpv3_clear_delrec() to ip_mc_destroy_dev() and then no need
    ip_mc_clear_src() in ip_mc_destroy_dev().
    
    On the other hand, we should restore back instead of free all source filter
    info in igmpv3_del_delrec(). Or we will not able to restore IGMPv3 source
    filter info after NETDEV_UP and NETDEV_POST_TYPE_CHANGE.
    
    Fixes: 24cf3af3fed5 ("igmp: call ip_mc_clear_src() only when ...")
    Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: use IGMP_Unsolicited_Report_Count instead of
     sysctl_igmp_qrv]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3dbe499e46e125eddbb0abf987e3b63a6e8516cc
Author: Darrick J. Wong <darrick.wong@oracle.com>
Date:   Tue Jan 3 18:39:34 2017 -0800

    xfs: update MAINTAINERS
    
    commit 721a0edfbe1f302b93274ce75e0d62843ca63e0d upstream.
    
    I am taking over as XFS maintainer from Dave Chinner[1], so update
    contact information and git tree pointers.
    
    [1] http://lkml.iu.edu/hypermail/linux/kernel/1612.1/04390.html
    
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Cc: Dave Chinner <david@fromorbit.com>

commit c683ac5e9fcf9c5ce7cbc4d59a7725db883c41db
Author: WANG Cong <xiyou.wangcong@gmail.com>
Date:   Wed Feb 8 10:02:13 2017 -0800

    sit: fix a double free on error path
    
    [ Upstream commit d7426c69a1942b2b9b709bf66b944ff09f561484 ]
    
    Dmitry reported a double free in sit_init_net():
    
      kernel BUG at mm/percpu.c:689!
      invalid opcode: 0000 [#1] SMP KASAN
      Dumping ftrace buffer:
         (ftrace buffer empty)
      Modules linked in:
      CPU: 0 PID: 15692 Comm: syz-executor1 Not tainted 4.10.0-rc6-next-20170206 #1
      Hardware name: Google Google Compute Engine/Google Compute Engine,
      BIOS Google 01/01/2011
      task: ffff8801c9cc27c0 task.stack: ffff88017d1d8000
      RIP: 0010:pcpu_free_area+0x68b/0x810 mm/percpu.c:689
      RSP: 0018:ffff88017d1df488 EFLAGS: 00010046
      RAX: 0000000000010000 RBX: 00000000000007c0 RCX: ffffc90002829000
      RDX: 0000000000010000 RSI: ffffffff81940efb RDI: ffff8801db841d94
      RBP: ffff88017d1df590 R08: dffffc0000000000 R09: 1ffffffff0bb3bdd
      R10: dffffc0000000000 R11: 00000000000135dd R12: ffff8801db841d80
      R13: 0000000000038e40 R14: 00000000000007c0 R15: 00000000000007c0
      FS:  00007f6ea608f700(0000) GS:ffff8801dbe00000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 000000002000aff8 CR3: 00000001c8d44000 CR4: 00000000001426f0
      DR0: 0000000020000000 DR1: 0000000020000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000600
      Call Trace:
       free_percpu+0x212/0x520 mm/percpu.c:1264
       ipip6_dev_free+0x43/0x60 net/ipv6/sit.c:1335
       sit_init_net+0x3cb/0xa10 net/ipv6/sit.c:1831
       ops_init+0x10a/0x530 net/core/net_namespace.c:115
       setup_net+0x2ed/0x690 net/core/net_namespace.c:291
       copy_net_ns+0x26c/0x530 net/core/net_namespace.c:396
       create_new_namespaces+0x409/0x860 kernel/nsproxy.c:106
       unshare_nsproxy_namespaces+0xae/0x1e0 kernel/nsproxy.c:205
       SYSC_unshare kernel/fork.c:2281 [inline]
       SyS_unshare+0x64e/0xfc0 kernel/fork.c:2231
       entry_SYSCALL_64_fastpath+0x1f/0xc2
    
    This is because when tunnel->dst_cache init fails, we free dev->tstats
    once in ipip6_tunnel_init() and twice in sit_init_net(). This looks
    redundant but its ndo_uinit() does not seem enough to clean up everything
    here. So avoid this by setting dev->tstats to NULL after the first free,
    at least for -net.
    
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6a742febb436cbc0d7c3e2955a9edaf2adc530fe
Author: Benjamin Poirier <bpoirier@suse.com>
Date:   Mon Feb 6 10:14:31 2017 -0800

    mlx4: Invoke softirqs after napi_reschedule
    
    [ Upstream commit bd4ce941c8d5b862b2f83364be5dbe8fc8ab48f8 ]
    
    mlx4 may schedule napi from a workqueue. Afterwards, softirqs are not run
    in a deterministic time frame and the following message may be logged:
    NOHZ: local_softirq_pending 08
    
    The problem is the same as what was described in commit ec13ee80145c
    ("virtio_net: invoke softirqs after __napi_schedule") and this patch
    applies the same fix to mlx4.
    
    Fixes: 07841f9d94c1 ("net/mlx4_en: Schedule napi when RX buffers allocation fails")
    Cc: Eric Dumazet <eric.dumazet@gmail.com>
    Signed-off-by: Benjamin Poirier <bpoirier@suse.com>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: Tariq Toukan <tariqt@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8bef2f571d9c121abd6a496266fc3569d6354a4a
Author: Willem de Bruijn <willemb@google.com>
Date:   Fri Feb 3 18:20:49 2017 -0500

    macvtap: read vnet_hdr_size once
    
    [ Upstream commit 837585a5375c38d40361cfe64e6fd11e1addb936 ]
    
    When IFF_VNET_HDR is enabled, a virtio_net header must precede data.
    Data length is verified to be greater than or equal to expected header
    length tun->vnet_hdr_sz before copying.
    
    Macvtap functions read the value once, but unless READ_ONCE is used,
    the compiler may ignore this and read multiple times. Enforce a single
    read and locally cached value to avoid updates between test and use.
    
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    Suggested-by: Eric Dumazet <edumazet@google.com>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: BAckported to 3.16:
     - Use ACCESS_ONCE() instead of READ_ONCE()
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5d1b6474fa7aea05ed0ca5cbce9cf1c32dae60f3
Author: Willem de Bruijn <willemb@google.com>
Date:   Fri Feb 3 18:20:48 2017 -0500

    tun: read vnet_hdr_sz once
    
    [ Upstream commit e1edab87faf6ca30cd137e0795bc73aa9a9a22ec ]
    
    When IFF_VNET_HDR is enabled, a virtio_net header must precede data.
    Data length is verified to be greater than or equal to expected header
    length tun->vnet_hdr_sz before copying.
    
    Read this value once and cache locally, as it can be updated between
    the test and use (TOCTOU).
    
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    CC: Eric Dumazet <edumazet@google.com>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16:
     - Use ACCESS_ONCE() instead of READ_ONCE()
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5e93a95d21c6e18db8bc6248367b325996586ad2
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Mon Nov 3 04:30:14 2014 +0800

    tun: Fix TUN_PKT_STRIP setting
    
    commit 2eb783c43e7cf807a45899c10ed556b6dc116625 upstream.
    
    We set the flag TUN_PKT_STRIP if the user buffer provided is too
    small to contain the entire packet plus meta-data.  However, this
    has been broken ever since we added GSO meta-data.  VLAN acceleration
    also has the same problem.
    
    This patch fixes this by taking both into account when setting the
    TUN_PKT_STRIP flag.
    
    The fact that this has been broken for six years without anyone
    realising means that nobody actually uses this flag.
    
    Fixes: f43798c27684 ("tun: Allow GSO using virtio_net_hdr")
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f8efa7a216b2c666727cc395b670575efeb33ef3
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Feb 1 08:33:53 2017 -0800

    tcp: fix 0 divide in __tcp_select_window()
    
    [ Upstream commit 06425c308b92eaf60767bc71d359f4cbc7a561f8 ]
    
    syszkaller fuzzer was able to trigger a divide by zero, when
    TCP window scaling is not enabled.
    
    SO_RCVBUF can be used not only to increase sk_rcvbuf, also
    to decrease it below current receive buffers utilization.
    
    If mss is negative or 0, just return a zero TCP window.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Dmitry Vyukov  <dvyukov@google.com>
    Acked-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e89ecd2cab25cfe85784b61b2e38a3686bc7ce09
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed Feb 1 11:46:32 2017 +0300

    ipv6: pointer math error in ip6_tnl_parse_tlv_enc_lim()
    
    [ Upstream commit 63117f09c768be05a0bf465911297dc76394f686 ]
    
    Casting is a high precedence operation but "off" and "i" are in terms of
    bytes so we need to have some parenthesis here.
    
    Fixes: fbfa743a9d2a ("ipv6: fix ip6_tnl_parse_tlv_enc_lim()")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d3d9b59ab32160e3cc4edcf7e5fa7cecb53a7d25
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Jan 23 16:43:06 2017 -0800

    ipv6: fix ip6_tnl_parse_tlv_enc_lim()
    
    [ Upstream commit fbfa743a9d2a0ffa24251764f10afc13eb21e739 ]
    
    This function suffers from multiple issues.
    
    First one is that pskb_may_pull() may reallocate skb->head,
    so the 'raw' pointer needs either to be reloaded or not used at all.
    
    Second issue is that NEXTHDR_DEST handling does not validate
    that the options are present in skb->data, so we might read
    garbage or access non existent memory.
    
    With help from Willem de Bruijn.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Dmitry Vyukov  <dvyukov@google.com>
    Cc: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b6927bd60d353de044584ab9400aaccd8694fe1e
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Jan 27 08:11:44 2017 -0800

    can: Fix kernel panic at security_sock_rcv_skb
    
    [ Upstream commit f1712c73714088a7252d276a57126d56c7d37e64 ]
    
    Zhang Yanmin reported crashes [1] and provided a patch adding a
    synchronize_rcu() call in can_rx_unregister()
    
    The main problem seems that the sockets themselves are not RCU
    protected.
    
    If CAN uses RCU for delivery, then sockets should be freed only after
    one RCU grace period.
    
    Recent kernels could use sock_set_flag(sk, SOCK_RCU_FREE), but let's
    ease stable backports with the following fix instead.
    
    [1]
    BUG: unable to handle kernel NULL pointer dereference at (null)
    IP: [<ffffffff81495e25>] selinux_socket_sock_rcv_skb+0x65/0x2a0
    
    Call Trace:
     <IRQ>
     [<ffffffff81485d8c>] security_sock_rcv_skb+0x4c/0x60
     [<ffffffff81d55771>] sk_filter+0x41/0x210
     [<ffffffff81d12913>] sock_queue_rcv_skb+0x53/0x3a0
     [<ffffffff81f0a2b3>] raw_rcv+0x2a3/0x3c0
     [<ffffffff81f06eab>] can_rcv_filter+0x12b/0x370
     [<ffffffff81f07af9>] can_receive+0xd9/0x120
     [<ffffffff81f07beb>] can_rcv+0xab/0x100
     [<ffffffff81d362ac>] __netif_receive_skb_core+0xd8c/0x11f0
     [<ffffffff81d36734>] __netif_receive_skb+0x24/0xb0
     [<ffffffff81d37f67>] process_backlog+0x127/0x280
     [<ffffffff81d36f7b>] net_rx_action+0x33b/0x4f0
     [<ffffffff810c88d4>] __do_softirq+0x184/0x440
     [<ffffffff81f9e86c>] do_softirq_own_stack+0x1c/0x30
     <EOI>
     [<ffffffff810c76fb>] do_softirq.part.18+0x3b/0x40
     [<ffffffff810c8bed>] do_softirq+0x1d/0x20
     [<ffffffff81d30085>] netif_rx_ni+0xe5/0x110
     [<ffffffff8199cc87>] slcan_receive_buf+0x507/0x520
     [<ffffffff8167ef7c>] flush_to_ldisc+0x21c/0x230
     [<ffffffff810e3baf>] process_one_work+0x24f/0x670
     [<ffffffff810e44ed>] worker_thread+0x9d/0x6f0
     [<ffffffff810e4450>] ? rescuer_thread+0x480/0x480
     [<ffffffff810ebafc>] kthread+0x12c/0x150
     [<ffffffff81f9ccef>] ret_from_fork+0x3f/0x70
    
    Reported-by: Zhang Yanmin <yanmin.zhang@intel.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Acked-by: Oliver Hartkopp <socketcan@hartkopp.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0a8b4245f6287fbd1aae4b1443a05303286deae2
Author: Maxime Jayat <maxime.jayat@mobile-devices.fr>
Date:   Tue Feb 21 18:35:51 2017 +0100

    net: socket: fix recvmmsg not returning error from sock_error
    
    [ Upstream commit e623a9e9dec29ae811d11f83d0074ba254aba374 ]
    
    Commit 34b88a68f26a ("net: Fix use after free in the recvmmsg exit path"),
    changed the exit path of recvmmsg to always return the datagrams
    variable and modified the error paths to set the variable to the error
    code returned by recvmsg if necessary.
    
    However in the case sock_error returned an error, the error code was
    then ignored, and recvmmsg returned 0.
    
    Change the error path of recvmmsg to correctly return the error code
    of sock_error.
    
    The bug was triggered by using recvmmsg on a CAN interface which was
    not up. Linux 4.6 and later return 0 in this case while earlier
    releases returned -ENETDOWN.
    
    Fixes: 34b88a68f26a ("net: Fix use after free in the recvmmsg exit path")
    Signed-off-by: Maxime Jayat <maxime.jayat@mobile-devices.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b0994b771faa4387b027c7088fb1d36baff12cbb
Author: Bjørn Mork <bjorn@mork.no>
Date:   Tue Jan 24 10:45:38 2017 +0100

    qmi_wwan/cdc_ether: add device ID for HP lt2523 (Novatel E371) WWAN card
    
    [ Upstream commit 5b9f57516337b523f7466a53939aaaea7b78141b ]
    
    Another rebranded Novatel E371.  qmi_wwan should drive this device, while
    cdc_ether should ignore it.  Even though the USB descriptors are plain
    CDC-ETHER that USB interface is a QMI interface.  Ref commit 7fdb7846c9ca
    ("qmi_wwan/cdc_ether: add device IDs for Dell 5804 (Novatel E371) WWAN
    card")
    
    Cc: Dan Williams <dcbw@redhat.com>
    Signed-off-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1b653beab8b98cae6ec3ddcf09fb4d5c316e328b
Author: Kefeng Wang <wangkefeng.wang@huawei.com>
Date:   Thu Jan 19 16:26:21 2017 +0800

    ipv6: addrconf: Avoid addrconf_disable_change() using RCU read-side lock
    
    [ Upstream commit 03e4deff4987f79c34112c5ba4eb195d4f9382b0 ]
    
    Just like commit 4acd4945cd1e ("ipv6: addrconf: Avoid calling
    netdevice notifiers with RCU read-side lock"), it is unnecessary
    to make addrconf_disable_change() use RCU iteration over the
    netdev list, since it already holds the RTNL lock, or we may meet
    Illegal context switch in RCU read-side critical section.
    
    Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9706d633879045c9b771a94b24b7d817aae23b0c
Author: Shannon Nelson <shannon.nelson@oracle.com>
Date:   Thu Jan 12 14:24:58 2017 -0800

    tcp: fix tcp_fastopen unaligned access complaints on sparc
    
    [ Upstream commit 003c941057eaa868ca6fedd29a274c863167230d ]
    
    Fix up a data alignment issue on sparc by swapping the order
    of the cookie byte array field with the length field in
    struct tcp_fastopen_cookie, and making it a proper union
    to clean up the typecasting.
    
    This addresses log complaints like these:
        log_unaligned: 113 callbacks suppressed
        Kernel unaligned access at TPC[976490] tcp_try_fastopen+0x2d0/0x360
        Kernel unaligned access at TPC[9764ac] tcp_try_fastopen+0x2ec/0x360
        Kernel unaligned access at TPC[9764c8] tcp_try_fastopen+0x308/0x360
        Kernel unaligned access at TPC[9764e4] tcp_try_fastopen+0x324/0x360
        Kernel unaligned access at TPC[976490] tcp_try_fastopen+0x2d0/0x360
    
    Cc: Eric Dumazet <eric.dumazet@gmail.com>
    Signed-off-by: Shannon Nelson <shannon.nelson@oracle.com>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c10be27daa453f787b7370df45b85111ab878a88
Author: hayeswang <hayeswang@realtek.com>
Date:   Wed Jan 11 16:25:34 2017 +0800

    r8152: fix the sw rx checksum is unavailable
    
    [ Upstream commit 19c0f40d4fca3a47b8f784a627f0467f0138ccc8 ]
    
    Fix the hw rx checksum is always enabled, and the user couldn't switch
    it to sw rx checksum.
    
    Note that the RTL_VER_01 only support sw rx checksum only. Besides,
    the hw rx checksum for RTL_VER_02 is disabled after
    commit b9a321b48af4 ("r8152: Fix broken RX checksums."). Re-enable it.
    
    Signed-off-by: Hayes Wang <hayeswang@realtek.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 118a8bfd729e927e62141193b8fea87a26e0eb9d
Author: Michal Tesar <mtesar@redhat.com>
Date:   Mon Jan 2 14:38:36 2017 +0100

    igmp: Make igmp group member RFC 3376 compliant
    
    [ Upstream commit 7ababb782690e03b78657e27bd051e20163af2d6 ]
    
    5.2. Action on Reception of a Query
    
     When a system receives a Query, it does not respond immediately.
     Instead, it delays its response by a random amount of time, bounded
     by the Max Resp Time value derived from the Max Resp Code in the
     received Query message.  A system may receive a variety of Queries on
     different interfaces and of different kinds (e.g., General Queries,
     Group-Specific Queries, and Group-and-Source-Specific Queries), each
     of which may require its own delayed response.
    
     Before scheduling a response to a Query, the system must first
     consider previously scheduled pending responses and in many cases
     schedule a combined response.  Therefore, the system must be able to
     maintain the following state:
    
     o A timer per interface for scheduling responses to General Queries.
    
     o A per-group and interface timer for scheduling responses to Group-
       Specific and Group-and-Source-Specific Queries.
    
     o A per-group and interface list of sources to be reported in the
       response to a Group-and-Source-Specific Query.
    
     When a new Query with the Router-Alert option arrives on an
     interface, provided the system has state to report, a delay for a
     response is randomly selected in the range (0, [Max Resp Time]) where
     Max Resp Time is derived from Max Resp Code in the received Query
     message.  The following rules are then used to determine if a Report
     needs to be scheduled and the type of Report to schedule.  The rules
     are considered in order and only the first matching rule is applied.
    
     1. If there is a pending response to a previous General Query
        scheduled sooner than the selected delay, no additional response
        needs to be scheduled.
    
     2. If the received Query is a General Query, the interface timer is
        used to schedule a response to the General Query after the
        selected delay.  Any previously pending response to a General
        Query is canceled.
    --8<--
    
    Currently the timer is rearmed with new random expiration time for
    every incoming query regardless of possibly already pending report.
    Which is not aligned with the above RFE.
    It also might happen that higher rate of incoming queries can
    postpone the report after the expiration time of the first query
    causing group membership loss.
    
    Now the per interface general query timer is rearmed only
    when there is no pending report already scheduled on that interface or
    the newly selected expiration time is before the already pending
    scheduled report.
    
    Signed-off-by: Michal Tesar <mtesar@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit cf7d840470ee1c68d0f9ced3f4091372f322deee
Author: Reiter Wolfgang <wr0112358@gmail.com>
Date:   Tue Jan 3 01:39:10 2017 +0100

    drop_monitor: consider inserted data in genlmsg_end
    
    [ Upstream commit 3b48ab2248e61408910e792fe84d6ec466084c1a ]
    
    Final nlmsg_len field update must reflect inserted net_dm_drop_point
    data.
    
    This patch depends on previous patch:
    "drop_monitor: add missing call to genlmsg_end"
    
    Signed-off-by: Reiter Wolfgang <wr0112358@gmail.com>
    Acked-by: Neil Horman <nhorman@tuxdriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e3b654ef5996e289fc50bab4e302751b5bd1f69f
Author: Reiter Wolfgang <wr0112358@gmail.com>
Date:   Sat Dec 31 21:11:57 2016 +0100

    drop_monitor: add missing call to genlmsg_end
    
    [ Upstream commit 4200462d88f47f3759bdf4705f87e207b0f5b2e4 ]
    
    Update nlmsg_len field with genlmsg_end to enable userspace processing
    using nlmsg_next helper. Also adds error handling.
    
    Signed-off-by: Reiter Wolfgang <wr0112358@gmail.com>
    Acked-by: Neil Horman <nhorman@tuxdriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit fee410e1984777fab21054511b3f0cb00a8ba373
Author: Dave Jones <davej@codemonkey.org.uk>
Date:   Thu Dec 22 11:16:22 2016 -0500

    ipv6: handle -EFAULT from skb_copy_bits
    
    [ Upstream commit a98f91758995cb59611e61318dddd8a6956b52c3 ]
    
    By setting certain socket options on ipv6 raw sockets, we can confuse the
    length calculation in rawv6_push_pending_frames triggering a BUG_ON.
    
    RIP: 0010:[<ffffffff817c6390>] [<ffffffff817c6390>] rawv6_sendmsg+0xc30/0xc40
    RSP: 0018:ffff881f6c4a7c18  EFLAGS: 00010282
    RAX: 00000000fffffff2 RBX: ffff881f6c681680 RCX: 0000000000000002
    RDX: ffff881f6c4a7cf8 RSI: 0000000000000030 RDI: ffff881fed0f6a00
    RBP: ffff881f6c4a7da8 R08: 0000000000000000 R09: 0000000000000009
    R10: ffff881fed0f6a00 R11: 0000000000000009 R12: 0000000000000030
    R13: ffff881fed0f6a00 R14: ffff881fee39ba00 R15: ffff881fefa93a80
    
    Call Trace:
     [<ffffffff8118ba23>] ? unmap_page_range+0x693/0x830
     [<ffffffff81772697>] inet_sendmsg+0x67/0xa0
     [<ffffffff816d93f8>] sock_sendmsg+0x38/0x50
     [<ffffffff816d982f>] SYSC_sendto+0xef/0x170
     [<ffffffff816da27e>] SyS_sendto+0xe/0x10
     [<ffffffff81002910>] do_syscall_64+0x50/0xa0
     [<ffffffff817f7cbc>] entry_SYSCALL64_slow_path+0x25/0x25
    
    Handle by jumping to the failure path if skb_copy_bits gets an EFAULT.
    
    Reproducer:
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    
    #define LEN 504
    
    int main(int argc, char* argv[])
    {
            int fd;
            int zero = 0;
            char buf[LEN];
    
            memset(buf, 0, LEN);
    
            fd = socket(AF_INET6, SOCK_RAW, 7);
    
            setsockopt(fd, SOL_IPV6, IPV6_CHECKSUM, &zero, 4);
            setsockopt(fd, SOL_IPV6, IPV6_DSTOPTS, &buf, LEN);
    
            sendto(fd, buf, 1, 0, (struct sockaddr *) buf, 110);
    }
    
    Signed-off-by: Dave Jones <davej@codemonkey.org.uk>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit dca5571983a624088627121ceca974c20a9ce0e1
Author: stephen hemminger <stephen@networkplumber.org>
Date:   Tue Dec 6 13:43:54 2016 -0800

    netvsc: reduce maximum GSO size
    
    [ Upstream commit a50af86dd49ee1851d1ccf06dd0019c05b95e297 ]
    
    Hyper-V (and Azure) support using NVGRE which requires some extra space
    for encapsulation headers. Because of this the largest allowed TSO
    packet is reduced.
    
    For older releases, hard code a fixed reduced value.  For next release,
    there is a better solution which uses result of host offload
    negotiation.
    
    Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 239ec383c58cefb4dfbe707c09fbe6463eeedb85
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Nov 28 06:26:49 2016 -0800

    net/dccp: fix use-after-free in dccp_invalid_packet
    
    [ Upstream commit 648f0c28df282636c0c8a7a19ca3ce5fc80a39c3 ]
    
    pskb_may_pull() can reallocate skb->head, we need to reload dh pointer
    in dccp_invalid_packet() or risk use after free.
    
    Bug found by Andrey Konovalov using syzkaller.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1e6f154d4c60f6bcf9b6fb7727c4c016380298e4
Author: Amir Vadai <amir@vadai.me>
Date:   Mon Nov 28 12:56:40 2016 +0200

    net/sched: pedit: make sure that offset is valid
    
    [ Upstream commit 95c2027bfeda21a28eb245121e6a249f38d0788e ]
    
    Add a validation function to make sure offset is valid:
    1. Not below skb head (could happen when offset is negative).
    2. Validate both 'offset' and 'at'.
    
    Signed-off-by: Amir Vadai <amir@vadai.me>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 578298cf24c6d451ef6ac91c72c31351d01dc565
Author: Jeremy Linton <jeremy.linton@arm.com>
Date:   Thu Nov 17 09:14:25 2016 -0600

    net: sky2: Fix shutdown crash
    
    [ Upstream commit 06ba3b2133dc203e1e9bc36cee7f0839b79a9e8b ]
    
    The sky2 frequently crashes during machine shutdown with:
    
    sky2_get_stats+0x60/0x3d8 [sky2]
    dev_get_stats+0x68/0xd8
    rtnl_fill_stats+0x54/0x140
    rtnl_fill_ifinfo+0x46c/0xc68
    rtmsg_ifinfo_build_skb+0x7c/0xf0
    rtmsg_ifinfo.part.22+0x3c/0x70
    rtmsg_ifinfo+0x50/0x5c
    netdev_state_change+0x4c/0x58
    linkwatch_do_dev+0x50/0x88
    __linkwatch_run_queue+0x104/0x1a4
    linkwatch_event+0x30/0x3c
    process_one_work+0x140/0x3e0
    worker_thread+0x60/0x44c
    kthread+0xdc/0xf0
    ret_from_fork+0x10/0x50
    
    This is caused by the sky2 being called after it has been shutdown.
    A previous thread about this can be found here:
    
    https://lkml.org/lkml/2016/4/12/410
    
    An alternative fix is to assure that IFF_UP gets cleared by
    calling dev_close() during shutdown. This is similar to what the
    bnx2/tg3/xgene and maybe others are doing to assure that the driver
    isn't being called following _shutdown().
    
    Signed-off-by: Jeremy Linton <jeremy.linton@arm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f7d14a70e7ee09ab9e6cc79e2e983881c0965d97
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Wed Nov 16 16:26:46 2016 +0100

    ip6_tunnel: disable caching when the traffic class is inherited
    
    [ Upstream commit b5c2d49544e5930c96e2632a7eece3f4325a1888 ]
    
    If an ip6 tunnel is configured to inherit the traffic class from
    the inner header, the dst_cache must be disabled or it will foul
    the policy routing.
    
    The issue is apprently there since at leat Linux-2.6.12-rc2.
    
    Reported-by: Liam McBirnie <liam.mcbirnie@boeing.com>
    Cc: Liam McBirnie <liam.mcbirnie@boeing.com>
    Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 400dd3d593f2e802e3adb1b0d79e4b002d2aa07a
Author: Soheil Hassas Yeganeh <soheil@google.com>
Date:   Fri Nov 4 15:36:49 2016 -0400

    sock: fix sendmmsg for partial sendmsg
    
    [ Upstream commit 3023898b7d4aac65987bd2f485cc22390aae6f78 ]
    
    Do not send the next message in sendmmsg for partial sendmsg
    invocations.
    
    sendmmsg assumes that it can continue sending the next message
    when the return value of the individual sendmsg invocations
    is positive. It results in corrupting the data for TCP,
    SCTP, and UNIX streams.
    
    For example, sendmmsg([["abcd"], ["efgh"]]) can result in a stream
    of "aefgh" if the first sendmsg invocation sends only the first
    byte while the second sendmsg goes through.
    
    Datagram sockets either send the entire datagram or fail, so
    this patch affects only sockets of type SOCK_STREAM and
    SOCK_SEQPACKET.
    
    Fixes: 228e548e6020 ("net: Add sendmmsg socket system call")
    Signed-off-by: Soheil Hassas Yeganeh <soheil@google.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: Neal Cardwell <ncardwell@google.com>
    Acked-by: Maciej Żenczykowski <maze@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: we don't have the iov_iter API, so make
     ___sys_sendmsg() calculate and write back the remaining length]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d00e8c1c8d9d2337f2216bd54e52c00a002bbb2d
Author: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Date:   Thu Nov 3 17:03:41 2016 -0200

    sctp: assign assoc_id earlier in __sctp_connect
    
    [ Upstream commit 7233bc84a3aeda835d334499dc00448373caf5c0 ]
    
    sctp_wait_for_connect() currently already holds the asoc to keep it
    alive during the sleep, in case another thread release it. But Andrey
    Konovalov and Dmitry Vyukov reported an use-after-free in such
    situation.
    
    Problem is that __sctp_connect() doesn't get a ref on the asoc and will
    do a read on the asoc after calling sctp_wait_for_connect(), but by then
    another thread may have closed it and the _put on sctp_wait_for_connect
    will actually release it, causing the use-after-free.
    
    Fix is, instead of doing the read after waiting for the connect, do it
    before so, and avoid this issue as the socket is still locked by then.
    There should be no issue on returning the asoc id in case of failure as
    the application shouldn't trust on that number in such situations
    anyway.
    
    This issue doesn't exist in sctp_sendmsg() path.
    
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Tested-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Reviewed-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Neil Horman <nhorman@tuxdriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b48001f3958535b05304c1c9b106959fc18a2d64
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Nov 3 08:59:46 2016 -0700

    ipv6: dccp: add missing bind_conflict to dccp_ipv6_mapped
    
    [ Upstream commit 990ff4d84408fc55942ca6644f67e361737b3d8e ]
    
    While fuzzing kernel with syzkaller, Andrey reported a nasty crash
    in inet6_bind() caused by DCCP lacking a required method.
    
    Fixes: ab1e0a13d7029 ("[SOCK] proto: Add hashinfo member to struct proto")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Tested-by: Andrey Konovalov <andreyknvl@google.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Acked-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 968953df833c61fce5adcc0612efeaced24e5719
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Nov 2 20:30:48 2016 -0700

    ipv6: dccp: fix out of bound access in dccp_v6_err()
    
    [ Upstream commit 1aa9d1a0e7eefcc61696e147d123453fc0016005 ]
    
    dccp_v6_err() does not use pskb_may_pull() and might access garbage.
    
    We only need 4 bytes at the beginning of the DCCP header, like TCP,
    so the 8 bytes pulled in icmpv6_notify() are more than enough.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: use offsetof() + sizeof() instead of
     offsetofend()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 46b1ffd4738a3ee04b2e8f5a4b8cfc39e9c722a2
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Nov 2 19:00:40 2016 -0700

    dccp: fix out of bound access in dccp_v4_err()
    
    [ Upstream commit 6706a97fec963d6cb3f7fc2978ec1427b4651214 ]
    
    dccp_v4_err() does not use pskb_may_pull() and might access garbage.
    
    We only need 4 bytes at the beginning of the DCCP header, like TCP,
    so the 8 bytes pulled in icmp_socket_deliver() are more than enough.
    
    This patch might allow to process more ICMP messages, as some routers
    are still limiting the size of reflected bytes to 28 (RFC 792), instead
    of extended lengths (RFC 1812 4.3.2.3)
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: use offsetof() + sizeof() instead of
     offsetofend()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 520ff0018fdc5617d5e6d9c7f0a68a35029fb3d6
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Nov 2 18:04:24 2016 -0700

    dccp: do not send reset to already closed sockets
    
    [ Upstream commit 346da62cc186c4b4b1ac59f87f4482b47a047388 ]
    
    Andrey reported following warning while fuzzing with syzkaller
    
    WARNING: CPU: 1 PID: 21072 at net/dccp/proto.c:83 dccp_set_state+0x229/0x290
    Kernel panic - not syncing: panic_on_warn set ...
    
    CPU: 1 PID: 21072 Comm: syz-executor Not tainted 4.9.0-rc1+ #293
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
     ffff88003d4c7738 ffffffff81b474f4 0000000000000003 dffffc0000000000
     ffffffff844f8b00 ffff88003d4c7804 ffff88003d4c7800 ffffffff8140c06a
     0000000041b58ab3 ffffffff8479ab7d ffffffff8140beae ffffffff8140cd00
    Call Trace:
     [<     inline     >] __dump_stack lib/dump_stack.c:15
     [<ffffffff81b474f4>] dump_stack+0xb3/0x10f lib/dump_stack.c:51
     [<ffffffff8140c06a>] panic+0x1bc/0x39d kernel/panic.c:179
     [<ffffffff8111125c>] __warn+0x1cc/0x1f0 kernel/panic.c:542
     [<ffffffff8111144c>] warn_slowpath_null+0x2c/0x40 kernel/panic.c:585
     [<ffffffff8389e5d9>] dccp_set_state+0x229/0x290 net/dccp/proto.c:83
     [<ffffffff838a0aa2>] dccp_close+0x612/0xc10 net/dccp/proto.c:1016
     [<ffffffff8316bf1f>] inet_release+0xef/0x1c0 net/ipv4/af_inet.c:415
     [<ffffffff82b6e89e>] sock_release+0x8e/0x1d0 net/socket.c:570
     [<ffffffff82b6e9f6>] sock_close+0x16/0x20 net/socket.c:1017
     [<ffffffff815256ad>] __fput+0x29d/0x720 fs/file_table.c:208
     [<ffffffff81525bb5>] ____fput+0x15/0x20 fs/file_table.c:244
     [<ffffffff811727d8>] task_work_run+0xf8/0x170 kernel/task_work.c:116
     [<     inline     >] exit_task_work include/linux/task_work.h:21
     [<ffffffff8111bc53>] do_exit+0x883/0x2ac0 kernel/exit.c:828
     [<ffffffff811221fe>] do_group_exit+0x10e/0x340 kernel/exit.c:931
     [<ffffffff81143c94>] get_signal+0x634/0x15a0 kernel/signal.c:2307
     [<ffffffff81054aad>] do_signal+0x8d/0x1a30 arch/x86/kernel/signal.c:807
     [<ffffffff81003a05>] exit_to_usermode_loop+0xe5/0x130
    arch/x86/entry/common.c:156
     [<     inline     >] prepare_exit_to_usermode arch/x86/entry/common.c:190
     [<ffffffff81006298>] syscall_return_slowpath+0x1a8/0x1e0
    arch/x86/entry/common.c:259
     [<ffffffff83fc1a62>] entry_SYSCALL_64_fastpath+0xc0/0xc2
    Dumping ftrace buffer:
       (ftrace buffer empty)
    Kernel Offset: disabled
    
    Fix this the same way we did for TCP in commit 565b7b2d2e63
    ("tcp: do not send reset to already closed sockets")
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Tested-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 206f4e16ea87b9fc5700cebdb0be1daa2725291e
Author: Eric Dumazet <edumazet@google.com>
Date:   Sat Oct 29 11:02:36 2016 -0700

    net: mangle zero checksum in skb_checksum_help()
    
    [ Upstream commit 4f2e4ad56a65f3b7d64c258e373cb71e8d2499f4 ]
    
    Sending zero checksum is ok for TCP, but not for UDP.
    
    UDPv6 receiver should by default drop a frame with a 0 checksum,
    and UDPv4 would not verify the checksum and might accept a corrupted
    packet.
    
    Simply replace such checksum by 0xffff, regardless of transport.
    
    This error was caught on SIT tunnels, but seems generic.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Maciej Żenczykowski <maze@google.com>
    Cc: Willem de Bruijn <willemb@google.com>
    Acked-by: Maciej Żenczykowski <maze@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4ecc76bd3f1b45cd31b4c88bdd8d77bf998a471e
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Oct 28 13:40:24 2016 -0700

    net: clear sk_err_soft in sk_clone_lock()
    
    [ Upstream commit e551c32d57c88923f99f8f010e89ca7ed0735e83 ]
    
    At accept() time, it is possible the parent has a non zero
    sk_err_soft, leftover from a prior error.
    
    Make sure we do not leave this value in the child, as it
    makes future getsockopt(SO_ERROR) calls quite unreliable.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Acked-by: Soheil Hassas Yeganeh <soheil@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b931800fd94f65282ff3071e009d1304e262a6d7
Author: Jiri Slaby <jslaby@suse.cz>
Date:   Fri Oct 21 14:13:24 2016 +0200

    net: sctp, forbid negative length
    
    [ Upstream commit a4b8e71b05c27bae6bad3bdecddbc6b68a3ad8cf ]
    
    Most of getsockopt handlers in net/sctp/socket.c check len against
    sizeof some structure like:
            if (len < sizeof(int))
                    return -EINVAL;
    
    On the first look, the check seems to be correct. But since len is int
    and sizeof returns size_t, int gets promoted to unsigned size_t too. So
    the test returns false for negative lengths. Yes, (-1 < sizeof(long)) is
    false.
    
    Fix this in sctp by explicitly checking len < 0 before any getsockopt
    handler is called.
    
    Note that sctp_getsockopt_events already handled the negative case.
    Since we added the < 0 check elsewhere, this one can be removed.
    
    If not checked, this is the result:
    UBSAN: Undefined behaviour in ../mm/page_alloc.c:2722:19
    shift exponent 52 is too large for 32-bit type 'int'
    CPU: 1 PID: 24535 Comm: syz-executor Not tainted 4.8.1-0-syzkaller #1
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.9.1-0-gb3ef39f-prebuilt.qemu-project.org 04/01/2014
     0000000000000000 ffff88006d99f2a8 ffffffffb2f7bdea 0000000041b58ab3
     ffffffffb4363c14 ffffffffb2f7bcde ffff88006d99f2d0 ffff88006d99f270
     0000000000000000 0000000000000000 0000000000000034 ffffffffb5096422
    Call Trace:
     [<ffffffffb3051498>] ? __ubsan_handle_shift_out_of_bounds+0x29c/0x300
    ...
     [<ffffffffb273f0e4>] ? kmalloc_order+0x24/0x90
     [<ffffffffb27416a4>] ? kmalloc_order_trace+0x24/0x220
     [<ffffffffb2819a30>] ? __kmalloc+0x330/0x540
     [<ffffffffc18c25f4>] ? sctp_getsockopt_local_addrs+0x174/0xca0 [sctp]
     [<ffffffffc18d2bcd>] ? sctp_getsockopt+0x10d/0x1b0 [sctp]
     [<ffffffffb37c1219>] ? sock_common_getsockopt+0xb9/0x150
     [<ffffffffb37be2f5>] ? SyS_getsockopt+0x1a5/0x270
    
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Cc: Vlad Yasevich <vyasevich@gmail.com>
    Cc: Neil Horman <nhorman@tuxdriver.com>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: linux-sctp@vger.kernel.org
    Cc: netdev@vger.kernel.org
    Acked-by: Neil Horman <nhorman@tuxdriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 611854c5b319ecafd1c8c074286dcf4db3fa5b5c
Author: Andrew Collins <acollins@cradlepoint.com>
Date:   Mon Oct 3 13:43:02 2016 -0600

    net: Add netdev all_adj_list refcnt propagation to fix panic
    
    [ Upstream commit 93409033ae653f1c9a949202fb537ab095b2092f ]
    
    This is a respin of a patch to fix a relatively easily reproducible kernel
    panic related to the all_adj_list handling for netdevs in recent kernels.
    
    The following sequence of commands will reproduce the issue:
    
    ip link add link eth0 name eth0.100 type vlan id 100
    ip link add link eth0 name eth0.200 type vlan id 200
    ip link add name testbr type bridge
    ip link set eth0.100 master testbr
    ip link set eth0.200 master testbr
    ip link add link testbr mac0 type macvlan
    ip link delete dev testbr
    
    This creates an upper/lower tree of (excuse the poor ASCII art):
    
                /---eth0.100-eth0
    mac0-testbr-
                \---eth0.200-eth0
    
    When testbr is deleted, the all_adj_lists are walked, and eth0 is deleted twice from
    the mac0 list. Unfortunately, during setup in __netdev_upper_dev_link, only one
    reference to eth0 is added, so this results in a panic.
    
    This change adds reference count propagation so things are handled properly.
    
    Matthias Schiffer reported a similar crash in batman-adv:
    
    https://github.com/freifunk-gluon/gluon/issues/680
    https://www.open-mesh.org/issues/247
    
    which this patch also seems to resolve.
    
    Signed-off-by: Andrew Collins <acollins@cradlepoint.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8db120b977d99663bcfc5d8bc2bc442558711e99
Author: Douglas Caetano dos Santos <douglascs@taghos.com.br>
Date:   Thu Sep 22 15:52:04 2016 -0300

    tcp: fix wrong checksum calculation on MTU probing
    
    [ Upstream commit 2fe664f1fcf7c4da6891f95708a7a56d3c024354 ]
    
    With TCP MTU probing enabled and offload TX checksumming disabled,
    tcp_mtu_probe() calculated the wrong checksum when a fragment being copied
    into the probe's SKB had an odd length. This was caused by the direct use
    of skb_copy_and_csum_bits() to calculate the checksum, as it pads the
    fragment being copied, if needed. When this fragment was not the last, a
    subsequent call used the previous checksum without considering this
    padding.
    
    The effect was a stale connection in one way, as even retransmissions
    wouldn't solve the problem, because the checksum was never recalculated for
    the full SKB length.
    
    Signed-off-by: Douglas Caetano dos Santos <douglascs@taghos.com.br>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 583024310463390696eae615acba9ab39cb8c7b8
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Sep 15 08:48:46 2016 -0700

    net: avoid sk_forward_alloc overflows
    
    [ Upstream commit 20c64d5cd5a2bdcdc8982a06cb05e5e1bd851a3d ]
    
    A malicious TCP receiver, sending SACK, can force the sender to split
    skbs in write queue and increase its memory usage.
    
    Then, when socket is closed and its write queue purged, we might
    overflow sk_forward_alloc (It becomes negative)
    
    sk_mem_reclaim() does nothing in this case, and more than 2GB
    are leaked from TCP perspective (tcp_memory_allocated is not changed)
    
    Then warnings trigger from inet_sock_destruct() and
    sk_stream_kill_queues() seeing a not zero sk_forward_alloc
    
    All TCP stack can be stuck because TCP is under memory pressure.
    
    A simple fix is to preemptively reclaim from sk_mem_uncharge().
    
    This makes sure a socket wont have more than 2 MB forward allocated,
    after burst and idle period.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7bf2abbcd2208a3dae5107a28e302dcae0f77c94
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Sep 15 08:12:33 2016 -0700

    tcp: fix overflow in __tcp_retransmit_skb()
    
    [ Upstream commit ffb4d6c8508657824bcef68a36b2a0f9d8c09d10 ]
    
    If a TCP socket gets a large write queue, an overflow can happen
    in a test in __tcp_retransmit_skb() preventing all retransmits.
    
    The flow then stalls and resets after timeouts.
    
    Tested:
    
    sysctl -w net.core.wmem_max=1000000000
    netperf -H dest -- -s 1000000000
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8d7c2ffcd441b85d90b7988c01dc3b4052ebe9f4
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri May 15 12:39:25 2015 -0700

    net: fix sk_mem_reclaim_partial()
    
    commit 1a24e04e4b50939daa3041682b38b82c896ca438 upstream.
    
    sk_mem_reclaim_partial() goal is to ensure each socket has
    one SK_MEM_QUANTUM forward allocation. This is needed both for
    performance and better handling of memory pressure situations in
    follow up patches.
    
    SK_MEM_QUANTUM is currently a page, but might be reduced to 4096 bytes
    as some arches have 64KB pages.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6765bbc42e31a5f6f28efae4563bbe9c45d117b4
Author: Beniamino Galvani <bgalvani@redhat.com>
Date:   Wed Jul 13 18:25:08 2016 +0200

    bonding: set carrier off for devices created through netlink
    
    [ Upstream commit 005db31d5f5f7c31cfdc43505d77eb3ca5cf8ec6 ]
    
    Commit e826eafa65c6 ("bonding: Call netif_carrier_off after
    register_netdevice") moved netif_carrier_off() from bond_init() to
    bond_create(), but the latter is called only for initial default
    devices and ones created through sysfs:
    
     $ modprobe bonding
     $ echo +bond1 > /sys/class/net/bonding_masters
     $ ip link add bond2 type bond
     $ grep "MII Status" /proc/net/bonding/*
     /proc/net/bonding/bond0:MII Status: down
     /proc/net/bonding/bond1:MII Status: down
     /proc/net/bonding/bond2:MII Status: up
    
    Ensure that carrier is initially off also for devices created through
    netlink.
    
    Signed-off-by: Beniamino Galvani <bgalvani@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 35342020a641ef2d4080be0b19145cd572d7b927
Author: Bjørn Mork <bjorn@mork.no>
Date:   Sun Jul 3 22:24:50 2016 +0200

    cdc_ncm: workaround for EM7455 "silent" data interface
    
    [ Upstream commit c086e7096170390594c425114d98172bc9aceb8a ]
    
    Several Lenovo users have reported problems with their Sierra
    Wireless EM7455 modem. The driver has loaded successfully and
    the MBIM management channel has appeared to work, including
    establishing a connection to the mobile network. But no frames
    have been received over the data interface.
    
    The problem affects all EM7455 and MC7455, and is assumed to
    affect other modems based on the same Qualcomm chipset and
    baseband firmware.
    
    Testing narrowed the problem down to what seems to be a
    firmware timing bug during initialization. Adding a short sleep
    while probing is sufficient to make the problem disappear.
    Experiments have shown that 1-2 ms is too little to have any
    effect, while 10-20 ms is enough to reliably succeed.
    
    Reported-by: Stefan Armbruster <ml001@armbruster-it.de>
    Reported-by: Ralph Plawetzki <ralph@purejava.org>
    Reported-by: Andreas Fett <andreas.fett@secunet.com>
    Reported-by: Rasmus Lerdorf <rasmus@lerdorf.com>
    Reported-by: Samo Ratnik <samo.ratnik@gmail.com>
    Reported-and-tested-by: Aleksander Morgado <aleksander@aleksander.es>
    Signed-off-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e8e0d79f4d1c5dd36a68d8cae88c807e8e83df0e
Author: Feng Tang <feng.tang@intel.com>
Date:   Fri Jun 24 15:26:05 2016 +0800

    net: alx: Work around the DMA RX overflow issue
    
    [ Upstream commit 881d0327db37ad917a367c77aff1afa1ee41e0a9 ]
    
    Note: This is a verified backported patch for stable 4.4 kernel, and it
    could also be applied to 4.3/4.2/4.1/3.18/3.16
    
    There is a problem with alx devices, that the network link will be
    lost in 1-5 minutes after the device is up.
    
    >From debugging without datasheet, we found the error always
    happen when the DMA RX address is set to 0x....fc0, which is very
    likely to be a HW/silicon problem.
    
    This patch will apply rx skb with 64 bytes longer space, and if the
    allocated skb has a 0x...fc0 address, it will use skb_resever(skb, 64)
    to advance the address, so that the RX overflow can be avoided.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=70761
    Signed-off-by: Feng Tang <feng.tang@intel.com>
    Suggested-by: Eric Dumazet <edumazet@google.com>
    Tested-by: Ole Lukoie <olelukoie@mail.ru>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 797a83851a46b59265ec7743f40ecfbc39955ae6
Author: Tom Goff <thomas.goff@ll.mit.edu>
Date:   Thu Jun 23 16:11:57 2016 -0400

    ipmr/ip6mr: Initialize the last assert time of mfc entries.
    
    [ Upstream commit 70a0dec45174c976c64b4c8c1d0898581f759948 ]
    
    This fixes wrong-interface signaling on 32-bit platforms for entries
    created when jiffies > 2^31 + MFC_ASSERT_THRESH.
    
    Signed-off-by: Tom Goff <thomas.goff@ll.mit.edu>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 98ae009caa9bf9a79d661dc6e09d394b52130cb0
Author: Simon Horman <simon.horman@netronome.com>
Date:   Thu Jun 16 17:06:19 2016 +0900

    sit: correct IP protocol used in ipip6_err
    
    [ Upstream commit d5d8760b78d0cfafe292f965f599988138b06a70 ]
    
    Since 32b8a8e59c9c ("sit: add IPv4 over IPv4 support")
    ipip6_err() may be called for packets whose IP protocol is
    IPPROTO_IPIP as well as those whose IP protocol is IPPROTO_IPV6.
    
    In the case of IPPROTO_IPIP packets the correct protocol value is not
    passed to ipv4_update_pmtu() or ipv4_redirect().
    
    This patch resolves this problem by using the IP protocol of the packet
    rather than a hard-coded value. This appears to be consistent
    with the usage of the protocol of a packet by icmp_socket_deliver()
    the caller of ipip6_err().
    
    I was able to exercise the redirect case by using a setup where an ICMP
    redirect was received for the destination of the encapsulated packet.
    However, it appears that although incorrect the protocol field is not used
    in this case and thus no problem manifests.  On inspection it does not
    appear that a problem will manifest in the fragmentation needed/update pmtu
    case either.
    
    In short I believe this is a cosmetic fix. None the less, the use of
    IPPROTO_IPV6 seems wrong and confusing.
    
    Reviewed-by: Dinan Gunawardena <dinan.gunawardena@netronome.com>
    Signed-off-by: Simon Horman <simon.horman@netronome.com>
    Acked-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e9371d22e48775b63538c5d7c52fb7069cd8a78d
Author: Jakub Sitnicki <jkbs@redhat.com>
Date:   Wed Jun 8 15:13:34 2016 +0200

    ipv6: Skip XFRM lookup if dst_entry in socket cache is valid
    
    [ Upstream commit 00bc0ef5880dc7b82f9c320dead4afaad48e47be ]
    
    At present we perform an xfrm_lookup() for each UDPv6 message we
    send. The lookup involves querying the flow cache (flow_cache_lookup)
    and, in case of a cache miss, creating an XFRM bundle.
    
    If we miss the flow cache, we can end up creating a new bundle and
    deriving the path MTU (xfrm_init_pmtu) from on an already transformed
    dst_entry, which we pass from the socket cache (sk->sk_dst_cache) down
    to xfrm_lookup(). This can happen only if we're caching the dst_entry
    in the socket, that is when we're using a connected UDP socket.
    
    To put it another way, the path MTU shrinks each time we miss the flow
    cache, which later on leads to incorrectly fragmented payload. It can
    be observed with ESPv6 in transport mode:
    
      1) Set up a transformation and lower the MTU to trigger fragmentation
        # ip xfrm policy add dir out src ::1 dst ::1 \
          tmpl src ::1 dst ::1 proto esp spi 1
        # ip xfrm state add src ::1 dst ::1 \
          proto esp spi 1 enc 'aes' 0x0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
        # ip link set dev lo mtu 1500
    
      2) Monitor the packet flow and set up an UDP sink
        # tcpdump -ni lo -ttt &
        # socat udp6-listen:12345,fork /dev/null &
    
      3) Send a datagram that needs fragmentation with a connected socket
        # perl -e 'print "@" x 1470 | socat - udp6:[::1]:12345
        2016/06/07 18:52:52 socat[724] E read(3, 0x555bb3d5ba00, 8192): Protocol error
        00:00:00.000000 IP6 ::1 > ::1: frag (0|1448) ESP(spi=0x00000001,seq=0x2), length 1448
        00:00:00.000014 IP6 ::1 > ::1: frag (1448|32)
        00:00:00.000050 IP6 ::1 > ::1: ESP(spi=0x00000001,seq=0x3), length 1272
        (^ ICMPv6 Parameter Problem)
        00:00:00.000022 IP6 ::1 > ::1: ESP(spi=0x00000001,seq=0x5), length 136
    
      4) Compare it to a non-connected socket
        # perl -e 'print "@" x 1500' | socat - udp6-sendto:[::1]:12345
        00:00:40.535488 IP6 ::1 > ::1: frag (0|1448) ESP(spi=0x00000001,seq=0x6), length 1448
        00:00:00.000010 IP6 ::1 > ::1: frag (1448|64)
    
    What happens in step (3) is:
    
      1) when connecting the socket in __ip6_datagram_connect(), we
         perform an XFRM lookup, miss the flow cache, create an XFRM
         bundle, and cache the destination,
    
      2) afterwards, when sending the datagram, we perform an XFRM lookup,
         again, miss the flow cache (due to mismatch of flowi6_iif and
         flowi6_oif, which is an issue of its own), and recreate an XFRM
         bundle based on the cached (and already transformed) destination.
    
    To prevent the recreation of an XFRM bundle, avoid an XFRM lookup
    altogether whenever we already have a destination entry cached in the
    socket. This prevents the path MTU shrinkage and brings us on par with
    UDPv4.
    
    The fix also benefits connected PINGv6 sockets, another user of
    ip6_sk_dst_lookup_flow(), who also suffer messages being transformed
    twice.
    
    Joint work with Hannes Frederic Sowa.
    
    Reported-by: Jan Tluka <jtluka@redhat.com>
    Signed-off-by: Jakub Sitnicki <jkbs@redhat.com>
    Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: deleted code is slightly different]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit df4db51ef4c17ee3bd81eee73b7ee89c14d389ef
Author: Hannes Frederic Sowa <hannes@stressinduktion.org>
Date:   Thu May 19 15:58:33 2016 +0200

    udp: prevent skbs lingering in tunnel socket queues
    
    [ Upstream commit e5aed006be918af163eb397e45aa5ea6cefd5e01 ]
    
    In case we find a socket with encapsulation enabled we should call
    the encap_recv function even if just a udp header without payload is
    available. The callbacks are responsible for correctly verifying and
    dropping the packets.
    
    Also, in case the header validation fails for geneve and vxlan we
    shouldn't put the skb back into the socket queue, no one will pick
    them up there.  Instead we can simply discard them in the respective
    encap_recv functions.
    
    Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16:
     - Drop changes to geneve
     - vxlan error checking looked a bit different]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0a2628b8429935530ee212b5231f81f7f0d9375d
Author: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Date:   Wed May 4 16:18:45 2016 +0200

    net: bridge: fix old ioctl unlocked net device walk
    
    [ Upstream commit 31ca0458a61a502adb7ed192bf9716c6d05791a5 ]
    
    get_bridge_ifindices() is used from the old "deviceless" bridge ioctl
    calls which aren't called with rtnl held. The comment above says that it is
    called with rtnl but that is not really the case.
    Here's a sample output from a test ASSERT_RTNL() which I put in
    get_bridge_ifindices and executed "brctl show":
    [  957.422726] RTNL: assertion failed at net/bridge//br_ioctl.c (30)
    [  957.422925] CPU: 0 PID: 1862 Comm: brctl Tainted: G        W  O
    4.6.0-rc4+ #157
    [  957.423009] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996),
    BIOS 1.8.1-20150318_183358- 04/01/2014
    [  957.423009]  0000000000000000 ffff880058adfdf0 ffffffff8138dec5
    0000000000000400
    [  957.423009]  ffffffff81ce8380 ffff880058adfe58 ffffffffa05ead32
    0000000000000001
    [  957.423009]  00007ffec1a444b0 0000000000000400 ffff880053c19130
    0000000000008940
    [  957.423009] Call Trace:
    [  957.423009]  [<ffffffff8138dec5>] dump_stack+0x85/0xc0
    [  957.423009]  [<ffffffffa05ead32>]
    br_ioctl_deviceless_stub+0x212/0x2e0 [bridge]
    [  957.423009]  [<ffffffff81515beb>] sock_ioctl+0x22b/0x290
    [  957.423009]  [<ffffffff8126ba75>] do_vfs_ioctl+0x95/0x700
    [  957.423009]  [<ffffffff8126c159>] SyS_ioctl+0x79/0x90
    [  957.423009]  [<ffffffff8163a4c0>] entry_SYSCALL_64_fastpath+0x23/0xc1
    
    Since it only reads bridge ifindices, we can use rcu to safely walk the net
    device list. Also remove the wrong rtnl comment above.
    
    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 97b7d6be64143b92326d613ac41cc149f044814e
Author: Ian Campbell <ian.campbell@docker.com>
Date:   Wed May 4 14:21:53 2016 +0100

    VSOCK: do not disconnect socket when peer has shutdown SEND only
    
    [ Upstream commit dedc58e067d8c379a15a8a183c5db318201295bb ]
    
    The peer may be expecting a reply having sent a request and then done a
    shutdown(SHUT_WR), so tearing down the whole socket at this point seems
    wrong and breaks for me with a client which does a SHUT_WR.
    
    Looking at other socket family's stream_recvmsg callbacks doing a shutdown
    here does not seem to be the norm and removing it does not seem to have
    had any adverse effects that I can see.
    
    I'm using Stefan's RFC virtio transport patches, I'm unsure of the impact
    on the vmci transport.
    
    Signed-off-by: Ian Campbell <ian.campbell@docker.com>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: Stefan Hajnoczi <stefanha@redhat.com>
    Cc: Claudio Imbrenda <imbrenda@linux.vnet.ibm.com>
    Cc: Andy King <acking@vmware.com>
    Cc: Dmitry Torokhov <dtor@vmware.com>
    Cc: Jorgen Hansen <jhansen@vmware.com>
    Cc: Adit Ranadive <aditr@vmware.com>
    Cc: netdev@vger.kernel.org
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ff962567db4cf1c76c5415672080a59461424bea
Author: Neil Horman <nhorman@tuxdriver.com>
Date:   Mon May 2 12:20:15 2016 -0400

    netem: Segment GSO packets on enqueue
    
    [ Upstream commit 6071bd1aa13ed9e41824bafad845b7b7f4df5cfd ]
    
    This was recently reported to me, and reproduced on the latest net kernel,
    when attempting to run netperf from a host that had a netem qdisc attached
    to the egress interface:
    
    [  788.073771] ---------------------[ cut here ]---------------------------
    [  788.096716] WARNING: at net/core/dev.c:2253 skb_warn_bad_offload+0xcd/0xda()
    [  788.129521] bnx2: caps=(0x00000001801949b3, 0x0000000000000000) len=2962
    data_len=0 gso_size=1448 gso_type=1 ip_summed=3
    [  788.182150] Modules linked in: sch_netem kvm_amd kvm crc32_pclmul ipmi_ssif
    ghash_clmulni_intel sp5100_tco amd64_edac_mod aesni_intel lrw gf128mul
    glue_helper ablk_helper edac_mce_amd cryptd pcspkr sg edac_core hpilo ipmi_si
    i2c_piix4 k10temp fam15h_power hpwdt ipmi_msghandler shpchp acpi_power_meter
    pcc_cpufreq nfsd auth_rpcgss nfs_acl lockd grace sunrpc ip_tables xfs libcrc32c
    sd_mod crc_t10dif crct10dif_generic mgag200 syscopyarea sysfillrect sysimgblt
    i2c_algo_bit drm_kms_helper ahci ata_generic pata_acpi ttm libahci
    crct10dif_pclmul pata_atiixp tg3 libata crct10dif_common drm crc32c_intel ptp
    serio_raw bnx2 r8169 hpsa pps_core i2c_core mii dm_mirror dm_region_hash dm_log
    dm_mod
    [  788.465294] CPU: 16 PID: 0 Comm: swapper/16 Tainted: G        W
    ------------   3.10.0-327.el7.x86_64 #1
    [  788.511521] Hardware name: HP ProLiant DL385p Gen8, BIOS A28 12/17/2012
    [  788.542260]  ffff880437c036b8 f7afc56532a53db9 ffff880437c03670
    ffffffff816351f1
    [  788.576332]  ffff880437c036a8 ffffffff8107b200 ffff880633e74200
    ffff880231674000
    [  788.611943]  0000000000000001 0000000000000003 0000000000000000
    ffff880437c03710
    [  788.647241] Call Trace:
    [  788.658817]  <IRQ>  [<ffffffff816351f1>] dump_stack+0x19/0x1b
    [  788.686193]  [<ffffffff8107b200>] warn_slowpath_common+0x70/0xb0
    [  788.713803]  [<ffffffff8107b29c>] warn_slowpath_fmt+0x5c/0x80
    [  788.741314]  [<ffffffff812f92f3>] ? ___ratelimit+0x93/0x100
    [  788.767018]  [<ffffffff81637f49>] skb_warn_bad_offload+0xcd/0xda
    [  788.796117]  [<ffffffff8152950c>] skb_checksum_help+0x17c/0x190
    [  788.823392]  [<ffffffffa01463a1>] netem_enqueue+0x741/0x7c0 [sch_netem]
    [  788.854487]  [<ffffffff8152cb58>] dev_queue_xmit+0x2a8/0x570
    [  788.880870]  [<ffffffff8156ae1d>] ip_finish_output+0x53d/0x7d0
    ...
    
    The problem occurs because netem is not prepared to handle GSO packets (as it
    uses skb_checksum_help in its enqueue path, which cannot manipulate these
    frames).
    
    The solution I think is to simply segment the skb in a simmilar fashion to the
    way we do in __dev_queue_xmit (via validate_xmit_skb), with some minor changes.
    When we decide to corrupt an skb, if the frame is GSO, we segment it, corrupt
    the first segment, and enqueue the remaining ones.
    
    tested successfully by myself on the latest net kernel, to which this applies
    
    Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
    CC: Jamal Hadi Salim <jhs@mojatatu.com>
    CC: "David S. Miller" <davem@davemloft.net>
    CC: netem@lists.linux-foundation.org
    CC: eric.dumazet@gmail.com
    CC: stephen@networkplumber.org
    Acked-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: open-code qdisc_qstats_drop()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 097ad5ec85df0f21ef6a40e81741d88c5bebafe5
Author: WANG Cong <xiyou.wangcong@gmail.com>
Date:   Thu Feb 25 14:55:03 2016 -0800

    sch_dsmark: update backlog as well
    
    [ Upstream commit bdf17661f63a79c3cb4209b970b1cc39e34f7543 ]
    
    Similarly, we need to update backlog too when we update qlen.
    
    Cc: Jamal Hadi Salim <jhs@mojatatu.com>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: open-code qdisc_qstats_backlog_{inc,dec}()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a3432a6c13a288cd9a38cb72c6552fcc49bb34e5
Author: WANG Cong <xiyou.wangcong@gmail.com>
Date:   Thu Feb 25 14:55:02 2016 -0800

    sch_htb: update backlog as well
    
    [ Upstream commit 431e3a8e36a05a37126f34b41aa3a5a6456af04e ]
    
    We saw qlen!=0 but backlog==0 on our production machine:
    
    qdisc htb 1: dev eth0 root refcnt 2 r2q 10 default 1 direct_packets_stat 0 ver 3.17
     Sent 172680457356 bytes 222469449 pkt (dropped 0, overlimits 123575834 requeues 0)
     backlog 0b 72p requeues 0
    
    The problem is we only count qlen for HTB qdisc but not backlog.
    We need to update backlog too when we update qlen, so that we
    can at least know the average packet length.
    
    Cc: Jamal Hadi Salim <jhs@mojatatu.com>
    Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: open-code qdisc_qstats_backlog_{inc,dec}()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5499c9cd5f9a3fbe626f4253f92d4379cb3741fa
Author: Chris Friesen <chris.friesen@windriver.com>
Date:   Fri Apr 8 15:21:30 2016 -0600

    route: do not cache fib route info on local routes with oif
    
    [ Upstream commit d6d5e999e5df67f8ec20b6be45e2229455ee3699 ]
    
    For local routes that require a particular output interface we do not want
    to cache the result.  Caching the result causes incorrect behaviour when
    there are multiple source addresses on the interface.  The end result
    being that if the intended recipient is waiting on that interface for the
    packet he won't receive it because it will be delivered on the loopback
    interface and the IP_PKTINFO ipi_ifindex will be set to the loopback
    interface as well.
    
    This can be tested by running a program such as "dhcp_release" which
    attempts to inject a packet on a particular interface so that it is
    received by another program on the same board.  The receiving process
    should see an IP_PKTINFO ipi_ifndex value of the source interface
    (e.g., eth1) instead of the loopback interface (e.g., lo).  The packet
    will still appear on the loopback interface in tcpdump but the important
    aspect is that the CMSG info is correct.
    
    Sample dhcp_release command line:
    
       dhcp_release eth1 192.168.204.222 02:11:33:22:44:66
    
    Signed-off-by: Allain Legacy <allain.legacy@windriver.com>
    Signed off-by: Chris Friesen <chris.friesen@windriver.com>
    Reviewed-by: Julian Anastasov <ja@ssi.bg>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit abc877be41a970c1bfbaf974f7719b7ff8e5ab39
Author: David S. Miller <davem@davemloft.net>
Date:   Sun Apr 10 23:01:30 2016 -0400

    decnet: Do not build routes to devices without decnet private data.
    
    [ Upstream commit a36a0d4008488fa545c74445d69eaf56377d5d4e ]
    
    In particular, make sure we check for decnet private presence
    for loopback devices.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit de699f0595d112f0cb5a799b65fde341c20d4a59
Author: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Date:   Thu Feb 12 15:01:39 2015 -0800

    lib/vsprintf.c: improve sanity check in vsnprintf()
    
    commit 2aa2f9e21e4eb25c720b2e7d80f8929638f6ad73 upstream.
    
    On 64 bit, size may very well be huge even if bit 31 happens to be 0.
    Somehow it doesn't feel right that one can pass a 5 GiB buffer but not a
    3 GiB one.  So cap at INT_MAX as was probably the intention all along.
    This is also the made-up value passed by sprintf and vsprintf.
    
    Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
    Cc: Jiri Kosina <jkosina@suse.cz>
    Cc: Randy Dunlap <rdunlap@infradead.org>
    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>
    Cc: Willy Tarreau <w@1wt.eu>

commit 0c8a7400036ee86884375ac8856a3d6addf11361
Author: Hiroshi Shimamoto <h-shimamoto@ct.jp.nec.com>
Date:   Thu Nov 19 16:47:28 2015 +0100

    sched/cputime: Fix invalid gtime in proc
    
    commit 2541117b0cf79977fa11a0d6e17d61010677bd7b upstream.
    
    /proc/stats shows invalid gtime when the thread is running in guest.
    When vtime accounting is not enabled, we cannot get a valid delta.
    The delta is calculated with now - tsk->vtime_snap, but tsk->vtime_snap
    is only updated when vtime accounting is runtime enabled.
    
    This patch makes task_gtime() just return gtime without computing the
    buggy non-existing tickless delta when vtime accounting is not enabled.
    
    Use context_tracking_is_enabled() to check if vtime is accounting on
    some cpu, in which case only we need to check the tickless delta. This
    way we fix the gtime value regression on machines not running nohz full.
    
    The kernel config contains CONFIG_VIRT_CPU_ACCOUNTING_GEN=y and
    CONFIG_NO_HZ_FULL_ALL=n and boot without nohz_full.
    
    I ran and stop a busy loop in VM and see the gtime in host.
    Dump the 43rd field which shows the gtime in every second:
    
             # while :; do awk '{print $3" "$43}' /proc/3955/task/4014/stat; sleep 1; done
            S 4348
            R 7064566
            R 7064766
            R 7064967
            R 7065168
            S 4759
            S 4759
    
    During running busy loop, it returns large value.
    
    After applying this patch, we can see right gtime.
    
             # while :; do awk '{print $3" "$43}' /proc/10913/task/10956/stat; sleep 1; done
            S 5338
            R 5365
            R 5465
            R 5566
            R 5666
            S 5726
            S 5726
    
    Signed-off-by: Hiroshi Shimamoto <h-shimamoto@ct.jp.nec.com>
    Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Chris Metcalf <cmetcalf@ezchip.com>
    Cc: Christoph Lameter <cl@linux.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Luiz Capitulino <lcapitulino@redhat.com>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Paul E . McKenney <paulmck@linux.vnet.ibm.com>
    Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/1447948054-28668-2-git-send-email-fweisbec@gmail.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 55429dd9c16006c5f2edc53c25a3594d299fbf98
Author: David S. Miller <davem@davemloft.net>
Date:   Fri Feb 17 16:19:39 2017 -0500

    irda: Fix lockdep annotations in hashbin_delete().
    
    commit 4c03b862b12f980456f9de92db6d508a4999b788 upstream.
    
    A nested lock depth was added to the hasbin_delete() code but it
    doesn't actually work some well and results in tons of lockdep splats.
    
    Fix the code instead to properly drop the lock around the operation
    and just keep peeking the head of the hashbin queue.
    
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Tested-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    Fix missing sanity check in /dev/sg
    
    commit 137d01df511b3afe1f05499aea05f3bafc0fb221 upstream.
    
    What happens is that a write to /dev/sg is given a request with non-zero
    ->iovec_count combined with zero ->dxfer_len.  Or with ->dxferp pointing
    to an array full of empty iovecs.
    
    Having write permission to /dev/sg shouldn't be equivalent to the
    ability to trigger BUG_ON() while holding spinlocks...
    
    Found by Dmitry Vyukov and syzkaller.
    
    [ The BUG_ON() got changed to a WARN_ON_ONCE(), but this fixes the
      underlying issue.  - Linus ]
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [bwh: Backported to 3.16: we're not using iov_iter, but can check the
     byte length after truncation]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

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

    packet: Do not call fanout_release from atomic contexts
    
    commit 2bd624b4611ffee36422782d16e1c944d1351e98 upstream.
    
    Commit 6664498280cf ("packet: call fanout_release, while UNREGISTERING a
    netdev"), unfortunately, introduced the following issues.
    
    1. calling mutex_lock(&fanout_mutex) (fanout_release()) from inside
    rcu_read-side critical section. rcu_read_lock disables preemption, most often,
    which prohibits calling sleeping functions.
    
    [  ] include/linux/rcupdate.h:560 Illegal context switch in RCU read-side critical section!
    [  ]
    [  ] rcu_scheduler_active = 1, debug_locks = 0
    [  ] 4 locks held by ovs-vswitchd/1969:
    [  ]  #0:  (cb_lock){++++++}, at: [<ffffffff8158a6c9>] genl_rcv+0x19/0x40
    [  ]  #1:  (ovs_mutex){+.+.+.}, at: [<ffffffffa04878ca>] ovs_vport_cmd_del+0x4a/0x100 [openvswitch]
    [  ]  #2:  (rtnl_mutex){+.+.+.}, at: [<ffffffff81564157>] rtnl_lock+0x17/0x20
    [  ]  #3:  (rcu_read_lock){......}, at: [<ffffffff81614165>] packet_notifier+0x5/0x3f0
    [  ]
    [  ] Call Trace:
    [  ]  [<ffffffff813770c1>] dump_stack+0x85/0xc4
    [  ]  [<ffffffff810c9077>] lockdep_rcu_suspicious+0x107/0x110
    [  ]  [<ffffffff810a2da7>] ___might_sleep+0x57/0x210
    [  ]  [<ffffffff810a2fd0>] __might_sleep+0x70/0x90
    [  ]  [<ffffffff8162e80c>] mutex_lock_nested+0x3c/0x3a0
    [  ]  [<ffffffff810de93f>] ? vprintk_default+0x1f/0x30
    [  ]  [<ffffffff81186e88>] ? printk+0x4d/0x4f
    [  ]  [<ffffffff816106dd>] fanout_release+0x1d/0xe0
    [  ]  [<ffffffff81614459>] packet_notifier+0x2f9/0x3f0
    
    2. calling mutex_lock(&fanout_mutex) inside spin_lock(&po->bind_lock).
    "sleeping function called from invalid context"
    
    [  ] BUG: sleeping function called from invalid context at kernel/locking/mutex.c:620
    [  ] in_atomic(): 1, irqs_disabled(): 0, pid: 1969, name: ovs-vswitchd
    [  ] INFO: lockdep is turned off.
    [  ] Call Trace:
    [  ]  [<ffffffff813770c1>] dump_stack+0x85/0xc4
    [  ]  [<ffffffff810a2f52>] ___might_sleep+0x202/0x210
    [  ]  [<ffffffff810a2fd0>] __might_sleep+0x70/0x90
    [  ]  [<ffffffff8162e80c>] mutex_lock_nested+0x3c/0x3a0
    [  ]  [<ffffffff816106dd>] fanout_release+0x1d/0xe0
    [  ]  [<ffffffff81614459>] packet_notifier+0x2f9/0x3f0
    
    3. calling dev_remove_pack(&fanout->prot_hook), from inside
    spin_lock(&po->bind_lock) or rcu_read-side critical-section. dev_remove_pack()
    -> synchronize_net(), which might sleep.
    
    [  ] BUG: scheduling while atomic: ovs-vswitchd/1969/0x00000002
    [  ] INFO: lockdep is turned off.
    [  ] Call Trace:
    [  ]  [<ffffffff813770c1>] dump_stack+0x85/0xc4
    [  ]  [<ffffffff81186274>] __schedule_bug+0x64/0x73
    [  ]  [<ffffffff8162b8cb>] __schedule+0x6b/0xd10
    [  ]  [<ffffffff8162c5db>] schedule+0x6b/0x80
    [  ]  [<ffffffff81630b1d>] schedule_timeout+0x38d/0x410
    [  ]  [<ffffffff810ea3fd>] synchronize_sched_expedited+0x53d/0x810
    [  ]  [<ffffffff810ea6de>] synchronize_rcu_expedited+0xe/0x10
    [  ]  [<ffffffff8154eab5>] synchronize_net+0x35/0x50
    [  ]  [<ffffffff8154eae3>] dev_remove_pack+0x13/0x20
    [  ]  [<ffffffff8161077e>] fanout_release+0xbe/0xe0
    [  ]  [<ffffffff81614459>] packet_notifier+0x2f9/0x3f0
    
    4. fanout_release() races with calls from different CPU.
    
    To fix the above problems, remove the call to fanout_release() under
    rcu_read_lock(). Instead, call __dev_remove_pack(&fanout->prot_hook) and
    netdev_run_todo will be happy that &dev->ptype_specific list is empty. In order
    to achieve this, I moved dev_{add,remove}_pack() out of fanout_{add,release} to
    __fanout_{link,unlink}. So, call to {,__}unregister_prot_hook() will make sure
    fanout->prot_hook is removed as well.
    
    Fixes: 6664498280cf ("packet: call fanout_release, while UNREGISTERING a netdev")
    Reported-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Anoob Soman <anoob.soman@citrix.com>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16:
     - Don't call fanout_release_data()
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5d4c3670b96936201d75ebed09062129dbe6ede7
Author: Anoob Soman <anoob.soman@citrix.com>
Date:   Wed Oct 5 15:12:54 2016 +0100

    packet: call fanout_release, while UNREGISTERING a netdev
    
    commit 6664498280cf17a59c3e7cf1a931444c02633ed1 upstream.
    
    If a socket has FANOUT sockopt set, a new proto_hook is registered
    as part of fanout_add(). When processing a NETDEV_UNREGISTER event in
    af_packet, __fanout_unlink is called for all sockets, but prot_hook which was
    registered as part of fanout_add is not removed. Call fanout_release, on a
    NETDEV_UNREGISTER, which removes prot_hook and removes fanout from the
    fanout_list.
    
    This fixes BUG_ON(!list_empty(&dev->ptype_specific)) in netdev_run_todo()
    
    Signed-off-by: Anoob Soman <anoob.soman@citrix.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    vfs: fix uninitialized flags in splice_to_pipe()
    
    commit 5a81e6a171cdbd1fa8bc1fdd80c23d3d71816fac upstream.
    
    Flags (PIPE_BUF_FLAG_PACKET, PIPE_BUF_FLAG_GIFT) could remain on the
    unused part of the pipe ring buffer.  Previously splice_to_pipe() left
    the flags value alone, which could result in incorrect behavior.
    
    Uninitialized flags appears to have been there from the introduction of
    the splice syscall.
    
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [bwh: Backported to 3.16: adjust context, indentation]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c32ff59ab18cec7be8e427f140dd2e0426ebde41
Author: Anssi Hannula <anssi.hannula@bitwise.fi>
Date:   Tue Feb 14 19:11:45 2017 +0200

    net: xilinx_emaclite: fix freezes due to unordered I/O
    
    commit acf138f1b00bdd1b7cd9894562ed0c2a1670888e upstream.
    
    The xilinx_emaclite uses __raw_writel and __raw_readl for register
    accesses. Those functions do not imply any kind of memory barriers and
    they may be reordered.
    
    The driver does not seem to take that into account, though, and the
    driver does not satisfy the ordering requirements of the hardware.
    For clear examples, see xemaclite_mdio_write() and xemaclite_mdio_read()
    which try to set MDIO address before initiating the transaction.
    
    I'm seeing system freezes with the driver with GCC 5.4 and current
    Linux kernels on Zynq-7000 SoC immediately when trying to use the
    interface.
    
    In commit 123c1407af87 ("net: emaclite: Do not use microblaze and ppc
    IO functions") the driver was switched from non-generic
    in_be32/out_be32 (memory barriers, big endian) to
    __raw_readl/__raw_writel (no memory barriers, native endian), so
    apparently the device follows system endianness and the driver was
    originally written with the assumption of memory barriers.
    
    Rather than try to hunt for each case of missing barrier, just switch
    the driver to use iowrite32/ioread32/iowrite32be/ioread32be depending
    on endianness instead.
    
    Tested on little-endian Zynq-7000 ARM SoC FPGA.
    
    Signed-off-by: Anssi Hannula <anssi.hannula@bitwise.fi>
    Fixes: 123c1407af87 ("net: emaclite: Do not use microblaze and ppc IO
    functions")
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7a7ba2248b91b7cf06370fd6fe6e9f5c0728ae72
Author: Anssi Hannula <anssi.hannula@bitwise.fi>
Date:   Tue Feb 14 19:11:44 2017 +0200

    net: xilinx_emaclite: fix receive buffer overflow
    
    commit cd224553641848dd17800fe559e4ff5d208553e8 upstream.
    
    xilinx_emaclite looks at the received data to try to determine the
    Ethernet packet length but does not properly clamp it if
    proto_type == ETH_P_IP or 1500 < proto_type <= 1518, causing a buffer
    overflow and a panic via skb_panic() as the length exceeds the allocated
    skb size.
    
    Fix those cases.
    
    Also add an additional unconditional check with WARN_ON() at the end.
    
    Signed-off-by: Anssi Hannula <anssi.hannula@bitwise.fi>
    Fixes: bb81b2ddfa19 ("net: add Xilinx emac lite device driver")
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

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

commit bf7916239a591920427b0ee8022c222eeccba840
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Feb 14 09:03:51 2017 -0800

    packet: fix races in fanout_add()
    
    commit d199fab63c11998a602205f7ee7ff7c05c97164b upstream.
    
    Multiple threads can call fanout_add() at the same time.
    
    We need to grab fanout_mutex earlier to avoid races that could
    lead to one thread freeing po->rollover that was set by another thread.
    
    Do the same in fanout_release(), for peace of mind, and to help us
    finding lockdep issues earlier.
    
    Fixes: dc99f600698d ("packet: Add fanout support.")
    Fixes: 0648ab70afe6 ("packet: rollover prepare: per-socket state")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16:
     - No rollover queue stats
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

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

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

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

commit 8e822a0f8b3b8d2907ae7fba62258562b7ef800c
Author: Eric Dumazet <edumazet@google.com>
Date:   Sun Feb 12 14:03:52 2017 -0800

    net/llc: avoid BUG_ON() in skb_orphan()
    
    commit 8b74d439e1697110c5e5c600643e823eb1dd0762 upstream.
    
    It seems nobody used LLC since linux-3.12.
    
    Fortunately fuzzers like syzkaller still know how to run this code,
    otherwise it would be no fun.
    
    Setting skb->sk without skb->destructor leads to all kinds of
    bugs, we now prefer to be very strict about it.
    
    Ideally here we would use skb_set_owner() but this helper does not exist yet,
    only CAN seems to have a private helper for that.
    
    Fixes: 376c7311bdb6 ("net: add a temporary sanity check in skb_orphan()")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8f1a86023db8650682685a5845fea72c951c9852
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Fri Mar 3 02:32:07 2017 +0000

    net/sock: Add sock_efree() function
    
    Extracted from commit 62bccb8cdb69 ("net-timestamp: Make the clone operation
    stand-alone from phy timestamping").
    
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3f70197d83d9ca109db27ae313ca682b959c288c
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Feb 9 16:15:52 2017 -0800

    l2tp: do not use udp_ioctl()
    
    commit 72fb96e7bdbbdd4421b0726992496531060f3636 upstream.
    
    udp_ioctl(), as its name suggests, is used by UDP protocols,
    but is also used by L2TP :(
    
    L2TP should use its own handler, because it really does not
    look the same.
    
    SIOCINQ for instance should not assume UDP checksum or headers.
    
    Thanks to Andrey and syzkaller team for providing the report
    and a nice reproducer.
    
    While crashes only happen on recent kernels (after commit
    7c13f97ffde6 ("udp: do fwd memory scheduling on dequeue")), this
    probably needs to be backported to older kernels.
    
    Fixes: 7c13f97ffde6 ("udp: do fwd memory scheduling on dequeue")
    Fixes: 85584672012e ("udp: Fix udp_poll() and ioctl()")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Acked-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    xen-netfront: Delete rx_refill_timer in xennet_disconnect_backend()
    
    commit 74470954857c264168d2b5a113904cf0cfd27d18 upstream.
    
    rx_refill_timer should be deleted as soon as we disconnect from the
    backend since otherwise it is possible for the timer to go off before
    we get to xennet_destroy_queues(). If this happens we may dereference
    queue->rx.sring which is set to NULL in xennet_disconnect_backend().
    
    Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: del_timer_sync() was called from xennet_remove()
     but that's also too late]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f32f04a35b26c3481b1c99142e6bcf934d44eab3
Author: Steffen Maier <maier@linux.vnet.ibm.com>
Date:   Wed Feb 8 15:34:22 2017 +0100

    scsi: zfcp: fix use-after-free by not tracing WKA port open/close on failed send
    
    commit 2dfa6688aafdc3f74efeb1cf05fb871465d67f79 upstream.
    
    Dan Carpenter kindly reported:
    <quote>
    The patch d27a7cb91960: "zfcp: trace on request for open and close of
    WKA port" from Aug 10, 2016, leads to the following static checker
    warning:
    
            drivers/s390/scsi/zfcp_fsf.c:1615 zfcp_fsf_open_wka_port()
            warn: 'req' was already freed.
    
    drivers/s390/scsi/zfcp_fsf.c
      1609          zfcp_fsf_start_timer(req, ZFCP_FSF_REQUEST_TIMEOUT);
      1610          retval = zfcp_fsf_req_send(req);
      1611          if (retval)
      1612                  zfcp_fsf_req_free(req);
                                              ^^^
    Freed.
    
      1613  out:
      1614          spin_unlock_irq(&qdio->req_q_lock);
      1615          if (req && !IS_ERR(req))
      1616                  zfcp_dbf_rec_run_wka("fsowp_1", wka_port, req->req_id);
                                                                      ^^^^^^^^^^^
    Use after free.
    
      1617          return retval;
      1618  }
    
    Same thing for zfcp_fsf_close_wka_port() as well.
    </quote>
    
    Rather than relying on req being NULL (or ERR_PTR) for all cases where
    we don't want to trace or should not trace,
    simply check retval which is unconditionally initialized with -EIO != 0
    and it can only become 0 on successful retval = zfcp_fsf_req_send(req).
    With that we can also remove the then again unnecessary unconditional
    initialization of req which was introduced with that earlier commit.
    
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Suggested-by: Benjamin Block <bblock@linux.vnet.ibm.com>
    Signed-off-by: Steffen Maier <maier@linux.vnet.ibm.com>
    Fixes: d27a7cb91960 ("zfcp: trace on request for open and close of WKA port")
    Reviewed-by: Benjamin Block <bblock@linux.vnet.ibm.com>
    Reviewed-by: Jens Remus <jremus@linux.vnet.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3f9f59a1519d5364f9e077b4c199b146e6d62b4d
Author: Hui Wang <hui.wang@canonical.com>
Date:   Thu Feb 9 09:20:54 2017 +0800

    ALSA: hda - adding a new NV HDMI/DP codec ID in the driver
    
    commit af677166cf63c179dc2485053166e02c4aea01eb upstream.
    
    Without this change, the HDMI/DP codec will be recognised as a
    generic codec, and there is no sound when playing through this codec.
    
    As suggested by NVidia side, after adding the new ID in the driver,
    the sound playing works well.
    
    Signed-off-by: Hui Wang <hui.wang@canonical.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    [bwh: Backported to 3.16: don't use HDA_CODEC_ENTRY()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 69961a4cd3ca1ef4303e0c146bc6da836a15f3cf
Author: WANG Cong <xiyou.wangcong@gmail.com>
Date:   Tue Feb 7 12:59:46 2017 -0800

    ping: fix a null pointer dereference
    
    commit 73d2c6678e6c3af7e7a42b1e78cd0211782ade32 upstream.
    
    Andrey reported a kernel crash:
    
      general protection fault: 0000 [#1] SMP KASAN
      Dumping ftrace buffer:
         (ftrace buffer empty)
      Modules linked in:
      CPU: 2 PID: 3880 Comm: syz-executor1 Not tainted 4.10.0-rc6+ #124
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
      task: ffff880060048040 task.stack: ffff880069be8000
      RIP: 0010:ping_v4_push_pending_frames net/ipv4/ping.c:647 [inline]
      RIP: 0010:ping_v4_sendmsg+0x1acd/0x23f0 net/ipv4/ping.c:837
      RSP: 0018:ffff880069bef8b8 EFLAGS: 00010206
      RAX: dffffc0000000000 RBX: ffff880069befb90 RCX: 0000000000000000
      RDX: 0000000000000018 RSI: ffff880069befa30 RDI: 00000000000000c2
      RBP: ffff880069befbb8 R08: 0000000000000008 R09: 0000000000000000
      R10: 0000000000000002 R11: 0000000000000000 R12: ffff880069befab0
      R13: ffff88006c624a80 R14: ffff880069befa70 R15: 0000000000000000
      FS:  00007f6f7c716700(0000) GS:ffff88006de00000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00000000004a6f28 CR3: 000000003a134000 CR4: 00000000000006e0
      Call Trace:
       inet_sendmsg+0x164/0x5b0 net/ipv4/af_inet.c:744
       sock_sendmsg_nosec net/socket.c:635 [inline]
       sock_sendmsg+0xca/0x110 net/socket.c:645
       SYSC_sendto+0x660/0x810 net/socket.c:1687
       SyS_sendto+0x40/0x50 net/socket.c:1655
       entry_SYSCALL_64_fastpath+0x1f/0xc2
    
    This is because we miss a check for NULL pointer for skb_peek() when
    the queue is empty. Other places already have the same check.
    
    Fixes: c319b4d76b9e ("net: ipv4: add IPPROTO_ICMP socket kind")
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Tested-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

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

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

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

commit 37e1b6b5c6d6dcb18a75558a5cb9ab8252c5f0c5
Author: Nicholas Bellinger <nab@linux-iscsi.org>
Date:   Tue Dec 6 22:45:46 2016 -0800

    target: Fix early transport_generic_handle_tmr abort scenario
    
    commit c54eeffbe9338fa982dc853d816fda9202a13b5a upstream.
    
    This patch fixes a bug where incoming task management requests
    can be explicitly aborted during an active LUN_RESET, but who's
    struct work_struct are canceled in-flight before execution.
    
    This occurs when core_tmr_drain_tmr_list() invokes cancel_work_sync()
    for the incoming se_tmr_req->task_cmd->work, resulting in cmd->work
    for target_tmr_work() never getting invoked and the aborted TMR
    waiting indefinately within transport_wait_for_tasks().
    
    To address this case, perform a CMD_T_ABORTED check early in
    transport_generic_handle_tmr(), and invoke the normal path via
    transport_cmd_check_stop_to_fabric() to complete any TMR kthreads
    blocked waiting for CMD_T_STOP in transport_wait_for_tasks().
    
    Also, move the TRANSPORT_ISTATE_PROCESSING assignment earlier
    into transport_generic_handle_tmr() so the existing check in
    core_tmr_drain_tmr_list() avoids attempting abort the incoming
    se_tmr_req->task_cmd->work if it has already been queued into
    se_device->tmr_wq.
    
    Reported-by: Rob Millner <rlm@daterainc.com>
    Tested-by: Rob Millner <rlm@daterainc.com>
    Cc: Rob Millner <rlm@daterainc.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    [bwh: Backported to 3.16:
     - Tags are 32-bit; print them with %u
     - Command tag must be looked up with get_task_tag op]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

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

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

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

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

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

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

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

commit f8038ac03063fddc9c174935fdd2704b7ee15725
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Sat Feb 4 16:57:04 2017 +0000

    catc: Use heap buffer for memory size test
    
    commit 2d6a0e9de03ee658a9adc3bfb2f0ca55dff1e478 upstream.
    
    Allocating USB buffers on the stack is not portable, and no longer
    works on x86_64 (with VMAP_STACK enabled as per default).
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit fda37c1c5b3f9457cecf2c01993921a371f3e4fb
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Sat Feb 4 16:56:56 2017 +0000

    catc: Combine failure cleanup code in catc_probe()
    
    commit d41149145f98fe26dcd0bfd1d6cc095e6e041418 upstream.
    
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit d1166ae7a5bb5dcb09ed7e0b7fcdf465a1f7ddaa
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Sat Feb 4 16:56:32 2017 +0000

    rtl8150: Use heap buffers for all register access
    
    commit 7926aff5c57b577ab0f43364ff0c59d968f6a414 upstream.
    
    Allocating USB buffers on the stack is not portable, and no longer
    works on x86_64 (with VMAP_STACK enabled as per default).
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: David S. Miller <davem@davemloft.net>

commit 9b103e24c94d4d39e750aec53ca90a5392a6d14a
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Sat Feb 4 16:56:03 2017 +0000

    pegasus: Use heap buffers for all register access
    
    commit 5593523f968bc86d42a035c6df47d5e0979b5ace upstream.
    
    Allocating USB buffers on the stack is not portable, and no longer
    works on x86_64 (with VMAP_STACK enabled as per default).
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    References: https://bugs.debian.org/852556
    Reported-by: Lisandro Damián Nicanor Pérez Meyer <lisandro@debian.org>
    Tested-by: Lisandro Damián Nicanor Pérez Meyer <lisandro@debian.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: David S. Miller <davem@davemloft.net>

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

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

commit 5630d3acda4deb2e510573307ad67b89ee345293
Author: Thorsten Horstmann <thorsten@defutech.de>
Date:   Fri Feb 3 14:38:29 2017 +0100

    mac80211: Fix adding of mesh vendor IEs
    
    commit da7061c82e4a1bc6a5e134ef362c86261906c860 upstream.
    
    The function ieee80211_ie_split_vendor doesn't return 0 on errors. Instead
    it returns any offset < ielen when WLAN_EID_VENDOR_SPECIFIC is found. The
    return value in mesh_add_vendor_ies must therefore be checked against
    ifmsh->ie_len and not 0. Otherwise all ifmsh->ie starting with
    WLAN_EID_VENDOR_SPECIFIC will be rejected.
    
    Fixes: 082ebb0c258d ("mac80211: fix mesh beacon format")
    Signed-off-by: Thorsten Horstmann <thorsten@defutech.de>
    Signed-off-by: Mathias Kretschmer <mathias.kretschmer@fit.fraunhofer.de>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    [sven@narfation.org: Add commit message]
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit bc9e2ad4628d13aca2ed28ac1fa77c4c41594ff0
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Feb 3 00:03:26 2017 -0800

    netlabel: out of bound access in cipso_v4_validate()
    
    commit d71b7896886345c53ef1d84bda2bc758554f5d61 upstream.
    
    syzkaller found another out of bound access in ip_options_compile(),
    or more exactly in cipso_v4_validate()
    
    Fixes: 20e2a8648596 ("cipso: handle CIPSO options correctly when NetLabel is disabled")
    Fixes: 446fda4f2682 ("[NetLabel]: CIPSOv4 engine")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Dmitry Vyukov  <dvyukov@google.com>
    Cc: Paul Moore <paul@paul-moore.com>
    Acked-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    mm, fs: check for fatal signals in do_generic_file_read()
    
    commit 5abf186a30a89d5b9c18a6bf93a2c192c9fd52f6 upstream.
    
    do_generic_file_read() can be told to perform a large request from
    userspace.  If the system is under OOM and the reading task is the OOM
    victim then it has an access to memory reserves and finishing the full
    request can lead to the full memory depletion which is dangerous.  Make
    sure we rather go with a short read and allow the killed task to
    terminate.
    
    Link: http://lkml.kernel.org/r/20170201092706.9966-3-mhocko@kernel.org
    Signed-off-by: Michal Hocko <mhocko@suse.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    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 8c41674bdc5e1ddb1b1a5d06ce0efdd9996e26d8
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Feb 2 10:31:35 2017 -0800

    net: use a work queue to defer net_disable_timestamp() work
    
    commit 5fa8bbda38c668e56b0c6cdecced2eac2fe36dec upstream.
    
    Dmitry reported a warning [1] showing that we were calling
    net_disable_timestamp() -> static_key_slow_dec() from a non
    process context.
    
    Grabbing a mutex while holding a spinlock or rcu_read_lock()
    is not allowed.
    
    As Cong suggested, we now use a work queue.
    
    It is possible netstamp_clear() exits while netstamp_needed_deferred
    is not zero, but it is probably not worth trying to do better than that.
    
    netstamp_needed_deferred atomic tracks the exact number of deferred
    decrements.
    
    [1]
    [ INFO: suspicious RCU usage. ]
    4.10.0-rc5+ #192 Not tainted
    -------------------------------
    ./include/linux/rcupdate.h:561 Illegal context switch in RCU read-side
    critical section!
    
    other info that might help us debug this:
    
    rcu_scheduler_active = 2, debug_locks = 0
    2 locks held by syz-executor14/23111:
     #0:  (sk_lock-AF_INET6){+.+.+.}, at: [<ffffffff83a35c35>] lock_sock
    include/net/sock.h:1454 [inline]
     #0:  (sk_lock-AF_INET6){+.+.+.}, at: [<ffffffff83a35c35>]
    rawv6_sendmsg+0x1e65/0x3ec0 net/ipv6/raw.c:919
     #1:  (rcu_read_lock){......}, at: [<ffffffff83ae2678>] nf_hook
    include/linux/netfilter.h:201 [inline]
     #1:  (rcu_read_lock){......}, at: [<ffffffff83ae2678>]
    __ip6_local_out+0x258/0x840 net/ipv6/output_core.c:160
    
    stack backtrace:
    CPU: 2 PID: 23111 Comm: syz-executor14 Not tainted 4.10.0-rc5+ #192
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs
    01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:15 [inline]
     dump_stack+0x2ee/0x3ef lib/dump_stack.c:51
     lockdep_rcu_suspicious+0x139/0x180 kernel/locking/lockdep.c:4452
     rcu_preempt_sleep_check include/linux/rcupdate.h:560 [inline]
     ___might_sleep+0x560/0x650 kernel/sched/core.c:7748
     __might_sleep+0x95/0x1a0 kernel/sched/core.c:7739
     mutex_lock_nested+0x24f/0x1730 kernel/locking/mutex.c:752
     atomic_dec_and_mutex_lock+0x119/0x160 kernel/locking/mutex.c:1060
     __static_key_slow_dec+0x7a/0x1e0 kernel/jump_label.c:149
     static_key_slow_dec+0x51/0x90 kernel/jump_label.c:174
     net_disable_timestamp+0x3b/0x50 net/core/dev.c:1728
     sock_disable_timestamp+0x98/0xc0 net/core/sock.c:403
     __sk_destruct+0x27d/0x6b0 net/core/sock.c:1441
     sk_destruct+0x47/0x80 net/core/sock.c:1460
     __sk_free+0x57/0x230 net/core/sock.c:1468
     sock_wfree+0xae/0x120 net/core/sock.c:1645
     skb_release_head_state+0xfc/0x200 net/core/skbuff.c:655
     skb_release_all+0x15/0x60 net/core/skbuff.c:668
     __kfree_skb+0x15/0x20 net/core/skbuff.c:684
     kfree_skb+0x16e/0x4c0 net/core/skbuff.c:705
     inet_frag_destroy+0x121/0x290 net/ipv4/inet_fragment.c:304
     inet_frag_put include/net/inet_frag.h:133 [inline]
     nf_ct_frag6_gather+0x1106/0x3840
    net/ipv6/netfilter/nf_conntrack_reasm.c:617
     ipv6_defrag+0x1be/0x2b0 net/ipv6/netfilter/nf_defrag_ipv6_hooks.c:68
     nf_hook_entry_hookfn include/linux/netfilter.h:102 [inline]
     nf_hook_slow+0xc3/0x290 net/netfilter/core.c:310
     nf_hook include/linux/netfilter.h:212 [inline]
     __ip6_local_out+0x489/0x840 net/ipv6/output_core.c:160
     ip6_local_out+0x2d/0x170 net/ipv6/output_core.c:170
     ip6_send_skb+0xa1/0x340 net/ipv6/ip6_output.c:1722
     ip6_push_pending_frames+0xb3/0xe0 net/ipv6/ip6_output.c:1742
     rawv6_push_pending_frames net/ipv6/raw.c:613 [inline]
     rawv6_sendmsg+0x2d1a/0x3ec0 net/ipv6/raw.c:927
     inet_sendmsg+0x164/0x5b0 net/ipv4/af_inet.c:744
     sock_sendmsg_nosec net/socket.c:635 [inline]
     sock_sendmsg+0xca/0x110 net/socket.c:645
     sock_write_iter+0x326/0x600 net/socket.c:848
     do_iter_readv_writev+0x2e3/0x5b0 fs/read_write.c:695
     do_readv_writev+0x42c/0x9b0 fs/read_write.c:872
     vfs_writev+0x87/0xc0 fs/read_write.c:911
     do_writev+0x110/0x2c0 fs/read_write.c:944
     SYSC_writev fs/read_write.c:1017 [inline]
     SyS_writev+0x27/0x30 fs/read_write.c:1014
     entry_SYSCALL_64_fastpath+0x1f/0xc2
    RIP: 0033:0x445559
    RSP: 002b:00007f6f46fceb58 EFLAGS: 00000292 ORIG_RAX: 0000000000000014
    RAX: ffffffffffffffda RBX: 0000000000000005 RCX: 0000000000445559
    RDX: 0000000000000001 RSI: 0000000020f1eff0 RDI: 0000000000000005
    RBP: 00000000006e19c0 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000292 R12: 0000000000700000
    R13: 0000000020f59000 R14: 0000000000000015 R15: 0000000000020400
    BUG: sleeping function called from invalid context at
    kernel/locking/mutex.c:752
    in_atomic(): 1, irqs_disabled(): 0, pid: 23111, name: syz-executor14
    INFO: lockdep is turned off.
    CPU: 2 PID: 23111 Comm: syz-executor14 Not tainted 4.10.0-rc5+ #192
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs
    01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:15 [inline]
     dump_stack+0x2ee/0x3ef lib/dump_stack.c:51
     ___might_sleep+0x47e/0x650 kernel/sched/core.c:7780
     __might_sleep+0x95/0x1a0 kernel/sched/core.c:7739
     mutex_lock_nested+0x24f/0x1730 kernel/locking/mutex.c:752
     atomic_dec_and_mutex_lock+0x119/0x160 kernel/locking/mutex.c:1060
     __static_key_slow_dec+0x7a/0x1e0 kernel/jump_label.c:149
     static_key_slow_dec+0x51/0x90 kernel/jump_label.c:174
     net_disable_timestamp+0x3b/0x50 net/core/dev.c:1728
     sock_disable_timestamp+0x98/0xc0 net/core/sock.c:403
     __sk_destruct+0x27d/0x6b0 net/core/sock.c:1441
     sk_destruct+0x47/0x80 net/core/sock.c:1460
     __sk_free+0x57/0x230 net/core/sock.c:1468
     sock_wfree+0xae/0x120 net/core/sock.c:1645
     skb_release_head_state+0xfc/0x200 net/core/skbuff.c:655
     skb_release_all+0x15/0x60 net/core/skbuff.c:668
     __kfree_skb+0x15/0x20 net/core/skbuff.c:684
     kfree_skb+0x16e/0x4c0 net/core/skbuff.c:705
     inet_frag_destroy+0x121/0x290 net/ipv4/inet_fragment.c:304
     inet_frag_put include/net/inet_frag.h:133 [inline]
     nf_ct_frag6_gather+0x1106/0x3840
    net/ipv6/netfilter/nf_conntrack_reasm.c:617
     ipv6_defrag+0x1be/0x2b0 net/ipv6/netfilter/nf_defrag_ipv6_hooks.c:68
     nf_hook_entry_hookfn include/linux/netfilter.h:102 [inline]
     nf_hook_slow+0xc3/0x290 net/netfilter/core.c:310
     nf_hook include/linux/netfilter.h:212 [inline]
     __ip6_local_out+0x489/0x840 net/ipv6/output_core.c:160
     ip6_local_out+0x2d/0x170 net/ipv6/output_core.c:170
     ip6_send_skb+0xa1/0x340 net/ipv6/ip6_output.c:1722
     ip6_push_pending_frames+0xb3/0xe0 net/ipv6/ip6_output.c:1742
     rawv6_push_pending_frames net/ipv6/raw.c:613 [inline]
     rawv6_sendmsg+0x2d1a/0x3ec0 net/ipv6/raw.c:927
     inet_sendmsg+0x164/0x5b0 net/ipv4/af_inet.c:744
     sock_sendmsg_nosec net/socket.c:635 [inline]
     sock_sendmsg+0xca/0x110 net/socket.c:645
     sock_write_iter+0x326/0x600 net/socket.c:848
     do_iter_readv_writev+0x2e3/0x5b0 fs/read_write.c:695
     do_readv_writev+0x42c/0x9b0 fs/read_write.c:872
     vfs_writev+0x87/0xc0 fs/read_write.c:911
     do_writev+0x110/0x2c0 fs/read_write.c:944
     SYSC_writev fs/read_write.c:1017 [inline]
     SyS_writev+0x27/0x30 fs/read_write.c:1014
     entry_SYSCALL_64_fastpath+0x1f/0xc2
    RIP: 0033:0x445559
    
    Fixes: b90e5794c5bd ("net: dont call jump_label_dec from irq context")
    Suggested-by: Cong Wang <xiyou.wangcong@gmail.com>
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

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

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

    USB: serial: pl2303: add ATEN device ID
    
    commit d07830db1bdb254e4b50d366010b219286b8c937 upstream.
    
    Seems that ATEN serial-to-usb devices using pl2303 exist with
    different device ids. This patch adds a missing device ID so it
    is recognised by the driver.
    
    Signed-off-by: Marcel J.E. Mol <marcel@mesa.nl>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

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

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

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

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

    ARM: 8643/3: arm/ptrace: Preserve previous registers for short regset write
    
    commit 228dbbfb5d77f8e047b2a1d78da14b7158433027 upstream.
    
    Ensure that if userspace supplies insufficient data to
    PTRACE_SETREGSET to fill all the registers, the thread's old
    registers are preserved.
    
    Fixes: 5be6f62b0059 ("ARM: 6883/1: ptrace: Migrate to regsets framework")
    Signed-off-by: Dave Martin <Dave.Martin@arm.com>
    Acked-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

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

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

    can: bcm: fix hrtimer/tasklet termination in bcm op removal
    
    commit a06393ed03167771246c4c43192d9c264bc48412 upstream.
    
    When removing a bcm tx operation either a hrtimer or a tasklet might run.
    As the hrtimer triggers its associated tasklet and vice versa we need to
    take care to mutually terminate both handlers.
    
    Reported-by: Michael Josenhans <michael.josenhans@web.de>
    Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
    Tested-by: Michael Josenhans <michael.josenhans@web.de>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

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

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

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

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

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

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

    nfs: Fix "Don't increment lock sequence ID after NFS4ERR_MOVED"
    
    commit 406dab8450ec76eca88a1af2fc15d18a2b36ca49 upstream.
    
    Lock sequence IDs are bumped in decode_lock by calling
    nfs_increment_seqid(). nfs_increment_sequid() does not use the
    seqid_mutating_err() function fixed in commit 059aa7348241 ("Don't
    increment lock sequence ID after NFS4ERR_MOVED").
    
    Fixes: 059aa7348241 ("Don't increment lock sequence ID after ...")
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Tested-by: Xuan Qi <xuan.qi@oracle.com>
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    sysctl: fix proc_doulongvec_ms_jiffies_minmax()
    
    commit ff9f8a7cf935468a94d9927c68b00daae701667e upstream.
    
    We perform the conversion between kernel jiffies and ms only when
    exporting kernel value to user space.
    
    We need to do the opposite operation when value is written by user.
    
    Only matters when HZ != 1000
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

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

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

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

commit 303681d5d538d81b5e23754515202b5b9febd2e9
Author: Keno Fischer <keno@juliacomputing.com>
Date:   Tue Jan 24 15:17:48 2017 -0800

    mm/huge_memory.c: respect FOLL_FORCE/FOLL_COW for thp
    
    commit 8310d48b125d19fcd9521d83b8293e63eb1646aa upstream.
    
    In commit 19be0eaffa3a ("mm: remove gup_flags FOLL_WRITE games from
    __get_user_pages()"), the mm code was changed from unsetting FOLL_WRITE
    after a COW was resolved to setting the (newly introduced) FOLL_COW
    instead.  Simultaneously, the check in gup.c was updated to still allow
    writes with FOLL_FORCE set if FOLL_COW had also been set.
    
    However, a similar check in huge_memory.c was forgotten.  As a result,
    remote memory writes to ro regions of memory backed by transparent huge
    pages cause an infinite loop in the kernel (handle_mm_fault sets
    FOLL_COW and returns 0 causing a retry, but follow_trans_huge_pmd bails
    out immidiately because `(flags & FOLL_WRITE) && !pmd_write(*pmd)` is
    true.
    
    While in this state the process is stil SIGKILLable, but little else
    works (e.g.  no ptrace attach, no other signals).  This is easily
    reproduced with the following code (assuming thp are set to always):
    
        #include <assert.h>
        #include <fcntl.h>
        #include <stdint.h>
        #include <stdio.h>
        #include <string.h>
        #include <sys/mman.h>
        #include <sys/stat.h>
        #include <sys/types.h>
        #include <sys/wait.h>
        #include <unistd.h>
    
        #define TEST_SIZE 5 * 1024 * 1024
    
        int main(void) {
          int status;
          pid_t child;
          int fd = open("/proc/self/mem", O_RDWR);
          void *addr = mmap(NULL, TEST_SIZE, PROT_READ,
                            MAP_ANONYMOUS | MAP_PRIVATE, 0, 0);
          assert(addr != MAP_FAILED);
          pid_t parent_pid = getpid();
          if ((child = fork()) == 0) {
            void *addr2 = mmap(NULL, TEST_SIZE, PROT_READ | PROT_WRITE,
                               MAP_ANONYMOUS | MAP_PRIVATE, 0, 0);
            assert(addr2 != MAP_FAILED);
            memset(addr2, 'a', TEST_SIZE);
            pwrite(fd, addr2, TEST_SIZE, (uintptr_t)addr);
            return 0;
          }
          assert(child == waitpid(child, &status, 0));
          assert(WIFEXITED(status) && WEXITSTATUS(status) == 0);
          return 0;
        }
    
    Fix this by updating follow_trans_huge_pmd in huge_memory.c analogously
    to the update in gup.c in the original commit.  The same pattern exists
    in follow_devmap_pmd.  However, we should not be able to reach that
    check with FOLL_COW set, so add WARN_ONCE to make sure we notice if we
    ever do.
    
    [akpm@linux-foundation.org: coding-style fixes]
    Link: http://lkml.kernel.org/r/20170106015025.GA38411@juliacomputing.com
    Signed-off-by: Keno Fischer <keno@juliacomputing.com>
    Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Greg Thelen <gthelen@google.com>
    Cc: Nicholas Piggin <npiggin@gmail.com>
    Cc: Willy Tarreau <w@1wt.eu>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Hugh Dickins <hughd@google.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [bwh: Backported to 3.16:
     - Drop change to follow_devmap_pmd()
     - pmd_dirty() is not available; check the page flags as in older
       backports of can_follow_write_pte()
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f338af4fd5c70299dd38eca5fe8a7381b1f26111
Author: Liping Zhang <zlpnobody@gmail.com>
Date:   Sun Jan 22 22:10:32 2017 +0800

    netfilter: nft_log: restrict the log prefix length to 127
    
    commit 5ce6b04ce96896e8a79e6f60740ced911eaac7a4 upstream.
    
    First, log prefix will be truncated to NF_LOG_PREFIXLEN-1, i.e. 127,
    at nf_log_packet(), so the extra part is useless.
    
    Second, after adding a log rule with a very very long prefix, we will
    fail to dump the nft rules after this _special_ one, but acctually,
    they do exist. For example:
      # name_65000=$(printf "%0.sQ" {1..65000})
      # nft add rule filter output log prefix "$name_65000"
      # nft add rule filter output counter
      # nft add rule filter output counter
      # nft list chain filter output
      table ip filter {
          chain output {
              type filter hook output priority 0; policy accept;
          }
      }
    
    So now, restrict the log prefix length to NF_LOG_PREFIXLEN-1.
    
    Fixes: 96518518cc41 ("netfilter: add nftables")
    Signed-off-by: Liping Zhang <zlpnobody@gmail.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    [bwh: Backported to 3.16: adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

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

commit 66c33101e1a16ddf579224fe75f627d1e22727b6
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Jan 23 16:43:05 2017 -0800

    ip6_tunnel: must reload ipv6h in ip6ip6_tnl_xmit()
    
    commit 21b995a9cb093fff33ec91d7cb3822b882a90a1e upstream.
    
    Since ip6_tnl_parse_tlv_enc_lim() can call pskb_may_pull(),
    we must reload any pointer that was related to skb->head
    (or skb->data), or risk use after free.
    
    Fixes: c12b395a4664 ("gre: Support GRE over IPv6")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Dmitry Kozlov <xeb@mail.ru>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.2: adjust context, indentation]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

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

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

    USB: serial: option: add device ID for HP lt2523 (Novatel E371)
    
    commit 5d03a2fd2292e71936c4235885c35ccc3c94695b upstream.
    
    Yet another laptop vendor rebranded Novatel E371.
    
    Signed-off-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

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

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

    crypto: arm64/aes-blk - honour iv_out requirement in CBC and CTR modes
    
    commit 11e3b725cfc282efe9d4a354153e99d86a16af08 upstream.
    
    Update the ARMv8 Crypto Extensions and the plain NEON AES implementations
    in CBC and CTR modes to return the next IV back to the skcipher API client.
    This is necessary for chaining to work correctly.
    
    Note that for CTR, this is only done if the request is a round multiple of
    the block size, since otherwise, chaining is impossible anyway.
    
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    crypto: api - Clear CRYPTO_ALG_DEAD bit before registering an alg
    
    commit d6040764adcb5cb6de1489422411d701c158bb69 upstream.
    
    Make sure CRYPTO_ALG_DEAD bit is cleared before proceeding with
    the algorithm registration. This fixes qat-dh registration when
    driver is restarted
    
    Signed-off-by: Salvatore Benedetto <salvatore.benedetto@intel.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit cac7b00f39e8b3afbe44dbc7d528e9d5061ff08b
Author: John Brooks <john@fastquake.com>
Date:   Wed Jan 18 21:50:39 2017 +0000

    iio: dht11: Use usleep_range instead of msleep for start signal
    
    commit 5c113b5e0082e90d2e1c7b12e96a7b8cf0623e27 upstream.
    
    The DHT22 (AM2302) datasheet specifies that the LOW start pulse should not
    exceed 20ms. However, observations with an oscilloscope of an RPi Model 2B
    (rev 1.1) communicating with a DHT22 sensor showed that the driver was
    consistently sending start pulses longer than 20ms:
    
    Kernel 4.7.10-v7+ (n=132):
        Minimum pulse length: 20.20ms
        Maximum:              29.84ms
        Mean:                 24.96ms
        StDev:                2.82ms
        Sensor response rate: 100%
        Read success rate:    76%
    
    On kernel 4.8, the start pulse was so long that the sensor would not even
    respond 97% of the time:
    
    Kernel 4.8.16-v7+ (n=100):
        Minimum pulse length: 30.4ms
        Maximum:              74.4ms
        Mean:                 39.3ms
        StDev:                10.2ms
        Sensor response rate: 3%
        Read success rate:    3%
    
    The driver would return ETIMEDOUT and write log messages like this:
    
    [   51.430987] dht11 dht11@0: Only 1 signal edges detected
    [   66.311019] dht11 dht11@0: Only 0 signal edges detected
    
    Replacing msleep(18) with usleep_range(18000, 20000) made the pulse length
    sane again and restored responsiveness:
    
    Kernel 4.8.16-v7+ with usleep_range (n=123):
        Minimum pulse length: 18.16ms
        Maximum:              20.20ms
        Mean:                 19.85ms
        StDev:                0.51ms
        Sensor response rate: 100%
        Read success rate:    84%
    
    Signed-off-by: John Brooks <john@fastquake.com>
    Reviewed-by: Harald Geyer <harald@ccbib.org>
    Signed-off-by: Jonathan Cameron <jic23@kernel.org>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 15a1b0cba0a780202e70840e1e827ac5ed3ce2f6
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Thu Jan 19 18:39:40 2017 +0200

    platform/x86: intel_mid_powerbtn: Set IRQ_ONESHOT
    
    commit 5a00b6c2438460b870a451f14593fc40d3c7edf6 upstream.
    
    The commit 1c6c69525b40 ("genirq: Reject bogus threaded irq requests")
    starts refusing misconfigured interrupt handlers. This makes
    intel_mid_powerbtn not working anymore.
    
    Add a mandatory flag to a threaded IRQ request in the driver.
    
    Fixes: 1c6c69525b40 ("genirq: Reject bogus threaded irq requests")
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a583f481df326ae68b14ae7f3f3eada14b9f9498
Author: Anton Blanchard <anton@samba.org>
Date:   Thu Jan 19 14:19:10 2017 +1100

    powerpc: Ignore reserved field in DCSR and PVR reads and writes
    
    commit 178f358208ceb8b38e5cff3f815e0db4a6a70a07 upstream.
    
    IBM bit 31 (for the rest of us - bit 0) is a reserved field in the
    instruction definition of mtspr and mfspr. Hardware is encouraged to
    (and does) ignore it.
    
    As a result, if userspace executes an mtspr DSCR with the reserved bit
    set, we get a DSCR facility unavailable exception. The kernel fails to
    match against the expected value/mask, and we silently return to
    userspace to try and re-execute the same mtspr DSCR instruction. We
    loop forever until the process is killed.
    
    We should do something here, and it seems mirroring what hardware does
    is the better option vs killing the process. While here, relax the
    matching of mfspr PVR too.
    
    Signed-off-by: Anton Blanchard <anton@samba.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit bbe824c5be53c07734b4a21c25863f2848a35721
Author: Dave Martin <Dave.Martin@arm.com>
Date:   Thu Jan 5 16:50:57 2017 +0000

    powerpc/ptrace: Preserve previous fprs/vsrs on short regset write
    
    commit 99dfe80a2a246c600440a815741fd2e74a8b4977 upstream.
    
    Ensure that if userspace supplies insufficient data to PTRACE_SETREGSET
    to fill all the registers, the thread's old registers are preserved.
    
    Fixes: c6e6771b87d4 ("powerpc: Introduce VSX thread_struct and CONFIG_VSX")
    Signed-off-by: Dave Martin <Dave.Martin@arm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

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

commit c72a18bc6c95a5d72987795575d41bef21a000bb
Author: Josef Bacik <jbacik@fb.com>
Date:   Thu Jan 19 16:08:49 2017 -0500

    nbd: only set MSG_MORE when we have more to send
    
    commit d61b7f972dab2a7d187c38254845546dfc8eed85 upstream.
    
    A user noticed that write performance was horrible over loopback and we
    traced it to an inversion of when we need to set MSG_MORE.  It should be
    set when we have more bvec's to send, not when we are on the last bvec.
    This patch made the test go from 20 iops to 78k iops.
    
    Signed-off-by: Josef Bacik <jbacik@fb.com>
    Fixes: 429a787be679 ("nbd: fix use-after-free of rq/bio in the xmit path")
    Signed-off-by: Jens Axboe <axboe@fb.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit cd38b7d5ce448b1df95ace446a52e4fd192bcc34
Author: Jens Axboe <axboe@fb.com>
Date:   Thu Nov 17 12:30:37 2016 -0700

    nbd: fix use-after-free of rq/bio in the xmit path
    
    commit 429a787be6793554ee02aacc7e1f11ebcecc4453 upstream.
    
    For writes, we can get a completion in while we're still iterating
    the request and bio chain. If that happens, we're reading freed
    memory and we can crash.
    
    Break out after the last segment and avoid having the iterator
    read freed memory.
    
    Reviewed-by: Josef Bacik <jbacik@fb.com>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 91bb15efc7496e05ff42aa9162980ba46ae03655
Author: Alexey Kodanev <alexey.kodanev@oracle.com>
Date:   Thu Jan 19 16:36:39 2017 +0300

    tcp: initialize max window for a new fastopen socket
    
    commit 0dbd7ff3ac5017a46033a9d0a87a8267d69119d9 upstream.
    
    Found that if we run LTP netstress test with large MSS (65K),
    the first attempt from server to send data comparable to this
    MSS on fastopen connection will be delayed by the probe timer.
    
    Here is an example:
    
         < S  seq 0:0 win 43690 options [mss 65495 wscale 7 tfo cookie] length 32
         > S. seq 0:0 ack 1 win 43690 options [mss 65495 wscale 7] length 0
         < .  ack 1 win 342 length 0
    
    Inside tcp_sendmsg(), tcp_send_mss() returns max MSS in 'mss_now',
    as well as in 'size_goal'. This results the segment not queued for
    transmition until all the data copied from user buffer. Then, inside
    __tcp_push_pending_frames(), it breaks on send window test and
    continues with the check probe timer.
    
    Fragmentation occurs in tcp_write_wakeup()...
    
    +0.2 > P. seq 1:43777 ack 1 win 342 length 43776
         < .  ack 43777, win 1365 length 0
         > P. seq 43777:65001 ack 1 win 342 options [...] length 21224
         ...
    
    This also contradicts with the fact that we should bound to the half
    of the window if it is large.
    
    Fix this flaw by correctly initializing max_window. Before that, it
    could have large values that affect further calculations of 'size_goal'.
    
    Fixes: 168a8f58059a ("tcp: TCP Fast Open Server - main code path")
    Signed-off-by: Alexey Kodanev <alexey.kodanev@oracle.com>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 38299d131092a58eee07236fdbd5af586270de3b
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Wed Jan 18 17:23:41 2017 +0000

    arm64: avoid returning from bad_mode
    
    commit 7d9e8f71b989230bc613d121ca38507d34ada849 upstream.
    
    Generally, taking an unexpected exception should be a fatal event, and
    bad_mode is intended to cater for this. However, it should be possible
    to contain unexpected synchronous exceptions from EL0 without bringing
    the kernel down, by sending a SIGILL to the task.
    
    We tried to apply this approach in commit 9955ac47f4ba1c95 ("arm64:
    don't kill the kernel on a bad esr from el0"), by sending a signal for
    any bad_mode call resulting from an EL0 exception.
    
    However, this also applies to other unexpected exceptions, such as
    SError and FIQ. The entry paths for these exceptions branch to bad_mode
    without configuring the link register, and have no kernel_exit. Thus, if
    we take one of these exceptions from EL0, bad_mode will eventually
    return to the original user link register value.
    
    This patch fixes this by introducing a new bad_el0_sync handler to cater
    for the recoverable case, and restoring bad_mode to its original state,
    whereby it calls panic() and never returns. The recoverable case
    branches to bad_el0_sync with a bl, and returns to userspace via the
    usual ret_to_user mechanism.
    
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Fixes: 9955ac47f4ba1c95 ("arm64: don't kill the kernel on a bad esr from el0")
    Reported-by: Mark Salter <msalter@redhat.com>
    Cc: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    [bwh: Backported to 3.16:
     - Leave type out of the log message as we don't have esr_get_class_string()
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    USB: serial: qcserial: add Dell DW5570 QDL
    
    commit 24d615a694d649aa2e167c3f97f62bdad07e3f84 upstream.
    
    The Dell DW5570 is a re-branded Sierra Wireless MC8805 which will by
    default boot with vid 0x413c and pid 0x81a3. When triggered QDL download
    mode, the device switches to pid 0x81a6 and provides the standard TTY
    used for firmware upgrade.
    
    Signed-off-by: Aleksander Morgado <aleksander@aleksander.es>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 50349a486cad32c5146f4a1288aaa6a200e72ae2
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Jan 18 12:12:17 2017 -0800

    net: fix harmonize_features() vs NETIF_F_HIGHDMA
    
    commit 7be2c82cfd5d28d7adb66821a992604eb6dd112e upstream.
    
    Ashizuka reported a highmem oddity and sent a patch for freescale
    fec driver.
    
    But the problem root cause is that core networking stack
    must ensure no skb with highmem fragment is ever sent through
    a device that does not assert NETIF_F_HIGHDMA in its features.
    
    We need to call illegal_highdma() from harmonize_features()
    regardless of CSUM checks.
    
    Fixes: ec5f06156423 ("net: Kill link between CSUM and SG features.")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Pravin Shelar <pshelar@ovn.org>
    Reported-by: "Ashizuka, Yuusuke" <ashiduka@jp.fujitsu.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    arm64/ptrace: Reject attempts to set incomplete hardware breakpoint fields
    
    commit ad9e202aa1ce571b1d7fed969d06f66067f8a086 upstream.
    
    We cannot preserve partial fields for hardware breakpoints, because
    the values written by userspace to the hardware breakpoint
    registers can't subsequently be recovered intact from the hardware.
    
    So, just reject attempts to write incomplete fields with -EINVAL.
    
    Fixes: 478fcb2cdb23 ("arm64: Debugging support")
    Signed-off-by: Dave Martin <Dave.Martin@arm.com>
    Acked-by: Will Deacon <Will.Deacon@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    arm64/ptrace: Avoid uninitialised struct padding in fpr_set()
    
    commit aeb1f39d814b2e21e5e5706a48834bfd553d0059 upstream.
    
    This patch adds an explicit __reserved[] field to user_fpsimd_state
    to replace what was previously unnamed padding.
    
    This ensures that data in this region are propagated across
    assignment rather than being left possibly uninitialised at the
    destination.
    
    Fixes: 60ffc30d5652 ("arm64: Exception handling")
    Signed-off-by: Dave Martin <Dave.Martin@arm.com>
    Acked-by: Will Deacon <Will.Deacon@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    arm64/ptrace: Preserve previous registers for short regset write
    
    commit 9a17b876b573441bfb3387ad55d98bf7184daf9d upstream.
    
    Ensure that if userspace supplies insufficient data to
    PTRACE_SETREGSET to fill all the registers, the thread's old
    registers are preserved.
    
    Fixes: 478fcb2cdb23 ("arm64: Debugging support")
    Signed-off-by: Dave Martin <Dave.Martin@arm.com>
    Acked-by: Will Deacon <Will.Deacon@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    ceph: fix bad endianness handling in parse_reply_info_extra
    
    commit 6df8c9d80a27cb587f61b4f06b57e248d8bc3f86 upstream.
    
    sparse says:
    
        fs/ceph/mds_client.c:291:23: warning: restricted __le32 degrades to integer
        fs/ceph/mds_client.c:293:28: warning: restricted __le32 degrades to integer
        fs/ceph/mds_client.c:294:28: warning: restricted __le32 degrades to integer
        fs/ceph/mds_client.c:296:28: warning: restricted __le32 degrades to integer
    
    The op value is __le32, so we need to convert it before comparing it.
    
    Signed-off-by: Jeff Layton <jlayton@redhat.com>
    Reviewed-by: Sage Weil <sage@redhat.com>
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    can: ti_hecc: add missing prepare and unprepare of the clock
    
    commit befa60113ce7ea270cb51eada28443ca2756f480 upstream.
    
    In order to make the driver work with the common clock framework, this
    patch converts the clk_enable()/clk_disable() to
    clk_prepare_enable()/clk_disable_unprepare().
    
    Also add error checking for clk_prepare_enable().
    
    Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

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

commit 9a7ed2f246d6665b729b5b799adb3dafe40dd219
Author: Madhavan Srinivasan <maddy@linux.vnet.ibm.com>
Date:   Mon Dec 19 17:46:53 2016 +0530

    selftest/powerpc: Wrong PMC initialized in pmc56_overflow test
    
    commit df21d2fa733035e4d414379960f94b2516b41296 upstream.
    
    Test uses PMC2 to count the event. But PMC1 is being initialized.
    Patch to fix it.
    
    Fixes: 3752e453f6ba ('selftests/powerpc: Add tests of PMU EBBs')
    Signed-off-by: Madhavan Srinivasan <maddy@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

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

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

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

commit abab3f49890dceea76a99ae064cf74ef3d2bfec0
Author: Joonyoung Shim <jy0922.shim@samsung.com>
Date:   Tue Jan 17 13:54:36 2017 +0900

    clocksource/exynos_mct: Clear interrupt when cpu is shut down
    
    commit bc7c36eedb0c7004aa06c2afc3c5385adada8fa3 upstream.
    
    When a CPU goes offline a potentially pending timer interrupt is not
    cleared. When the CPU comes online again then the pending interrupt is
    delivered before the per cpu clockevent device is initialized. As a
    consequence the tick interrupt handler dereferences a NULL pointer.
    
    [   51.251378] Unable to handle kernel NULL pointer dereference at virtual address 00000040
    [   51.289348] task: ee942d00 task.stack: ee960000
    [   51.293861] PC is at tick_periodic+0x38/0xb0
    [   51.298102] LR is at tick_handle_periodic+0x1c/0x90
    
    Clear the pending interrupt in the cpu dying path.
    
    Fixes: 56a94f13919c ("clocksource: exynos_mct: Avoid blocking calls in the cpu hotplug notifier")
    Reported-by: Seung-Woo Kim <sw0312.kim@samsung.com>
    Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
    Cc: linux-samsung-soc@vger.kernel.org
    Cc: cw00.choi@samsung.com
    Cc: daniel.lezcano@linaro.org
    Cc: javier@osg.samsung.com
    Cc: kgene@kernel.org
    Cc: krzk@kernel.org
    Cc: linux-arm-kernel@lists.infradead.org
    Link: http://lkml.kernel.org/r/1484628876-22065-1-git-send-email-jy0922.shim@samsung.com
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    [bwh: Backported to 3.16: add definition of the 'mevt' variable, added earlier
     upstream]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 37aa32b1336a583c224a966a05cce778981b4381
Author: Jack Morgenstein <jackm@dev.mellanox.co.il>
Date:   Mon Jan 16 18:31:39 2017 +0200

    net/mlx4_core: Eliminate warning messages for SRQ_LIMIT under SRIOV
    
    commit 9577b174cd0323d287c994ef0891db71666d0765 upstream.
    
    When running SRIOV, warnings for SRQ LIMIT events flood the Hypervisor's
    message log when (correct, normally operating) apps use SRQ LIMIT events
    as a trigger to post WQEs to SRQs.
    
    Add more information to the existing debug printout for SRQ_LIMIT, and
    output the warning messages only for the SRQ CATAS ERROR event.
    
    Fixes: acba2420f9d2 ("mlx4_core: Add wrapper functions and comm channel and slave event support to EQs")
    Fixes: e0debf9cb50d ("mlx4_core: Reduce warning message for SRQ_LIMIT event to debug level")
    Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
    Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d35f09634a85c84aaf3a04871c53ec3c37de333f
Author: Jack Morgenstein <jackm@dev.mellanox.co.il>
Date:   Mon Jan 16 18:31:38 2017 +0200

    net/mlx4_core: Fix when to save some qp context flags for dynamic VST to VGT transitions
    
    commit 7c3945bc2073554bb2ecf983e073dee686679c53 upstream.
    
    Save the qp context flags byte containing the flag disabling vlan stripping
    in the RESET to INIT qp transition, rather than in the INIT to RTR
    transition. Per the firmware spec, the flags in this byte are active
    in the RESET to INIT transition.
    
    As a result of saving the flags in the incorrect qp transition, when
    switching dynamically from VGT to VST and back to VGT, the vlan
    remained stripped (as is required for VST) and did not return to
    not-stripped (as is required for VGT).
    
    Fixes: f0f829bf42cd ("net/mlx4_core: Add immediate activate for VGT->VST->VGT")
    Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
    Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 68bb062ff8af1f03d8c1b066af73a3f9f36fff74
Author: Jack Morgenstein <jackm@dev.mellanox.co.il>
Date:   Mon Jan 16 18:31:37 2017 +0200

    net/mlx4_core: Fix racy CQ (Completion Queue) free
    
    commit 291c566a28910614ce42d0ffe82196eddd6346f4 upstream.
    
    In function mlx4_cq_completion() and mlx4_cq_event(), the
    radix_tree_lookup requires a rcu_read_lock.
    This is mandatory: if another core frees the CQ, it could
    run the radix_tree_node_rcu_free() call_rcu() callback while
    its being used by the radix tree lookup function.
    
    Additionally, in function mlx4_cq_event(), since we are adding
    the rcu lock around the radix-tree lookup, we no longer need to take
    the spinlock. Also, the synchronize_irq() call for the async event
    eliminates the need for incrementing the cq reference count in
    mlx4_cq_event().
    
    Other changes:
    1. In function mlx4_cq_free(), replace spin_lock_irq with spin_lock:
       we no longer take this spinlock in the interrupt context.
       The spinlock here, therefore, simply protects against different
       threads simultaneously invoking mlx4_cq_free() for different cq's.
    
    2. In function mlx4_cq_free(), we move the radix tree delete to before
       the synchronize_irq() calls. This guarantees that we will not
       access this cq during any subsequent interrupts, and therefore can
       safely free the CQ after the synchronize_irq calls. The rcu_read_lock
       in the interrupt handlers only needs to protect against corrupting the
       radix tree; the interrupt handlers may access the cq outside the
       rcu_read_lock due to the synchronize_irq calls which protect against
       premature freeing of the cq.
    
    3. In function mlx4_cq_event(), we change the mlx_warn message to mlx4_dbg.
    
    4. We leave the cq reference count mechanism in place, because it is
       still needed for the cq completion tasklet mechanism.
    
    Fixes: 6d90aa5cf17b ("net/mlx4_core: Make sure there are no pending async events when freeing CQ")
    Fixes: 225c7b1feef1 ("IB/mlx4: Add a driver Mellanox ConnectX InfiniBand adapters")
    Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
    Signed-off-by: Matan Barak <matanb@mellanox.com>
    Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit af7cec16dcc6b2bea7d03184a6613fc0196b7254
Author: Ivan Vecera <cera@cera.cz>
Date:   Fri Jan 13 22:38:27 2017 +0100

    be2net: fix status check in be_cmd_pmac_add()
    
    commit fe68d8bfe59c561664aa87d827aa4b320eb08895 upstream.
    
    Return value from be_mcc_notify_wait() contains a base completion status
    together with an additional status. The base_status() macro need to be
    used to access base status.
    
    Fixes: e3a7ae2 be2net: Changing MAC Address of a VF was broken
    Cc: Sathya Perla <sathya.perla@broadcom.com>
    Cc: Ajit Khaparde <ajit.khaparde@broadcom.com>
    Cc: Sriharsha Basavapatna <sriharsha.basavapatna@broadcom.com>
    Cc: Somnath Kotur <somnath.kotur@broadcom.com>
    Signed-off-by: Ivan Vecera <cera@cera.cz>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e7056ffcd1d737fbda25558d5b935c7c03de2daf
Author: Liping Zhang <zlpnobody@gmail.com>
Date:   Sat Jan 7 20:49:18 2017 +0800

    netfilter: rpfilter: fix incorrect loopback packet judgment
    
    commit 6443ebc3fdd6f3c766d9442c18be274b3d736050 upstream.
    
    Currently, we check the existing rtable in PREROUTING hook, if RTCF_LOCAL
    is set, we assume that the packet is loopback.
    
    But this assumption is incorrect, for example, a packet encapsulated
    in ipsec transport mode was received and routed to local, after
    decapsulation, it would be delivered to local again, and the rtable
    was not dropped, so RTCF_LOCAL check would trigger. But actually, the
    packet was not loopback.
    
    So for these normal loopback packets, we can check whether the in device
    is IFF_LOOPBACK or not. For these locally generated broadcast/multicast,
    we can check whether the skb->pkt_type is PACKET_LOOPBACK or not.
    
    Finally, there's a subtle difference between nft fib expr and xtables
    rpfilter extension, user can add the following nft rule to do strict
    rpfilter check:
      # nft add rule x y meta iif eth0 fib saddr . iif oif != eth0 drop
    
    So when the packet is loopback, it's better to store the in device
    instead of the LOOPBACK_IFINDEX, otherwise, after adding the above
    nft rule, locally generated broad/multicast packets will be dropped
    incorrectly.
    
    Fixes: f83a7ea2075c ("netfilter: xt_rpfilter: skip locally generated broadcast/multicast, too")
    Fixes: f6d0cbcf09c5 ("netfilter: nf_tables: add fib expression")
    Signed-off-by: Liping Zhang <zlpnobody@gmail.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    [bwh: Backported to 3.16:
     - Drop changs to nftables
     - s/xt_in\(par\)/par->in/]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1881e9b78344cfd56ae55e6fadb2c5db95c91a67
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Thu Jan 12 12:09:09 2017 -0800

    net: systemport: Decouple flow control from __bcm_sysport_tx_reclaim
    
    commit 148d3d021cf9724fcf189ce4e525a094bbf5ce89 upstream.
    
    The __bcm_sysport_tx_reclaim() function is used to reclaim transmit
    resources in different places within the driver. Most of them should
    not affect the state of the transit flow control.
    
    Introduce bcm_sysport_tx_clean() which cleans the ring, but does not
    re-enable flow control towards the networking stack, and make
    bcm_sysport_tx_reclaim() do the actual transmit queue flow control.
    
    Fixes: 80105befdb4b ("net: systemport: add Broadcom SYSTEMPORT Ethernet MAC driver")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

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

commit 500d7c7cb482194f51d5979b6602b356e3395e39
Author: Vlad Tsyrklevich <vlad@tsyrklevich.net>
Date:   Mon Jan 9 22:53:36 2017 +0700

    i2c: fix kernel memory disclosure in dev interface
    
    commit 30f939feaeee23e21391cfc7b484f012eb189c3c upstream.
    
    i2c_smbus_xfer() does not always fill an entire block, allowing
    kernel stack memory disclosure through the temp variable. Clear
    it before it's read to.
    
    Signed-off-by: Vlad Tsyrklevich <vlad@tsyrklevich.net>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

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

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

    jump_labels: API for flushing deferred jump label updates
    
    commit b6416e61012429e0277bd15a229222fd17afc1c1 upstream.
    
    Modules that use static_key_deferred need a way to synchronize with
    any delayed work that is still pending when the module is unloaded.
    Introduce static_key_deferred_flush() which flushes any pending
    jump label updates.
    
    Signed-off-by: David Matlack <dmatlack@google.com>
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f020578fbea567ad39e03eae2ccc3f7a0a477608
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Wed Nov 16 16:20:37 2016 +0100

    ARM: ux500: fix prcmu_is_cpu_in_wfi() calculation
    
    commit f0e8faa7a5e894b0fc99d24be1b18685a92ea466 upstream.
    
    This function clearly never worked and always returns true,
    as pointed out by gcc-7:
    
    arch/arm/mach-ux500/pm.c: In function 'prcmu_is_cpu_in_wfi':
    arch/arm/mach-ux500/pm.c:137:212: error: ?:
    using integer constants in boolean context, the expression
    will always evaluate to 'true' [-Werror=int-in-bool-context]
    
    With the added braces, the condition actually makes sense.
    
    Fixes: 34fe6f107eab ("mfd : Check if the other db8500 core is in WFI")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

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

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

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

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

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

commit 3389247229b0f67846b273f802eff0bd1260f201
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Jan 10 19:52:43 2017 -0800

    gro: use min_t() in skb_gro_reset_offset()
    
    commit 7cfd5fd5a9813f1430290d20c0fead9b4582a307 upstream.
    
    On 32bit arches, (skb->end - skb->data) is not 'unsigned int',
    so we shall use min_t() instead of min() to avoid a compiler error.
    
    Fixes: 1272ce87fa01 ("gro: Enter slow-path if there is no tailroom")
    Reported-by: kernel test robot <fengguang.wu@intel.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

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

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

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

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

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

commit 8a0c5e7c490ccb1e9d5dd38b63fe7005e222e2da
Author: Richard Genoud <richard.genoud@gmail.com>
Date:   Tue Dec 6 13:05:33 2016 +0100

    tty/serial: atmel: RS485 half duplex w/DMA: enable RX after TX is done
    
    commit b389f173aaa1204d6dc1f299082a162eb0491545 upstream.
    
    When using RS485 in half duplex, RX should be enabled when TX is
    finished, and stopped when TX starts.
    
    Before commit 0058f0871efe7b01c6 ("tty/serial: atmel: fix RS485 half
    duplex with DMA"), RX was not disabled in atmel_start_tx() if the DMA
    was used. So, collisions could happened.
    
    But disabling RX in atmel_start_tx() uncovered another bug:
    RX was enabled again in the wrong place (in atmel_tx_dma) instead of
    being enabled when TX is finished (in atmel_complete_tx_dma), so the
    transmission simply stopped.
    
    This bug was not triggered before commit 0058f0871efe7b01c6
    ("tty/serial: atmel: fix RS485 half duplex with DMA") because RX was
    never disabled before.
    
    Moving atmel_start_rx() in atmel_complete_tx_dma() corrects the problem.
    
    Reported-by: Gil Weber <webergil@gmail.com>
    Fixes: 0058f0871efe7b01c6
    Tested-by: Gil Weber <webergil@gmail.com>
    Signed-off-by: Richard Genoud <richard.genoud@gmail.com>
    Acked-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16:
     - s/port->rs485/atmel_port->rs485/
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    mm/hugetlb.c: fix reservation race when freeing surplus pages
    
    commit e5bbc8a6c992901058bc09e2ce01d16c111ff047 upstream.
    
    return_unused_surplus_pages() decrements the global reservation count,
    and frees any unused surplus pages that were backing the reservation.
    
    Commit 7848a4bf51b3 ("mm/hugetlb.c: add cond_resched_lock() in
    return_unused_surplus_pages()") added a call to cond_resched_lock in the
    loop freeing the pages.
    
    As a result, the hugetlb_lock could be dropped, and someone else could
    use the pages that will be freed in subsequent iterations of the loop.
    This could result in inconsistent global hugetlb page state, application
    api failures (such as mmap) failures or application crashes.
    
    When dropping the lock in return_unused_surplus_pages, make sure that
    the global reservation count (resv_huge_pages) remains sufficiently
    large to prevent someone else from claiming pages about to be freed.
    
    Analyzed by Paul Cassella.
    
    Fixes: 7848a4bf51b3 ("mm/hugetlb.c: add cond_resched_lock() in return_unused_surplus_pages()")
    Link: http://lkml.kernel.org/r/1483991767-6879-1-git-send-email-mike.kravetz@oracle.com
    Signed-off-by: Mike Kravetz <mike.kravetz@oracle.com>
    Reported-by: Paul Cassella <cassella@cray.com>
    Suggested-by: Michal Hocko <mhocko@kernel.org>
    Cc: Masayoshi Mizuma <m.mizuma@jp.fujitsu.com>
    Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Cc: Aneesh Kumar <aneesh.kumar@linux.vnet.ibm.com>
    Cc: Hillf Danton <hillf.zj@alibaba-inc.com>
    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 79255dc36e55804483882699d0df16f1e55cc619
Author: Eric Ren <zren@suse.com>
Date:   Tue Jan 10 16:57:33 2017 -0800

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

commit 62015343b784fe4014ddc12096fd60c4305f5162
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Tue Jan 10 12:24:15 2017 -0800

    gro: Disable frag0 optimization on IPv6 ext headers
    
    commit 57ea52a865144aedbcd619ee0081155e658b6f7d upstream.
    
    The GRO fast path caches the frag0 address.  This address becomes
    invalid if frag0 is modified by pskb_may_pull or its variants.
    So whenever that happens we must disable the frag0 optimization.
    
    This is usually done through the combination of gro_header_hard
    and gro_header_slow, however, the IPv6 extension header path did
    the pulling directly and would continue to use the GRO fast path
    incorrectly.
    
    This patch fixes it by disabling the fast path when we enter the
    IPv6 extension header path.
    
    Fixes: 78a478d0efd9 ("gro: Inline skb_gro_header and cache frag0 virtual address")
    Reported-by: Slava Shwartsman <slavash@mellanox.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 36e228354857379beff973352fc174336fec14bc
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Tue Jan 10 12:24:01 2017 -0800

    gro: Enter slow-path if there is no tailroom
    
    commit 1272ce87fa017ca4cf32920764d879656b7a005a upstream.
    
    The GRO path has a fast-path where we avoid calling pskb_may_pull
    and pskb_expand by directly accessing frag0.  However, this should
    only be done if we have enough tailroom in the skb as otherwise
    we'll have to expand it later anyway.
    
    This patch adds the check by capping frag0_len with the skb tailroom.
    
    Fixes: cb18978cbf45 ("gro: Open-code final pskb_may_pull")
    Reported-by: Slava Shwartsman <slavash@mellanox.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

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

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

    USB: serial: ch341: fix baud rate and line-control handling
    
    commit 55fa15b5987db22b4f35d3f0798928c126be5f1c upstream.
    
    Revert to using direct register writes to set the divisor and
    line-control registers.
    
    A recent change switched to using the init vendor command to update
    these registers, something which also enabled support for CH341A
    devices. It turns out that simply setting bit 7 in the divisor register
    is sufficient to support CH341A and specifically prevent data from being
    buffered until a full endpoint-size packet (32 bytes) has been received.
    
    Using the init command also had the side-effect of temporarily
    deasserting the DTR/RTS signals on every termios change (including
    initialisation on open) something which for example could cause problems
    in setups where DTR is used to trigger a reset.
    
    Fixes: 4e46c410e050 ("USB: serial: ch341: reinitialize chip on
    reconfiguration")
    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 eb5dfb90b597b5bfbc5deae201cf2188a5d57daa
Author: Johan Hovold <johan@kernel.org>
Date:   Fri Jan 6 19:15:14 2017 +0100

    USB: serial: ch341: fix resume after reset
    
    commit ce5e292828117d1b71cbd3edf9e9137cf31acd30 upstream.
    
    Fix reset-resume handling which failed to resubmit the read and
    interrupt URBs, thereby leaving a port that was open before suspend in a
    broken state until closed and reopened.
    
    Fixes: 1ded7ea47b88 ("USB: ch341 serial: fix port number changed after
    resume")
    Fixes: 2bfd1c96a9fb ("USB: serial: ch341: remove reset_resume callback")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    [bwh: Backported to 3.16: open-code tty_port_initialized()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    USB: serial: ch341: fix open error handling
    
    commit f2950b78547ffb8475297ada6b92bc2d774d5461 upstream.
    
    Make sure to stop the interrupt URB before returning on errors during
    open.
    
    Fixes: 664d5df92e88 ("USB: usb-serial ch341: support for DTR/RTS/CTS")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    USB: serial: ch341: fix modem-control and B0 handling
    
    commit 030ee7ae52a46a2be52ccc8242c4a330aba8d38e upstream.
    
    The modem-control signals are managed by the tty-layer during open and
    should not be asserted prematurely when set_termios is called from
    driver open.
    
    Also make sure that the signals are asserted only when changing speed
    from B0.
    
    Fixes: 664d5df92e88 ("USB: usb-serial ch341: support for DTR/RTS/CTS")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    USB: serial: ch341: fix open and resume after B0
    
    commit a20047f36e2f6a1eea4f1fd261aaa55882369868 upstream.
    
    The private baud_rate variable is used to configure the port at open and
    reset-resume and must never be set to (and left at) zero or reset-resume
    and all further open attempts will fail.
    
    Fixes: aa91def41a7b ("USB: ch341: set tty baud speed according to tty
    struct")
    Fixes: 664d5df92e88 ("USB: usb-serial ch341: support for DTR/RTS/CTS")
    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 d650e33312961734095eaa0dbe376e8a314ab657
Author: Johan Hovold <johan@kernel.org>
Date:   Fri Jan 6 19:15:10 2017 +0100

    USB: serial: ch341: fix initial modem-control state
    
    commit 4e2da44691cffbfffb1535f478d19bc2dca3e62b upstream.
    
    DTR and RTS will be asserted by the tty-layer when the port is opened
    and deasserted on close (if HUPCL is set). Make sure the initial state
    is not-asserted before the port is first opened as well.
    
    Fixes: 664d5df92e88 ("USB: usb-serial ch341: support for DTR/RTS/CTS")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ed4c87e0889f5c482a33f42c2c8ca6a621949b41
Author: Aidan Thornton <makosoft@gmail.com>
Date:   Sat Oct 22 22:02:24 2016 +0100

    USB: serial: ch341: reinitialize chip on reconfiguration
    
    commit 4e46c410e050bcac36deadbd8e20449d078204e8 upstream.
    
    Changing the LCR register after initialization does not seem to be reliable
    on all chips (particularly not on CH341A). Restructure initialization and
    configuration to always reinit the chip on configuration changes instead and
    pass the LCR register value directly to the initialization command.
    
    (Note that baud rates above 500kbaud are incorrect, but they're incorrect in
    the same way both before and after this patch at least on the CH340G. Fixing
    this isn't a priority as higher baud rates don't seem that reliable anyway.)
    
    Cleaned-up version of a patch by Grigori Goronzy
    
    Signed-off-by: Aidan Thornton <makosoft@gmail.com>
    Reviewed-by: Grigori Goronzy <greg@chown.ath.cx>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b245f8f44cd56905735a338b784af12f0342ec37
Author: Aidan Thornton <makosoft@gmail.com>
Date:   Sat Oct 22 22:02:23 2016 +0100

    USB: serial: ch341: add register and USB request definitions
    
    commit 6fde8d29b0424f292a4ec5dbce01458ad759a41f upstream.
    
    No functional changes, this just gives names to some registers and USB
    requests based on Grigori Goronzy's work and WinChipTech's Linux driver
    (which reassuringly agree), then uses them in place of magic numbers.
    This also renames the misnamed BREAK2 register (actually UART config)
    
    Signed-off-by: Aidan Thornton <makosoft@gmail.com>
    Reviewed-by: Grigori Goronzy <greg@chown.ath.cx>
    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 9697aa0467def9206f04565f6de63e457eac79cd
Author: Nicolas PLANEL <nicolas.planel@enovance.com>
Date:   Sun Mar 1 13:47:22 2015 -0500

    USB: ch341: set tty baud speed according to tty struct
    
    commit aa91def41a7bb1fd65492934ce6bea19202b6080 upstream.
    
    The ch341_set_baudrate() function initialize the device baud speed
    according to the value on priv->baud_rate. By default the ch341_open() set
    it to a hardcoded value (DEFAULT_BAUD_RATE 9600). Unfortunately, the
    tty_struct is not initialized with the same default value. (usually 56700)
    
    This means that the tty_struct and the device baud rate generator are not
    synchronized after opening the port.
    
    Fixup is done by calling ch341_set_termios() if tty exist.
    Remove unnecessary variable priv->baud_rate setup as it's already done by
    ch341_port_probe().
    Remove unnecessary call to ch341_set_{handshake,baudrate}() in
    ch341_open() as there already called in ch341_configure() and
    ch341_set_termios()
    
    Signed-off-by: Nicolas PLANEL <nicolas.planel@enovance.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b33a808888a67bfb9f2e2dffa88462171b0810c9
Author: Johan Hovold <johan@kernel.org>
Date:   Thu Feb 19 12:34:41 2015 +0700

    USB: ch341: remove redundant close from open error path
    
    commit 394a10331a9e43100a8ee293255cfc428c7355ac upstream.
    
    Remove redundant call to ch341_close from error path when submission of
    the interrupt urb fails in open.
    
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 01b833632075dd4bd84f35d9d24d621072404297
Author: Nicholas Mc Guire <hofrat@osadl.org>
Date:   Sat Jan 7 10:38:31 2017 +0100

    x86/boot: Add missing declaration of string functions
    
    commit fac69d0efad08fc15e4dbfc116830782acc0dc9a upstream.
    
    Add the missing declarations of basic string functions to string.h to allow
    a clean build.
    
    Fixes: 5be865661516 ("String-handling functions for the new x86 setup code.")
    Signed-off-by: Nicholas Mc Guire <hofrat@osadl.org>
    Link: http://lkml.kernel.org/r/1483781911-21399-1-git-send-email-hofrat@osadl.org
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    drm/radeon: drop verde dpm quirks
    
    commit 8a08403bcb39f5d0e733bcf59a8a74f16b538f6e upstream.
    
    fixes:
    https://bugs.freedesktop.org/show_bug.cgi?id=98897
    https://bugs.launchpad.net/bugs/1651981
    
    Acked-by: Edward O'Callaghan <funfunctor@folklore1984.net>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: Adrian Fiergolski <A.Fiergolski@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    ata: sata_mv:- Handle return value of devm_ioremap.
    
    commit 064c3db9c564cc5be514ac21fb4aa26cc33db746 upstream.
    
    Here, If devm_ioremap will fail. It will return NULL.
    Then hpriv->base = NULL - 0x20000; Kernel can run into
    a NULL-pointer dereference. This error check will avoid
    NULL pointer dereference.
    
    Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b5b05e57253ea18644333235ec4417792926b3a6
Author: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Date:   Thu Jan 5 00:29:32 2017 +0300

    sh_eth: R8A7740 supports packet shecksumming
    
    commit 0f1f9cbc04dbb3cc310f70a11cba0cf1f2109d9c upstream.
    
    The R8A7740 GEther controller supports the packet checksum offloading
    but the 'hw_crc' (bad name, I'll fix it) flag isn't set in the R8A7740
    data,  thus CSMR isn't cleared...
    
    Fixes: 73a0d907301e ("net: sh_eth: add support R8A7740")
    Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1028f5004a69c7956478dab1784c9415c330c45d
Author: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Date:   Wed Jan 4 22:18:24 2017 +0300

    sh_eth: fix EESIPR values for SH77{34|63}
    
    commit 978d3639fd13d987950e4ce85c8737ae92154b2c upstream.
    
    As the SH77{34|63} manuals are freely available,  I've checked the EESIPR
    values written against the manuals, and they appeared to set the reserved
    bits 11-15 (which should be 0 on write). Fix those EESIPR values.
    
    Fixes: 380af9e390ec ("net: sh_eth: CPU dependency code collect to "struct sh_eth_cpu_data"")
    Fixes: f5d12767c8fd ("sh_eth: get SH77{34|63} support out of #ifdef")
    Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    tile/ptrace: Preserve previous registers for short regset write
    
    commit fd7c99142d77dc4a851879a66715abf12a3193fb upstream.
    
    Ensure that if userspace supplies insufficient data to
    PTRACE_SETREGSET to fill all the registers, the thread's old
    registers are preserved.
    
    Signed-off-by: Dave Martin <Dave.Martin@arm.com>
    Signed-off-by: Chris Metcalf <cmetcalf@mellanox.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    HID: hid-cypress: validate length of report
    
    commit 1ebb71143758f45dc0fa76e2f48429e13b16d110 upstream.
    
    Make sure we have enough of a report structure to validate before
    looking at it.
    
    Reported-by: Benoit Camredon <benoit.camredon@airbus.com>
    Tested-by: Benoit Camredon <benoit.camredon@airbus.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    selftests: do not require bash to run netsocktests testcase
    
    commit 3659f98b5375d195f1870c3e508fe51e52206839 upstream.
    
    Nothing in this minimal script seems to require bash. We often run these
    tests on embedded devices where the only shell available is the busybox
    ash. Use sh instead.
    
    Signed-off-by: Rolf Eike Beer <eb@emlix.com>
    Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

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

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

    usb: storage: unusual_uas: Add JMicron JMS56x to unusual device
    
    commit 674aea07e38200ea6f31ff6d5f200f0cf6cdb325 upstream.
    
    This device gives the following error on detection.
    xhci_hcd 0000:00:11.0: ERROR Transfer event for disabled endpoint or
    incorrect stream ring
    
    The same error is not seen when it is added to unusual_device
    list with US_FL_NO_REPORT_OPCODES passed.
    
    Signed-off-by: George Cherian <george.cherian@cavium.com>
    Signed-off-by: Oliver Neukum <oneukun@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9e36d62f470086f5e3951e6ce4a7b41fd293352d
Author: Geert Uytterhoeven <geert@linux-m68k.org>
Date:   Wed Dec 14 15:37:30 2016 +0100

    usb: hub: Move hub_port_disable() to fix warning if PM is disabled
    
    commit 3bc02bce908c7250781376052248f5cd60a4e3d4 upstream.
    
    If CONFIG_PM=n:
    
        drivers/usb/core/hub.c:107: warning: ‘hub_usb3_port_prepare_disable’ declared inline after being called
        drivers/usb/core/hub.c:107: warning: previous declaration of ‘hub_usb3_port_prepare_disable’ was here
    
    To fix this, move hub_port_disable() after
    hub_usb3_port_prepare_disable(), and adjust forward declarations.
    
    Fixes: 37be66767e3cae4f ("usb: hub: Fix auto-remount of safely removed or ejected USB-3 devices")
    Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4a5bcf33f620805d2b27a15869fbd60a06a88700
Author: Tony Lindgren <tony@atomide.com>
Date:   Tue Jan 3 18:13:48 2017 -0600

    usb: musb: Fix trying to free already-free IRQ 4
    
    commit 8c300fe282fa254ea730c92cb0983e2642dc1fff upstream.
    
    When unloading omap2430, we can get the following splat:
    
    WARNING: CPU: 1 PID: 295 at kernel/irq/manage.c:1478 __free_irq+0xa8/0x2c8
    Trying to free already-free IRQ 4
    ...
    [<c01a8b78>] (free_irq) from [<bf0aea84>]
    (musbhs_dma_controller_destroy+0x28/0xb0 [musb_hdrc])
    [<bf0aea84>] (musbhs_dma_controller_destroy [musb_hdrc]) from
    [<bf09f88c>] (musb_remove+0xf0/0x12c [musb_hdrc])
    [<bf09f88c>] (musb_remove [musb_hdrc]) from [<c056a384>]
    (platform_drv_remove+0x24/0x3c)
    ...
    
    This is because the irq number in use is 260 nowadays, and the dma
    controller is using u8 instead of int.
    
    Fixes: 6995eb68aab7 ("USB: musb: enable low level DMA operation for Blackfin")
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    [b-liu@ti.com: added Fixes tag]
    Signed-off-by: Bin Liu <b-liu@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    KVM: MIPS: Flush KVM entry code from icache globally
    
    commit 32eb12a6c11034867401d56b012e3c15d5f8141e upstream.
    
    Flush the KVM entry code from the icache on all CPUs, not just the one
    that built the entry code.
    
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: "Radim Krčmář" <rkrcmar@redhat.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Cc: kvm@vger.kernel.org
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    [bwh: Backported to 3.16: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3dc5632810981fb9836f16c7af0a815e8e9fdafb
Author: Lukasz Odzioba <lukasz.odzioba@intel.com>
Date:   Wed Dec 28 14:55:40 2016 +0100

    x86/cpu: Fix bootup crashes by sanitizing the argument of the 'clearcpuid=' command-line option
    
    commit dd853fd216d1485ed3045ff772079cc8689a9a4a upstream.
    
    A negative number can be specified in the cmdline which will be used as
    setup_clear_cpu_cap() argument. With that we can clear/set some bit in
    memory predceeding boot_cpu_data/cpu_caps_cleared which may cause kernel
    to misbehave. This patch adds lower bound check to setup_disablecpuid().
    
    Boris Petkov reproduced a crash:
    
      [    1.234575] BUG: unable to handle kernel paging request at ffffffff858bd540
      [    1.236535] IP: memcpy_erms+0x6/0x10
    
    Signed-off-by: Lukasz Odzioba <lukasz.odzioba@intel.com>
    Acked-by: Borislav Petkov <bp@suse.de>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: andi.kleen@intel.com
    Cc: bp@alien8.de
    Cc: dave.hansen@linux.intel.com
    Cc: luto@kernel.org
    Cc: slaoub@gmail.com
    Fixes: ac72e7888a61 ("x86: add generic clearcpuid=... option")
    Link: http://lkml.kernel.org/r/1482933340-11857-1-git-send-email-lukasz.odzioba@intel.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1aa4a6901846b278ed2f9cc9fe5104c66d866901
Author: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Date:   Wed Jan 4 23:10:23 2017 +0300

    sh_eth: enable RX descriptor word 0 shift on SH7734
    
    commit 71eae1ca77fd6be218d8a952d97bba827e56516d upstream.
    
    The RX descriptor word 0 on SH7734 has the RFS[9:0] field in bits 16-25
    (bits  0-15 usually used for that are occupied by the packet checksum).
    Thus  we need to set the 'shift_rd0'  field in the SH7734 SoC data...
    
    Fixes: f0e81fecd4f8 ("net: sh_eth: Add support SH7734")
    Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    ALSA: hda - Apply asus-mode8 fixup to ASUS X71SL
    
    commit c7efff9284dfde95a11aaa811c9d8ec8167f0f6e upstream.
    
    Although the old quirk table showed ASUS X71SL with ALC663 codec being
    compatible with asus-mode3 fixup, the bugzilla reporter explained that
    asus-model8 fits better for the dual headphone controls.  So be it.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=191781
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3863f77475abcff9edac6b3b7c5b6eed9406dd87
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Tue Jan 3 16:34:49 2017 -0800

    net: systemport: Pad packet before inserting TSB
    
    commit 38e5a85562a6cd911fc26d951d576551a688574c upstream.
    
    Inserting the TSB means adding an extra 8 bytes in front the of packet
    that is going to be used as metadata information by the TDMA engine, but
    stripped off, so it does not really help with the packet padding.
    
    For some odd packet sizes that fall below the 60 bytes payload (e.g: ARP)
    we can end-up padding them after the TSB insertion, thus making them 64
    bytes, but with the TDMA stripping off the first 8 bytes, they could
    still be smaller than 64 bytes which is required to ingress the switch.
    
    Fix this by swapping the padding and TSB insertion, guaranteeing that
    the packets have the right sizes.
    
    Fixes: 80105befdb4b ("net: systemport: add Broadcom SYSTEMPORT Ethernet MAC driver")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit abf35ecb24ad917de55f75c715c0e5ed5e6a6069
Author: Alexander Usyskin <alexander.usyskin@intel.com>
Date:   Wed Dec 14 17:56:52 2016 +0200

    mei: move write cb to completion on credentials failures
    
    commit e09ee853c92011860a4bd2fbdf6126f60fc16bd3 upstream.
    
    The credentials handling was pushed to the write handlers
    but error handling wasn't done properly.
    Move write callbacks to completion queue to destroy them
    and to notify a blocked writer about the failure
    
    Fixes: 136698e535cd1 (mei: push credentials inside the irq write handler)
    Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
    Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit bb38d5776b88cc49b2b57356d6f16ca9e7853cc7
Author: Huang Rui <ray.huang@amd.com>
Date:   Mon Dec 12 07:28:26 2016 -0500

    iommu/amd: Fix the left value check of cmd buffer
    
    commit 432abf68a79332282329286d190e21fe3ac02a31 upstream.
    
    The generic command buffer entry is 128 bits (16 bytes), so the offset
    of tail and head pointer should be 16 bytes aligned and increased with
    0x10 per command.
    
    When cmd buf is full, head = (tail + 0x10) % CMD_BUFFER_SIZE.
    
    So when left space of cmd buf should be able to store only two
    command, we should be issued one COMPLETE_WAIT additionally to wait
    all older commands completed. Then the left space should be increased
    after IOMMU fetching from cmd buf.
    
    So left check value should be left <= 0x20 (two commands).
    
    Signed-off-by: Huang Rui <ray.huang@amd.com>
    Fixes: ac0ea6e92b222 ('x86/amd-iommu: Improve handling of full command buffer')
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    ALSA: hda - Fix up GPIO for ASUS ROG Ranger
    
    commit 85bcf96caba8b4a7c0805555638629ba3c67ea0c upstream.
    
    ASUS ROG Ranger VIII with ALC1150 codec requires the extra GPIO pin to
    up for the front panel.  Just use the existing fixup for setting up
    the GPIO pins.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=189411
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

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

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

    USB: serial: spcp8x5: fix NULL-deref at open
    
    commit cc0909248258f679c4bb4cd315565d40abaf6bc6 upstream.
    
    Fix NULL-pointer dereference in open() should the device lack the
    expected endpoints:
    
    Unable to handle kernel NULL pointer dereference at virtual address 00000030
    ...
    PC is at spcp8x5_open+0x30/0xd0 [spcp8x5]
    
    Fixes: 619a6f1d1423 ("USB: add usb-serial spcp8x5 driver")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    USB: serial: quatech2: fix sleep-while-atomic in close
    
    commit f09d1886a41e9063b43da493ef0e845ac8afd2fa upstream.
    
    The write URB was being killed using the synchronous interface while
    holding a spin lock in close().
    
    Simply drop the lock and busy-flag update, something which would have
    been taken care of by the completion handler if the URB was in flight.
    
    Fixes: f7a33e608d9a ("USB: serial: add quatech2 usb to serial driver")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

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

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

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

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

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

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

    USB: serial: mos7840: fix misleading interrupt-URB comment
    
    commit 472d7e55d559aa1cbf58c73b14fcfc4651b1a9f5 upstream.
    
    The interrupt URB is killed at final port close since commit
    0de9a7024e7a ("USB: overhaul of mos7840 driver").
    
    Fixes: 0de9a7024e7a ("USB: overhaul of mos7840 driver")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

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

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

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

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

    USB: serial: mos7720: fix parport use-after-free on probe errors
    
    commit 75dd211e773afcbc264677b0749d1cf7d937ab2d upstream.
    
    Do not submit the interrupt URB until after the parport has been
    successfully registered to avoid another use-after-free in the
    completion handler when accessing the freed parport private data in case
    of a racing completion.
    
    Fixes: b69578df7e98 ("USB: usbserial: mos7720: add support for parallel
    port on moschip 7715")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

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

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

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

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

    USB: serial: kobil_sct: fix NULL-deref in write
    
    commit 21ce57840243c7b70fbc1ebd3dceeb70bb6e9e09 upstream.
    
    Fix NULL-pointer dereference in write() should the device lack the
    expected interrupt-out endpoint:
    
    Unable to handle kernel NULL pointer dereference at virtual address 00000054
    ...
    PC is at kobil_write+0x144/0x2a0 [kobil_sct]
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    USB: serial: keyspan_pda: verify endpoints at probe
    
    commit 5d9b0f859babe96175cd33d7162a9463a875ffde upstream.
    
    Check for the expected endpoints in attach() and fail loudly if not
    present.
    
    Note that failing to do this appears to be benign since da280e348866
    ("USB: keyspan_pda: clean up write-urb busy handling") which prevents a
    NULL-pointer dereference in write() by never marking a non-existent
    write-urb as free.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

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

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

    USB: serial: io_ti: fix another NULL-deref at open
    
    commit 4f9785cc99feeb3673993b471f646b4dbaec2cc1 upstream.
    
    In case a device is left in "boot-mode" we must not register any port
    devices in order to avoid a NULL-pointer dereference on open due to
    missing endpoints. This could be used by a malicious device to trigger
    an OOPS:
    
    Unable to handle kernel NULL pointer dereference at virtual address 00000030
    ...
    [<bf0caa84>] (edge_open [io_ti]) from [<bf0b0118>] (serial_port_activate+0x68/0x98 [usbserial])
    [<bf0b0118>] (serial_port_activate [usbserial]) from [<c0470ca4>] (tty_port_open+0x9c/0xe8)
    [<c0470ca4>] (tty_port_open) from [<bf0b0da0>] (serial_open+0x48/0x6c [usbserial])
    [<bf0b0da0>] (serial_open [usbserial]) from [<c0469178>] (tty_open+0xcc/0x5cc)
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    [bwh: Backported to 3.16:
     - No heartbeat_work to initialise earlier
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

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

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

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

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

    USB: serial: garmin_gps: fix memory leak on failed URB submit
    
    commit c4ac4496e835b78a45dfbf74f6173932217e4116 upstream.
    
    Make sure to free the URB transfer buffer in case submission fails (e.g.
    due to a disconnect).
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

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

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

    usb: xhci: apply XHCI_PME_STUCK_QUIRK to Intel Apollo Lake
    
    commit 6c97cfc1a097b1e0786c836e92b7a72b4d031e25 upstream.
    
    Intel Apollo Lake also requires XHCI_PME_STUCK_QUIRK.
    Adding its PCI ID to quirk.
    
    Signed-off-by: Wan Ahmad Zainie <wan.ahmad.zainie.wan.mohamad@intel.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    usb: xhci: hold lock over xhci_abort_cmd_ring()
    
    commit 4dea70778c0f48b4385c7720c363ec8d37a401b4 upstream.
    
    In command timer function, xhci_handle_command_timeout(), xhci->lock
    is unlocked before call into xhci_abort_cmd_ring(). This might cause
    race between the timer function and the event handler.
    
    The xhci_abort_cmd_ring() function sets the CMD_RING_ABORT bit in the
    command register and polling it until the setting takes effect. A stop
    command ring event might be handled between writing the abort bit and
    polling for it. The event handler will restart the command ring, which
    causes the failure of polling, and we ever believed that we failed to
    stop it.
    
    As a bonus, this also fixes some issues of calling functions without
    locking in xhci_handle_command_timeout().
    
    Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16: drop changes to the "failed to restart, or
     host removed" case]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

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

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

    usb: host: xhci: Fix possible wild pointer when handling abort command
    
    commit 2a7cfdf37b7c08ac29df4c62ea5ccb01474b6597 upstream.
    
    When current command was supposed to be aborted, host will free the command
    in handle_cmd_completion() function. But it might be still referenced by
    xhci->current_cmd, which need to set NULL.
    
    Signed-off-by: Baolin Wang <baolin.wang@linaro.org>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    usb: xhci: fix possible wild pointer
    
    commit 2b985467371a58ae44d76c7ba12b0951fee6ed98 upstream.
    
    handle_cmd_completion() frees a command structure which might be still
    referenced by xhci->current_cmd.
    This might cause problem when xhci->current_cmd is accessed after that.
    
    A real-life case could be like this. The host takes a very long time to
    respond to a command, and the command timer is fired at the same time
    when the command completion event arrives. The command completion
    handler frees xhci->current_cmd before the timer function can grab
    xhci->lock. Afterward, timer function grabs the lock and go ahead with
    checking and setting members of xhci->current_cmd.
    
    Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

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

commit e0c69a791b5f3f7c2ea451fb3fba794a880e8e80
Author: Jeff Mahoney <jeffm@suse.com>
Date:   Tue Dec 20 13:28:28 2016 -0500

    btrfs: fix locking when we put back a delayed ref that's too new
    
    commit d0280996437081dd12ed1e982ac8aeaa62835ec4 upstream.
    
    In __btrfs_run_delayed_refs, when we put back a delayed ref that's too
    new, we have already dropped the lock on locked_ref when we set
    ->processing = 0.
    
    This patch keeps the lock to cover that assignment.
    
    Fixes: d7df2c796d7 (Btrfs: attach delayed ref updates to delayed ref heads)
    Signed-off-by: Jeff Mahoney <jeffm@suse.com>
    Reviewed-by: Liu Bo <bo.li.liu@oracle.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 884285c06ee71d122aa49309bfca71b70ff19ea3
Author: Jeff Mahoney <jeffm@suse.com>
Date:   Tue Dec 20 13:28:27 2016 -0500

    btrfs: fix error handling when run_delayed_extent_op fails
    
    commit aa7c8da35d1905d80e840d075f07d26ec90144b5 upstream.
    
    In __btrfs_run_delayed_refs, the error path when run_delayed_extent_op
    fails sets locked_ref->processing = 0 but doesn't re-increment
    delayed_refs->num_heads_ready.  As a result, we end up triggering
    the WARN_ON in btrfs_select_ref_head.
    
    Fixes: d7df2c796d7 (Btrfs: attach delayed ref updates to delayed ref heads)
    Reported-by: Jon Nelson <jnelson-suse@jamponi.net>
    Signed-off-by: Jeff Mahoney <jeffm@suse.com>
    Reviewed-by: Liu Bo <bo.li.liu@oracle.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2eb579839657b0872c575d3d79ffc9add27d99c1
Author: Chanwoo Choi <cw00.choi@samsung.com>
Date:   Wed Dec 28 20:52:35 2016 +0900

    PM / devfreq: Fix the bug of devfreq_add_device when governor is NULL
    
    commit 73613b16cb5c5d5a659fc8832eff99eead3f9afb upstream.
    
    This patch fixes the bug of devfreq_add_device(). The devfreq device must
    have the default governor. If find_devfreq_governor() returns error,
    devfreq_add_device() fail to add the devfreq instance.
    
    Fixes: 1b5c1be2c88e (PM / devfreq: map devfreq drivers to governor using name)
    Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0d462d9e11bf889d7fc9df690b8e442252ec3394
Author: Axel Lin <axel.lin@ingics.com>
Date:   Thu Sep 29 10:13:28 2016 +0800

    PM / devfreq: Add proper locking around list_del()
    
    commit 0f376c9cd86c23f37312d37748b233660ef9d9af upstream.
    
    Use devfreq_list_lock around list_del() to prevent list corruption.
    
    Signed-off-by: Axel Lin <axel.lin@ingics.com>
    Acked-by: MyungJoo Ham <myungjoo.ham@samsung.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    ARM: davinci: da850: don't add emac clock to lookup table twice
    
    commit ef37427ac5677331145ab27a17e6f5f1b43f0c11 upstream.
    
    Similarly to the aemif clock - this screws up the linked list of clock
    children. Create a separate clock for mdio inheriting the rate from
    emac_clk.
    
    Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
    [nsekhar@ti.com: add a comment over mdio_clk to explaing its existence +
                     commit headline updates]
    Signed-off-by: Sekhar Nori <nsekhar@ti.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

    USB: gadgetfs: fix checks of wTotalLength in config descriptors
    
    commit 1c069b057dcf64fada952eaa868d35f02bb0cfc2 upstream.
    
    Andrey Konovalov's fuzz testing of gadgetfs showed that we should
    improve the driver's checks for valid configuration descriptors passed
    in by the user.  In particular, the driver needs to verify that the
    wTotalLength value in the descriptor is not too short (smaller
    than USB_DT_CONFIG_SIZE).  And the check for whether wTotalLength is
    too large has to be changed, because the driver assumes there is
    always enough room remaining in the buffer to hold a device descriptor
    (at least USB_DT_DEVICE_SIZE bytes).
    
    This patch adds the additional check and fixes the existing check.  It
    may do a little more than strictly necessary, but one extra check
    won't hurt.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    CC: Andrey Konovalov <andreyknvl@google.com>
    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 c2a30a344ecabb017064190f8da85d9b80eb53ef
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Fri Dec 9 15:18:43 2016 -0500

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

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

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

    usb: gadgetfs: restrict upper bound on device configuration size
    
    commit 0994b0a257557e18ee8f0b7c5f0f73fe2b54eec1 upstream.
    
    Andrey Konovalov reported that we were not properly checking the upper
    limit before of a device configuration size before calling
    memdup_user(), which could cause some problems.
    
    So set the upper limit to PAGE_SIZE * 4, which should be good enough for
    all devices.
    
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    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 967066e02878cb067406773236c41b330f5739cd
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Wed Dec 14 14:55:56 2016 -0500

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

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

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

    usb: dwc3: gadget: always unmap EP0 requests
    
    commit d62145929992f331fdde924d5963ab49588ccc7d upstream.
    
    commit 0416e494ce7d ("usb: dwc3: ep0: correct cache
    sync issue in case of ep0_bounced") introduced a bug
    where we would leak DMA resources which would cause
    us to starve the system of them resulting in failing
    DMA transfers.
    
    Fix the bug by making sure that we always unmap EP0
    requests since those are *always* mapped.
    
    Fixes: 0416e494ce7d ("usb: dwc3: ep0: correct cache
            sync issue in case of ep0_bounced")
    Tested-by: Tomasz Medrek <tomaszx.medrek@intel.com>
    Reported-by: Janusz Dziedzic <januszx.dziedzic@linux.intel.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 43a76bc986466cb7f3d85b2ca7a7d7f9050ec3c5
Author: Felipe Balbi <felipe.balbi@linux.intel.com>
Date:   Tue Dec 20 14:08:48 2016 +0200

    usb: dwc3: ep0: explicitly call dwc3_ep0_prepare_one_trb()
    
    commit 19ec31230eb3084431bc2e565fd085f79f564274 upstream.
    
    Let's call dwc3_ep0_prepare_one_trb() explicitly
    because there are occasions where we will need more
    than one TRB to handle an EP0 transfer.
    
    A follow-up patch will fix one bug related to
    multiple-TRB Data Phases when it comes to
    mapping/unmapping requests for DMA.
    
    Reported-by: Janusz Dziedzic <januszx.dziedzic@linux.intel.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    [bwh: Backported to 3.16:
     - dwc3_ep0_prepare_one_trb() and dwc3_ep0_start_trans() don't take a
       'chain' parameter
     - Some of the call sites don't exist here
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 77e27869119212cff9a86330b0301853be9a29d5
Author: Felipe Balbi <felipe.balbi@linux.intel.com>
Date:   Tue Dec 20 13:57:32 2016 +0200

    usb: dwc3: ep0: add dwc3_ep0_prepare_one_trb()
    
    commit 7931ec86c1b738e4e90e58c6d95e5f720d45ee56 upstream.
    
    For now this is just a cleanup patch, no functional
    changes. We will be using the new function to fix a
    bug introduced long ago by commit 0416e494ce7d
    ("usb: dwc3: ep0: correct cache sync issue in case
    of ep0_bounced") and further worsened by commit
    c0bd5456a470 ("usb: dwc3: ep0: handle non maxpacket
    aligned transfers > 512")
    
    Reported-by: Janusz Dziedzic <januszx.dziedzic@linux.intel.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    [bwh: Backported to 3.16:
     - dwc3_ep0_start_trans() doesn't have a 'chain' parameter, so don't
       give dwc3_ep0_prepare_one_trb() this parameter
     - Also delete a debug log statement, removed earlier upstream
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

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

commit dcef625d42e747c71ba49bf4799d6e0c686ffc3b
Author: Vladimir Zapolskiy <vladimir_zapolskiy@mentor.com>
Date:   Thu Nov 17 03:30:51 2016 +0200

    ARM: dts: imx31: fix AVIC base address
    
    commit af92305e567b7f4c9cf48b9e46c1f48ec9ffb1fb upstream.
    
    On i.MX31 AVIC interrupt controller base address is at 0x68000000.
    
    The problem was shadowed by the AVIC driver, which takes the correct
    base address from a SoC specific header file.
    
    Fixes: d2a37b3d91f4 ("ARM i.MX31: Add devicetree support")
    Signed-off-by: Vladimir Zapolskiy <vladimir_zapolskiy@mentor.com>
    Reviewed-by: Fabio Estevam <fabio.estevam@nxp.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5ebfea6ef6160143025eb9f6cab1fc4f5549a3f7
Author: Leon Romanovsky <leonro@mellanox.com>
Date:   Thu Dec 29 18:37:11 2016 +0200

    net/mlx4: Remove BUG_ON from ICM allocation routine
    
    commit c1d5f8ff80ea84768f5fae1ca9d1abfbb5e6bbaa upstream.
    
    This patch removes BUG_ON() macro from mlx4_alloc_icm_coherent()
    by checking DMA address alignment in advance and performing proper
    folding in case of error.
    
    Fixes: 5b0bf5e25efe ("mlx4_core: Support ICM tables in coherent memory")
    Reported-by: Ozgur Karatas <okaratas@member.fsf.org>
    Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 26f2a4499778f2581e9c09883a73de4756a0fd2a
Author: Eugenia Emantayev <eugenia@mellanox.com>
Date:   Thu Dec 29 18:37:10 2016 +0200

    net/mlx4_en: Fix bad WQE issue
    
    commit 6496bbf0ec481966ef9ffe5b6660d8d1b55c60cc upstream.
    
    Single send WQE in RX buffer should be stamped with software
    ownership in order to prevent the flow of QP in error in FW
    once UPDATE_QP is called.
    
    Fixes: 9f519f68cfff ('mlx4_en: Not using Shared Receive Queues')
    Signed-off-by: Eugenia Emantayev <eugenia@mellanox.com>
    Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7e87d5f7cea860b8967880133ff4299fa4202255
Author: Jack Morgenstein <jackm@dev.mellanox.co.il>
Date:   Thu Dec 29 18:37:09 2016 +0200

    net/mlx4_core: Use-after-free causes a resource leak in flow-steering detach
    
    commit 3b01fe7f91c8e4f9afc4fae3c5af72c14958d2d8 upstream.
    
    mlx4_QP_FLOW_STEERING_DETACH_wrapper first removes the steering
    rule (which results in freeing the rule structure), and then
    references a field in this struct (the qp number) when releasing the
    busy-status on the rule's qp.
    
    Since this memory was freed, it could reallocated and changed.
    Therefore, the qp number in the struct may be incorrect,
    so that we are releasing the incorrect qp. This leaves the rule's qp
    in the busy state (and could possibly release an incorrect qp as well).
    
    Fix this by saving the qp number in a local variable, for use after
    removing the steering rule.
    
    Fixes: 2c473ae7e582 ("net/mlx4_core: Disallow releasing VF QPs which have steering rules")
    Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
    Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ca92b798b806352c34a0b156d540d282f7c0d72a
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Wed Dec 28 15:44:41 2016 -0800

    net: stmmac: Fix error path after register_netdev move
    
    commit b2eb09af7370fedc6b9d9f05762f01625438467a upstream.
    
    Commit 5701659004d6 ("net: stmmac: Fix race between stmmac_drv_probe and
    stmmac_open") re-ordered how the MDIO bus registration and the network
    device are registered, but missed to unwind the MDIO bus registration in
    case we fail to register the network device.
    
    Fixes: 5701659004d6 ("net: stmmac: Fix race between stmmac_drv_probe and stmmac_open")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Acked-by: Kweh, Hock Leong <hock.leong.kweh@intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16:
     - stmmac_dvr_probe() returns a pointer
     - 'pcs' is a member of struct stmmac_priv, not struct mac_device_info]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ea6835ecc14b0d4af3b9959b50168265e19b8c91
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Tue Dec 27 18:23:06 2016 -0800

    net: stmmac: Fix race between stmmac_drv_probe and stmmac_open
    
    commit 5701659004d68085182d2fd4199c79172165fa65 upstream.
    
    There is currently a small window during which the network device registered by
    stmmac can be made visible, yet all resources, including and clock and MDIO bus
    have not had a chance to be set up, this can lead to the following error to
    occur:
    
    [  473.919358] stmmaceth 0000:01:00.0 (unnamed net_device) (uninitialized):
                    stmmac_dvr_probe: warning: cannot get CSR clock
    [  473.919382] stmmaceth 0000:01:00.0: no reset control found
    [  473.919412] stmmac - user ID: 0x10, Synopsys ID: 0x42
    [  473.919429] stmmaceth 0000:01:00.0: DMA HW capability register supported
    [  473.919436] stmmaceth 0000:01:00.0: RX Checksum Offload Engine supported
    [  473.919443] stmmaceth 0000:01:00.0: TX Checksum insertion supported
    [  473.919451] stmmaceth 0000:01:00.0 (unnamed net_device) (uninitialized):
                    Enable RX Mitigation via HW Watchdog Timer
    [  473.921395] libphy: PHY stmmac-1:00 not found
    [  473.921417] stmmaceth 0000:01:00.0 eth0: Could not attach to PHY
    [  473.921427] stmmaceth 0000:01:00.0 eth0: stmmac_open: Cannot attach to
                    PHY (error: -19)
    [  473.959710] libphy: stmmac: probed
    [  473.959724] stmmaceth 0000:01:00.0 eth0: PHY ID 01410cc2 at 0 IRQ POLL
                    (stmmac-1:00) active
    [  473.959728] stmmaceth 0000:01:00.0 eth0: PHY ID 01410cc2 at 1 IRQ POLL
                    (stmmac-1:01)
    [  473.959731] stmmaceth 0000:01:00.0 eth0: PHY ID 01410cc2 at 2 IRQ POLL
                    (stmmac-1:02)
    [  473.959734] stmmaceth 0000:01:00.0 eth0: PHY ID 01410cc2 at 3 IRQ POLL
                    (stmmac-1:03)
    
    Fix this by making sure that register_netdev() is the last thing being done,
    which guarantees that the clock and the MDIO bus are available.
    
    Fixes: 4bfcbd7abce2 ("stmmac: Move the mdio_register/_unregister in probe/remove")
    Reported-by: Kweh, Hock Leong <hock.leong.kweh@intel.com>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16:
     - stmmac_dvr_probe() returns a pointer
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9aeb0ab399a935b0975e499a25b685f1edbe618a
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Fri Dec 23 19:56:56 2016 -0800

    net: korina: Fix NAPI versus resources freeing
    
    commit e6afb1ad88feddf2347ea779cfaf4d03d3cd40b6 upstream.
    
    Commit beb0babfb77e ("korina: disable napi on close and restart")
    introduced calls to napi_disable() that were missing before,
    unfortunately this leaves a small window during which NAPI has a chance
    to run, yet we just freed resources since korina_free_ring() has been
    called:
    
    Fix this by disabling NAPI first then freeing resource, and make sure
    that we also cancel the restart task before doing the resource freeing.
    
    Fixes: beb0babfb77e ("korina: disable napi on close and restart")
    Reported-by: Alexandros C. Couloumbis <alex@ozo.com>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9fa6aa1dddfbd0c3919f128532ae51caf7fc0935
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Wed Dec 21 18:04:11 2016 +0100

    net, sched: fix soft lockup in tc_classify
    
    commit 628185cfddf1dfb701c4efe2cfd72cf5b09f5702 upstream.
    
    Shahar reported a soft lockup in tc_classify(), where we run into an
    endless loop when walking the classifier chain due to tp->next == tp
    which is a state we should never run into. The issue only seems to
    trigger under load in the tc control path.
    
    What happens is that in tc_ctl_tfilter(), thread A allocates a new
    tp, initializes it, sets tp_created to 1, and calls into tp->ops->change()
    with it. In that classifier callback we had to unlock/lock the rtnl
    mutex and returned with -EAGAIN. One reason why we need to drop there
    is, for example, that we need to request an action module to be loaded.
    
    This happens via tcf_exts_validate() -> tcf_action_init/_1() meaning
    after we loaded and found the requested action, we need to redo the
    whole request so we don't race against others. While we had to unlock
    rtnl in that time, thread B's request was processed next on that CPU.
    Thread B added a new tp instance successfully to the classifier chain.
    When thread A returned grabbing the rtnl mutex again, propagating -EAGAIN
    and destroying its tp instance which never got linked, we goto replay
    and redo A's request.
    
    This time when walking the classifier chain in tc_ctl_tfilter() for
    checking for existing tp instances we had a priority match and found
    the tp instance that was created and linked by thread B. Now calling
    again into tp->ops->change() with that tp was successful and returned
    without error.
    
    tp_created was never cleared in the second round, thus kernel thinks
    that we need to link it into the classifier chain (once again). tp and
    *back point to the same object due to the match we had earlier on. Thus
    for thread B's already public tp, we reset tp->next to tp itself and
    link it into the chain, which eventually causes the mentioned endless
    loop in tc_classify() once a packet hits the data path.
    
    Fix is to clear tp_created at the beginning of each request, also when
    we replay it. On the paths that can cause -EAGAIN we already destroy
    the original tp instance we had and on replay we really need to start
    from scratch. It seems that this issue was first introduced in commit
    12186be7d2e1 ("net_cls: fix unconfigured struct tcf_proto keeps chaining
    and avoid kernel panic when we use cls_cgroup").
    
    Fixes: 12186be7d2e1 ("net_cls: fix unconfigured struct tcf_proto keeps chaining and avoid kernel panic when we use cls_cgroup")
    Reported-by: Shahar Klein <shahark@mellanox.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Cc: Cong Wang <xiyou.wangcong@gmail.com>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Tested-by: Shahar Klein <shahark@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7eed9ab5d58a1d4e12a8a2431044d8b0398450f4
Author: Chris Brandt <chris.brandt@renesas.com>
Date:   Thu Dec 15 12:00:27 2016 -0500

    clk: renesas: mstp: Support 8-bit registers for r7s72100
    
    commit e2a33c34ddff22ee208d80abdd12b88a98d6cb60 upstream.
    
    The RZ/A1 is different than the other Renesas SOCs because the MSTP
    registers are 8-bit instead of 32-bit and if you try writing values as
    32-bit nothing happens...meaning this driver never worked for r7s72100.
    
    Fixes: b6face404f38 ("ARM: shmobile: r7s72100: add essential clock nodes to dtsi")
    Signed-off-by: Chris Brandt <chris.brandt@renesas.com>
    Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
    Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
    [bwh: Backported to 3.16: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ecf50ddaf6eb48af8ad132f05be5f6ca9139a39d
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Fri Dec 9 09:41:29 2016 -0200

    s5k4ecgx: select CRC32 helper
    
    commit c739c0a7c3c2472d7562b8f802cdce44d2597c8b upstream.
    
    A rare randconfig build failure shows up in this driver when
    the CRC32 helper is not there:
    
    drivers/media/built-in.o: In function `s5k4ecgx_s_power':
    s5k4ecgx.c:(.text+0x9eb4): undefined reference to `crc32_le'
    
    This adds the 'select' that all other users of this function have.
    
    Fixes: 8b99312b7214 ("[media] Add v4l2 subdev driver for S5K4ECGX sensor")
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d32397fefc7e22376e476ff6321041df9dd2967e
Author: Marcos Paulo de Souza <marcos.souza.org@gmail.com>
Date:   Sun Dec 18 15:26:12 2016 -0800

    Input: i8042 - add Pegatron touchpad to noloop table
    
    commit 41c567a5d7d1a986763e58c3394782813c3bcb03 upstream.
    
    Avoid AUX loopback in Pegatron C15B touchpad, so input subsystem is able
    to recognize a Synaptics touchpad in the AUX port.
    
    Fixes: https://bugzilla.kernel.org/show_bug.cgi?id=93791
    (Touchpad is not detected on DNS 0801480 notebook (PEGATRON C15B))
    
    Suggested-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Marcos Paulo de Souza <marcos.souza.org@gmail.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 13f9cb6ebc1aedafe97dac62474dec7d95120019
Author: Larry Finger <Larry.Finger@lwfinger.net>
Date:   Thu Dec 22 21:06:53 2016 -0600

    powerpc: Fix build warning on 32-bit PPC
    
    commit 8ae679c4bc2ea2d16d92620da8e3e9332fa4039f upstream.
    
    I am getting the following warning when I build kernel 4.9-git on my
    PowerBook G4 with a 32-bit PPC processor:
    
        AS      arch/powerpc/kernel/misc_32.o
      arch/powerpc/kernel/misc_32.S:299:7: warning: "CONFIG_FSL_BOOKE" is not defined [-Wundef]
    
    This problem is evident after commit 989cea5c14be ("kbuild: prevent
    lib-ksyms.o rebuilds"); however, this change in kbuild only exposes an
    error that has been in the code since 2005 when this source file was
    created.  That was with commit 9994a33865f4 ("powerpc: Introduce
    entry_{32,64}.S, misc_{32,64}.S, systbl.S").
    
    The offending line does not make a lot of sense.  This error does not
    seem to cause any errors in the executable, thus I am not recommending
    that it be applied to any stable versions.
    
    Thanks to Nicholas Piggin for suggesting this solution.
    
    Fixes: 9994a33865f4 ("powerpc: Introduce entry_{32,64}.S, misc_{32,64}.S, systbl.S")
    Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
    Cc: Nicholas Piggin <npiggin@gmail.com>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Cc: linuxppc-dev@lists.ozlabs.org
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8f7ceb94581c9bc3f91f5ef29e3efc3a67de0b57
Author: Aleksa Sarai <asarai@suse.de>
Date:   Wed Dec 21 16:26:24 2016 +1100

    fs: exec: apply CLOEXEC before changing dumpable task flags
    
    commit 613cc2b6f272c1a8ad33aefa21cad77af23139f7 upstream.
    
    If you have a process that has set itself to be non-dumpable, and it
    then undergoes exec(2), any CLOEXEC file descriptors it has open are
    "exposed" during a race window between the dumpable flags of the process
    being reset for exec(2) and CLOEXEC being applied to the file
    descriptors. This can be exploited by a process by attempting to access
    /proc/<pid>/fd/... during this window, without requiring CAP_SYS_PTRACE.
    
    The race in question is after set_dumpable has been (for get_link,
    though the trace is basically the same for readlink):
    
    [vfs]
    -> proc_pid_link_inode_operations.get_link
       -> proc_pid_get_link
          -> proc_fd_access_allowed
             -> ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS);
    
    Which will return 0, during the race window and CLOEXEC file descriptors
    will still be open during this window because do_close_on_exec has not
    been called yet. As a result, the ordering of these calls should be
    reversed to avoid this race window.
    
    This is of particular concern to container runtimes, where joining a
    PID namespace with file descriptors referring to the host filesystem
    can result in security issues (since PRCTL_SET_DUMPABLE doesn't protect
    against access of CLOEXEC file descriptors -- file descriptors which may
    reference filesystem objects the container shouldn't have access to).
    
    Cc: dev@opencontainers.org
    Reported-by: Michael Crosby <crosbymichael@gmail.com>
    Signed-off-by: Aleksa Sarai <asarai@suse.de>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 12d4dffb0d8b11d946e4077c672c544a7e1673c0
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Fri Dec 2 15:29:04 2016 +0100

    drm/i915/dsi: Do not clear DPOUNIT_CLOCK_GATE_DISABLE from vlv_init_display_clock_gating
    
    commit bb98e72adaf9d19719aba35f802d4836f5d5176c upstream.
    
    On my Cherrytrail CUBE iwork8 Air tablet PIPE-A would get stuck on loading
    i915 at boot 1 out of every 3 boots, resulting in a non functional LCD.
    Once the i915 driver has successfully loaded, the panel can be disabled /
    enabled without hitting this issue.
    
    The getting stuck is caused by vlv_init_display_clock_gating() clearing
    the DPOUNIT_CLOCK_GATE_DISABLE bit in DSPCLK_GATE_D when called from
    chv_pipe_power_well_ops.enable() on driver load, while a pipe is enabled
    driving the DSI LCD by the BIOS.
    
    Clearing this bit while DSI is in use is a known issue and
    intel_dsi_pre_enable() / intel_dsi_post_disable() already set / clear it
    as appropriate.
    
    This commit modifies vlv_init_display_clock_gating() to leave the
    DPOUNIT_CLOCK_GATE_DISABLE bit alone fixing the pipe getting stuck.
    
    Changes in v2:
    -Replace PIPE-A with "a pipe" or "the pipe" in the commit msg and
    comment
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97330
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/20161202142904.25613-1-hdegoede@redhat.com
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    (cherry picked from commit 721d484563e1a51ada760089c490cbc47e909756)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    [bwh: Backported to 3.16: adjust filename, context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit adfffd77aa5c89984e21d5e3b2c8c7ab1dc1256c
Author: NeilBrown <neilb@suse.com>
Date:   Mon Dec 19 11:19:31 2016 +1100

    NFSv4.1: nfs4_fl_prepare_ds must be careful about reporting success.
    
    commit cfd278c280f997cf2fe4662e0acab0fe465f637b upstream.
    
    Various places assume that if nfs4_fl_prepare_ds() turns a non-NULL 'ds',
    then ds->ds_clp will also be non-NULL.
    
    This is not necessasrily true in the case when the process received a fatal signal
    while nfs4_pnfs_ds_connect is waiting in nfs4_wait_ds_connect().
    In that case ->ds_clp may not be set, and the devid may not recently have been marked
    unavailable.
    
    So add a test for ds_clp == NULL and return NULL in that case.
    
    Fixes: c23266d532b4 ("NFS4.1 Fix data server connection race")
    Signed-off-by: NeilBrown <neilb@suse.com>
    Acked-by: Olga Kornievskaia <aglo@umich.edu>
    Acked-by: Adamson, Andy <William.Adamson@netapp.com>
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 33b5e6fcb1fdacff55e4e768297b381212a0dfb7
Author: Russell Currey <ruscur@russell.cc>
Date:   Thu Dec 15 16:12:41 2016 +1100

    drivers/gpu/drm/ast: Fix infinite loop if read fails
    
    commit 298360af3dab45659810fdc51aba0c9f4097e4f6 upstream.
    
    ast_get_dram_info() configures a window in order to access BMC memory.
    A BMC register can be configured to disallow this, and if so, causes
    an infinite loop in the ast driver which renders the system unusable.
    
    Fix this by erroring out if an error is detected.  On powerpc systems with
    EEH, this leads to the device being fenced and the system continuing to
    operate.
    
    Signed-off-by: Russell Currey <ruscur@russell.cc>
    Reviewed-by: Joel Stanley <joel@jms.id.au>
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: http://patchwork.freedesktop.org/patch/msgid/20161215051241.20815-1-ruscur@russell.cc
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit cbc43c0d21ad5b967a9db01c62e80efefb81fb26
Author: Russell King <rmk+kernel@armlinux.org.uk>
Date:   Sat Dec 17 12:10:56 2016 +0000

    i2c: mux: pca954x: fix i2c mux selection caching
    
    commit 7f638c1cb0a1112dbe0b682a42db30521646686b upstream.
    
    smbus functions return -ve on error, 0 on success.  However,
    __i2c_transfer() have a different return signature - -ve on error, or
    number of buffers transferred (which may be zero or greater.)
    
    The upshot of this is that the sense of the test is reversed when using
    the mux on a bus supporting the master_xfer method: we cache the value
    and never retry if we fail to transfer any buffers, but if we succeed,
    we clear the cached value.
    
    Fix this by making pca954x_reg_write() return a negative error code for
    all failure cases.
    
    Fixes: 463e8f845cbf ("i2c: mux: pca954x: retry updating the mux selection on failure")
    Acked-by: Peter Rosin <peda@axentia.se>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f99aa824608ed6bb4707513f3dadd432eed818c8
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue Dec 13 15:27:04 2016 +0300

    target/iscsi: Fix double free in lio_target_tiqn_addtpg()
    
    commit a91918cd3ea11f91c68e08e1e8ce1b560447a80e upstream.
    
    This iscsit_tpg_add_portal_group() function is only called from
    lio_target_tiqn_addtpg().  Both functions free the "tpg" pointer on
    error so it's a double free bug.  The memory is allocated in the caller
    so it should be freed in the caller and not here.
    
    Fixes: e48354ce078c ("iscsi-target: Add iSCSI fabric support for target v4.1")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reviewed-by: David Disseldorp <ddiss@suse.de>
    [ bvanassche: Added "Fix" at start of patch title ]
    Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2898d5f94b61812597aeb8abcf7e03089e3dcb9d
Author: Wei Fang <fangwei1@huawei.com>
Date:   Tue Dec 13 09:25:21 2016 +0800

    scsi: avoid a permanent stop of the scsi device's request queue
    
    commit d2a145252c52792bc59e4767b486b26c430af4bb upstream.
    
    A race between scanning and fc_remote_port_delete() may result in a
    permanent stop if the device gets blocked before scsi_sysfs_add_sdev()
    and unblocked after.  The reason is that blocking a device sets both the
    SDEV_BLOCKED state and the QUEUE_FLAG_STOPPED.  However,
    scsi_sysfs_add_sdev() unconditionally sets SDEV_RUNNING which causes the
    device to be ignored by scsi_target_unblock() and thus never have its
    QUEUE_FLAG_STOPPED cleared leading to a device which is apparently
    running but has a stopped queue.
    
    We actually have two places where SDEV_RUNNING is set: once in
    scsi_add_lun() which respects the blocked flag and once in
    scsi_sysfs_add_sdev() which doesn't.  Since the second set is entirely
    spurious, simply remove it to fix the problem.
    
    Reported-by: Zengxi Chen <chenzengxi@huawei.com>
    Signed-off-by: Wei Fang <fangwei1@huawei.com>
    Reviewed-by: Ewan D. Milne <emilne@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 044a8ceeb012d956a02cc7587b19a795d4deca79
Author: Steffen Maier <maier@linux.vnet.ibm.com>
Date:   Fri Dec 9 17:16:33 2016 +0100

    scsi: zfcp: fix rport unblock race with LUN recovery
    
    commit 6f2ce1c6af37191640ee3ff6e8fc39ea10352f4c upstream.
    
    It is unavoidable that zfcp_scsi_queuecommand() has to finish requests
    with DID_IMM_RETRY (like fc_remote_port_chkready()) during the time
    window when zfcp detected an unavailable rport but
    fc_remote_port_delete(), which is asynchronous via
    zfcp_scsi_schedule_rport_block(), has not yet blocked the rport.
    
    However, for the case when the rport becomes available again, we should
    prevent unblocking the rport too early.  In contrast to other FCP LLDDs,
    zfcp has to open each LUN with the FCP channel hardware before it can
    send I/O to a LUN.  So if a port already has LUNs attached and we
    unblock the rport just after port recovery, recoveries of LUNs behind
    this port can still be pending which in turn force
    zfcp_scsi_queuecommand() to unnecessarily finish requests with
    DID_IMM_RETRY.
    
    This also opens a time window with unblocked rport (until the followup
    LUN reopen recovery has finished).  If a scsi_cmnd timeout occurs during
    this time window fc_timed_out() cannot work as desired and such command
    would indeed time out and trigger scsi_eh. This prevents a clean and
    timely path failover.  This should not happen if the path issue can be
    recovered on FC transport layer such as path issues involving RSCNs.
    
    Fix this by only calling zfcp_scsi_schedule_rport_register(), to
    asynchronously trigger fc_remote_port_add(), after all LUN recoveries as
    children of the rport have finished and no new recoveries of equal or
    higher order were triggered meanwhile.  Finished intentionally includes
    any recovery result no matter if successful or failed (still unblock
    rport so other successful LUNs work).  For simplicity, we check after
    each finished LUN recovery if there is another LUN recovery pending on
    the same port and then do nothing.  We handle the special case of a
    successful recovery of a port without LUN children the same way without
    changing this case's semantics.
    
    For debugging we introduce 2 new trace records written if the rport
    unblock attempt was aborted due to still unfinished or freshly triggered
    recovery. The records are only written above the default trace level.
    
    Benjamin noticed the important special case of new recovery that can be
    triggered between having given up the erp_lock and before calling
    zfcp_erp_action_cleanup() within zfcp_erp_strategy().  We must avoid the
    following sequence:
    
    ERP thread                 rport_work      other context
    -------------------------  --------------  --------------------------------
    port is unblocked, rport still blocked,
     due to pending/running ERP action,
     so ((port->status & ...UNBLOCK) != 0)
     and (port->rport == NULL)
    unlock ERP
    zfcp_erp_action_cleanup()
    case ZFCP_ERP_ACTION_REOPEN_LUN:
    zfcp_erp_try_rport_unblock()
    ((status & ...UNBLOCK) != 0) [OLD!]
                                               zfcp_erp_port_reopen()
                                               lock ERP
                                               zfcp_erp_port_block()
                                               port->status clear ...UNBLOCK
                                               unlock ERP
                                               zfcp_scsi_schedule_rport_block()
                                               port->rport_task = RPORT_DEL
                                               queue_work(rport_work)
                               zfcp_scsi_rport_work()
                               (port->rport_task != RPORT_ADD)
                               port->rport_task = RPORT_NONE
                               zfcp_scsi_rport_block()
                               if (!port->rport) return
    zfcp_scsi_schedule_rport_register()
    port->rport_task = RPORT_ADD
    queue_work(rport_work)
                               zfcp_scsi_rport_work()
                               (port->rport_task == RPORT_ADD)
                               port->rport_task = RPORT_NONE
                               zfcp_scsi_rport_register()
                               (port->rport == NULL)
                               rport = fc_remote_port_add()
                               port->rport = rport;
    
    Now the rport was erroneously unblocked while the zfcp_port is blocked.
    This is another situation we want to avoid due to scsi_eh
    potential. This state would at least remain until the new recovery from
    the other context finished successfully, or potentially forever if it
    failed.  In order to close this race, we take the erp_lock inside
    zfcp_erp_try_rport_unblock() when checking the status of zfcp_port or
    LUN.  With that, the possible corresponding rport state sequences would
    be: (unblock[ERP thread],block[other context]) if the ERP thread gets
    erp_lock first and still sees ((port->status & ...UNBLOCK) != 0),
    (block[other context],NOP[ERP thread]) if the ERP thread gets erp_lock
    after the other context has already cleard ...UNBLOCK from port->status.
    
    Since checking fields of struct erp_action is unsafe because they could
    have been overwritten (re-used for new recovery) meanwhile, we only
    check status of zfcp_port and LUN since these are only changed under
    erp_lock elsewhere. Regarding the check of the proper status flags (port
    or port_forced are similar to the shown adapter recovery):
    
    [zfcp_erp_adapter_shutdown()]
    zfcp_erp_adapter_reopen()
     zfcp_erp_adapter_block()
      * clear UNBLOCK ---------------------------------------+
     zfcp_scsi_schedule_rports_block()                       |
     write_lock_irqsave(&adapter->erp_lock, flags);-------+  |
     zfcp_erp_action_enqueue()                            |  |
      zfcp_erp_setup_act()                                |  |
       * set ERP_INUSE -----------------------------------|--|--+
     write_unlock_irqrestore(&adapter->erp_lock, flags);--+  |  |
    .context-switch.                                         |  |
    zfcp_erp_thread()                                        |  |
     zfcp_erp_strategy()                                     |  |
      write_lock_irqsave(&adapter->erp_lock, flags);------+  |  |
      ...                                                 |  |  |
      zfcp_erp_strategy_check_target()                    |  |  |
       zfcp_erp_strategy_check_adapter()                  |  |  |
        zfcp_erp_adapter_unblock()                        |  |  |
         * set UNBLOCK -----------------------------------|--+  |
      zfcp_erp_action_dequeue()                           |     |
       * clear ERP_INUSE ---------------------------------|-----+
      ...                                                 |
      write_unlock_irqrestore(&adapter->erp_lock, flags);-+
    
    Hence, we should check for both UNBLOCK and ERP_INUSE because they are
    interleaved.  Also we need to explicitly check ERP_FAILED for the link
    down case which currently does not clear the UNBLOCK flag in
    zfcp_fsf_link_down_info_eval().
    
    Signed-off-by: Steffen Maier <maier@linux.vnet.ibm.com>
    Fixes: 8830271c4819 ("[SCSI] zfcp: Dont fail SCSI commands when transitioning to blocked fc_rport")
    Fixes: a2fa0aede07c ("[SCSI] zfcp: Block FC transport rports early on errors")
    Fixes: 5f852be9e11d ("[SCSI] zfcp: Fix deadlock between zfcp ERP and SCSI")
    Fixes: 338151e06608 ("[SCSI] zfcp: make use of fc_remote_port_delete when target port is unavailable")
    Fixes: 3859f6a248cb ("[PATCH] zfcp: add rports to enable scsi_add_device to work again")
    Reviewed-by: Benjamin Block <bblock@linux.vnet.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a61aaea9d08b7d4dc32fa001d2f2f2c125f4cc34
Author: Steffen Maier <maier@linux.vnet.ibm.com>
Date:   Fri Dec 9 17:16:32 2016 +0100

    scsi: zfcp: do not trace pure benign residual HBA responses at default level
    
    commit 56d23ed7adf3974f10e91b643bd230e9c65b5f79 upstream.
    
    Since quite a while, Linux issues enough SCSI commands per scsi_device
    which successfully return with FCP_RESID_UNDER, FSF_FCP_RSP_AVAILABLE,
    and SAM_STAT_GOOD.  This floods the HBA trace area and we cannot see
    other and important HBA trace records long enough.
    
    Therefore, do not trace HBA response errors for pure benign residual
    under counts at the default trace level.
    
    This excludes benign residual under count combined with other validity
    bits set in FCP_RSP_IU, such as FCP_SNS_LEN_VAL.  For all those other
    cases, we still do want to see both the HBA record and the corresponding
    SCSI record by default.
    
    Signed-off-by: Steffen Maier <maier@linux.vnet.ibm.com>
    Fixes: a54ca0f62f95 ("[SCSI] zfcp: Redesign of the debug tracing for HBA records.")
    Reviewed-by: Benjamin Block <bblock@linux.vnet.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6c98813f6389d43864e4ca766776f9751c828193
Author: Benjamin Block <bblock@linux.vnet.ibm.com>
Date:   Fri Dec 9 17:16:31 2016 +0100

    scsi: zfcp: fix use-after-"free" in FC ingress path after TMF
    
    commit dac37e15b7d511e026a9313c8c46794c144103cd upstream.
    
    When SCSI EH invokes zFCP's callbacks for eh_device_reset_handler() and
    eh_target_reset_handler(), it expects us to relent the ownership over
    the given scsi_cmnd and all other scsi_cmnds within the same scope - LUN
    or target - when returning with SUCCESS from the callback ('release'
    them).  SCSI EH can then reuse those commands.
    
    We did not follow this rule to release commands upon SUCCESS; and if
    later a reply arrived for one of those supposed to be released commands,
    we would still make use of the scsi_cmnd in our ingress tasklet. This
    will at least result in undefined behavior or a kernel panic because of
    a wrong kernel pointer dereference.
    
    To fix this, we NULLify all pointers to scsi_cmnds (struct zfcp_fsf_req
    *)->data in the matching scope if a TMF was successful. This is done
    under the locks (struct zfcp_adapter *)->abort_lock and (struct
    zfcp_reqlist *)->lock to prevent the requests from being removed from
    the request-hashtable, and the ingress tasklet from making use of the
    scsi_cmnd-pointer in zfcp_fsf_fcp_cmnd_handler().
    
    For cases where a reply arrives during SCSI EH, but before we get a
    chance to NULLify the pointer - but before we return from the callback
    -, we assume that the code is protected from races via the CAS operation
    in blk_complete_request() that is called in scsi_done().
    
    The following stacktrace shows an example for a crash resulting from the
    previous behavior:
    
    Unable to handle kernel pointer dereference at virtual kernel address fffffee17a672000
    Oops: 0038 [#1] SMP
    CPU: 2 PID: 0 Comm: swapper/2 Not tainted
    task: 00000003f7ff5be0 ti: 00000003f3d38000 task.ti: 00000003f3d38000
    Krnl PSW : 0404d00180000000 00000000001156b0 (smp_vcpu_scheduled+0x18/0x40)
               R:0 T:1 IO:0 EX:0 Key:0 M:1 W:0 P:0 AS:3 CC:1 PM:0 EA:3
    Krnl GPRS: 000000200000007e 0000000000000000 fffffee17a671fd8 0000000300000015
               ffffffff80000000 00000000005dfde8 07000003f7f80e00 000000004fa4e800
               000000036ce8d8f8 000000036ce8d9c0 00000003ece8fe00 ffffffff969c9e93
               00000003fffffffd 000000036ce8da10 00000000003bf134 00000003f3b07918
    Krnl Code: 00000000001156a2: a7190000        lghi    %r1,0
               00000000001156a6: a7380015        lhi    %r3,21
              #00000000001156aa: e32050000008    ag    %r2,0(%r5)
              >00000000001156b0: 482022b0        lh    %r2,688(%r2)
               00000000001156b4: ae123000        sigp    %r1,%r2,0(%r3)
               00000000001156b8: b2220020        ipm    %r2
               00000000001156bc: 8820001c        srl    %r2,28
               00000000001156c0: c02700000001    xilf    %r2,1
    Call Trace:
    ([<0000000000000000>] 0x0)
     [<000003ff807bdb8e>] zfcp_fsf_fcp_cmnd_handler+0x3de/0x490 [zfcp]
     [<000003ff807be30a>] zfcp_fsf_req_complete+0x252/0x800 [zfcp]
     [<000003ff807c0a48>] zfcp_fsf_reqid_check+0xe8/0x190 [zfcp]
     [<000003ff807c194e>] zfcp_qdio_int_resp+0x66/0x188 [zfcp]
     [<000003ff80440c64>] qdio_kick_handler+0xdc/0x310 [qdio]
     [<000003ff804463d0>] __tiqdio_inbound_processing+0xf8/0xcd8 [qdio]
     [<0000000000141fd4>] tasklet_action+0x9c/0x170
     [<0000000000141550>] __do_softirq+0xe8/0x258
     [<000000000010ce0a>] do_softirq+0xba/0xc0
     [<000000000014187c>] irq_exit+0xc4/0xe8
     [<000000000046b526>] do_IRQ+0x146/0x1d8
     [<00000000005d6a3c>] io_return+0x0/0x8
     [<00000000005d6422>] vtime_stop_cpu+0x4a/0xa0
    ([<0000000000000000>] 0x0)
     [<0000000000103d8a>] arch_cpu_idle+0xa2/0xb0
     [<0000000000197f94>] cpu_startup_entry+0x13c/0x1f8
     [<0000000000114782>] smp_start_secondary+0xda/0xe8
     [<00000000005d6efe>] restart_int_handler+0x56/0x6c
     [<0000000000000000>] 0x0
    Last Breaking-Event-Address:
     [<00000000003bf12e>] arch_spin_lock_wait+0x56/0xb0
    
    Suggested-by: Steffen Maier <maier@linux.vnet.ibm.com>
    Signed-off-by: Benjamin Block <bblock@linux.vnet.ibm.com>
    Fixes: ea127f9754 ("[PATCH] s390 (7/7): zfcp host adapter.") (tglx/history.git)
    Signed-off-by: Steffen Maier <maier@linux.vnet.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit bfe86555ef5d01bcc8d94be760090c02af8de47a
Author: Bart Van Assche <bart.vanassche@sandisk.com>
Date:   Mon Nov 21 10:22:17 2016 -0800

    IB/multicast: Check ib_find_pkey() return value
    
    commit d3a2418ee36a59bc02e9d454723f3175dcf4bfd9 upstream.
    
    This patch avoids that Coverity complains about not checking the
    ib_find_pkey() return value.
    
    Fixes: commit 547af76521b3 ("IB/multicast: Report errors on multicast groups if P_key changes")
    Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
    Cc: Sean Hefty <sean.hefty@intel.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e61b09c24f844f34ca37132a3149e3cb561321dc
Author: Bart Van Assche <bart.vanassche@sandisk.com>
Date:   Mon Nov 21 10:21:41 2016 -0800

    IPoIB: Avoid reading an uninitialized member variable
    
    commit 11b642b84e8c43e8597de031678d15c08dd057bc upstream.
    
    This patch avoids that Coverity reports the following:
    
        Using uninitialized value port_attr.state when calling printk
    
    Fixes: commit 94232d9ce817 ("IPoIB: Start multicast join process only on active ports")
    Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
    Cc: Erez Shitrit <erezsh@mellanox.com>
    Reviewed-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7d934d281758fb6706f8cbf7eb531a507e693a60
Author: Bart Van Assche <bart.vanassche@sandisk.com>
Date:   Mon Nov 21 10:21:17 2016 -0800

    IB/mad: Fix an array index check
    
    commit 2fe2f378dd45847d2643638c07a7658822087836 upstream.
    
    The array ib_mad_mgmt_class_table.method_table has MAX_MGMT_CLASS
    (80) elements. Hence compare the array index with that value instead
    of with IB_MGMT_MAX_METHODS (128). This patch avoids that Coverity
    reports the following:
    
    Overrunning array class->method_table of 80 8-byte elements at element index 127 (byte offset 1016) using index convert_mgmt_class(mad_hdr->mgmt_class) (which evaluates to 127).
    
    Fixes: commit b7ab0b19a85f ("IB/mad: Verify mgmt class in received MADs")
    Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
    Cc: Sean Hefty <sean.hefty@intel.com>
    Reviewed-by: Hal Rosenstock <hal@mellanox.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0e7994b1b2fe2a4ede77606b0e5564226f8e2428
Author: NeilBrown <neilb@suse.com>
Date:   Mon Dec 12 08:21:51 2016 -0700

    block_dev: don't test bdev->bd_contains when it is not stable
    
    commit bcc7f5b4bee8e327689a4d994022765855c807ff upstream.
    
    bdev->bd_contains is not stable before calling __blkdev_get().
    When __blkdev_get() is called on a parition with ->bd_openers == 0
    it sets
      bdev->bd_contains = bdev;
    which is not correct for a partition.
    After a call to __blkdev_get() succeeds, ->bd_openers will be > 0
    and then ->bd_contains is stable.
    
    When FMODE_EXCL is used, blkdev_get() calls
       bd_start_claiming() ->  bd_prepare_to_claim() -> bd_may_claim()
    
    This call happens before __blkdev_get() is called, so ->bd_contains
    is not stable.  So bd_may_claim() cannot safely use ->bd_contains.
    It currently tries to use it, and this can lead to a BUG_ON().
    
    This happens when a whole device is already open with a bd_holder (in
    use by dm in my particular example) and two threads race to open a
    partition of that device for the first time, one opening with O_EXCL and
    one without.
    
    The thread that doesn't use O_EXCL gets through blkdev_get() to
    __blkdev_get(), gains the ->bd_mutex, and sets bdev->bd_contains = bdev;
    
    Immediately thereafter the other thread, using FMODE_EXCL, calls
    bd_start_claiming() from blkdev_get().  This should fail because the
    whole device has a holder, but because bdev->bd_contains == bdev
    bd_may_claim() incorrectly reports success.
    This thread continues and blocks on bd_mutex.
    
    The first thread then sets bdev->bd_contains correctly and drops the mutex.
    The thread using FMODE_EXCL then continues and when it calls bd_may_claim()
    again in:
                            BUG_ON(!bd_may_claim(bdev, whole, holder));
    The BUG_ON fires.
    
    Fix this by removing the dependency on ->bd_contains in
    bd_may_claim().  As bd_may_claim() has direct access to the whole
    device, it can simply test if the target bdev is the whole device.
    
    Fixes: 6b4517a7913a ("block: implement bd_claiming and claiming block")
    Signed-off-by: NeilBrown <neilb@suse.com>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c19800276ee3cc7346f4e2ce1eee118024b640b0
Author: Maxim Patlasov <mpatlasov@virtuozzo.com>
Date:   Mon Dec 12 14:32:44 2016 -0800

    btrfs: limit async_work allocation and worker func duration
    
    commit 2939e1a86f758b55cdba73e29397dd3d94df13bc upstream.
    
    Problem statement: unprivileged user who has read-write access to more than
    one btrfs subvolume may easily consume all kernel memory (eventually
    triggering oom-killer).
    
    Reproducer (./mkrmdir below essentially loops over mkdir/rmdir):
    
    [root@kteam1 ~]# cat prep.sh
    
    DEV=/dev/sdb
    mkfs.btrfs -f $DEV
    mount $DEV /mnt
    for i in `seq 1 16`
    do
            mkdir /mnt/$i
            btrfs subvolume create /mnt/SV_$i
            ID=`btrfs subvolume list /mnt |grep "SV_$i$" |cut -d ' ' -f 2`
            mount -t btrfs -o subvolid=$ID $DEV /mnt/$i
            chmod a+rwx /mnt/$i
    done
    
    [root@kteam1 ~]# sh prep.sh
    
    [maxim@kteam1 ~]$ for i in `seq 1 16`; do ./mkrmdir /mnt/$i 2000 2000 & done
    
    [root@kteam1 ~]# for i in `seq 1 4`; do grep "kmalloc-128" /proc/slabinfo | grep -v dma; sleep 60; done
    kmalloc-128        10144  10144    128   32    1 : tunables    0    0    0 : slabdata    317    317      0
    kmalloc-128       9992352 9992352    128   32    1 : tunables    0    0    0 : slabdata 312261 312261      0
    kmalloc-128       24226752 24226752    128   32    1 : tunables    0    0    0 : slabdata 757086 757086      0
    kmalloc-128       42754240 42754240    128   32    1 : tunables    0    0    0 : slabdata 1336070 1336070      0
    
    The huge numbers above come from insane number of async_work-s allocated
    and queued by btrfs_wq_run_delayed_node.
    
    The problem is caused by btrfs_wq_run_delayed_node() queuing more and more
    works if the number of delayed items is above BTRFS_DELAYED_BACKGROUND. The
    worker func (btrfs_async_run_delayed_root) processes at least
    BTRFS_DELAYED_BATCH items (if they are present in the list). So, the machinery
    works as expected while the list is almost empty. As soon as it is getting
    bigger, worker func starts to process more than one item at a time, it takes
    longer, and the chances to have async_works queued more than needed is getting
    higher.
    
    The problem above is worsened by another flaw of delayed-inode implementation:
    if async_work was queued in a throttling branch (number of items >=
    BTRFS_DELAYED_WRITEBACK), corresponding worker func won't quit until
    the number of items < BTRFS_DELAYED_BACKGROUND / 2. So, it is possible that
    the func occupies CPU infinitely (up to 30sec in my experiments): while the
    func is trying to drain the list, the user activity may add more and more
    items to the list.
    
    The patch fixes both problems in straightforward way: refuse queuing too
    many works in btrfs_wq_run_delayed_node and bail out of worker func if
    at least BTRFS_DELAYED_WRITEBACK items are processed.
    
    Changed in v2: remove support of thresh == NO_THRESHOLD.
    
    Signed-off-by: Maxim Patlasov <mpatlasov@virtuozzo.com>
    Signed-off-by: Chris Mason <clm@fb.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f7aa7e8baf3ad7eb19b667d01f98c9d36d966b08
Author: Daniel Dressler <danieru.dressler@gmail.com>
Date:   Mon Nov 17 22:05:02 2014 +0900

    Btrfs: delayed-inode: replace root args iff only fs_info used
    
    commit a585e94895ed8ab2930bfd5186ffd20301b5c703 upstream.
    
    This is the second independent patch of a larger project to cleanup
    btrfs's internal usage of btrfs_root. Many functions take btrfs_root
    only to grab the fs_info struct.
    
    By requiring a root these functions cause programmer overhead. That
    these functions can accept any valid root is not obvious until
    inspection.
    
    This patch reduces the specificity of such functions to accept the
    fs_info directly.
    
    These patches can be applied independently and thus are not being
    submitted as a patch series. There should be about 26 patches by the
    project's completion. Each patch will cleanup between 1 and 34 functions
    apiece.  Each patch covers a single file's functions.
    
    This patch affects the following function(s):
      1) btrfs_wq_run_delayed_node
    
    Signed-off-by: Daniel Dressler <danieru.dressler@gmail.com>
    Signed-off-by: David Sterba <dsterba@suse.cz>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2f31f92e904692fbc02c0b9ae94f81bb5e8c0756
Author: Jack Morgenstein <jackm@dev.mellanox.co.il>
Date:   Sun Nov 27 15:18:19 2016 +0200

    IB/mlx4: Fix out-of-range array index in destroy qp flow
    
    commit c482af646d0809a8d5e1b7f4398cce3592589b98 upstream.
    
    For non-special QPs, the port value becomes non-zero only at the
    RESET-to-INIT transition. If the QP has not undergone that transition,
    its port number value is still zero.
    
    If such a QP is destroyed before being moved out of the RESET state,
    subtracting one from the qp port number results in a negative value.
    Using that negative value as an index into the qp1_proxy array
    results in an out-of-bounds array reference.
    
    Fix this by testing that the QP type is one that uses qp1_proxy before
    using the port number. For special QPs of all types, the port number is
    specified at QP creation time.
    
    Fixes: 9433c188915c ("IB/mlx4: Invoke UPDATE_QP for proxy QP1 on MAC changes")
    Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0af1f0d84d53c1a8d742eb290b3b2882fa64882f
Author: Eran Ben Elisha <eranbe@mellanox.com>
Date:   Thu Nov 10 11:31:00 2016 +0200

    IB/mlx4: When no DMFS for IPoIB, don't allow NET_IF QPs
    
    commit 1f22e454df2eb99ba6b7ace3f594f6805cdf5cbc upstream.
    
    According to the firmware spec, FLOW_STEERING_IB_UC_QP_RANGE command is
    supported only if dmfs_ipoib bit is set.
    
    If it isn't set we want to ensure allocating NET_IF QPs fail. We do so
    by filling out the allocation bitmap. By thus, the NET_IF QPs allocating
    function won't find any free QP and will fail.
    
    Fixes: c1c98501121e ('IB/mlx4: Add support for steerable IB UD QPs')
    Signed-off-by: Eran Ben Elisha <eranbe@mellanox.com>
    Signed-off-by: Daniel Jurgens <danielj@mellanox.com>
    Reviewed-by: Mark Bloch <markb@mellanox.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9e4fe773f7498c17f6bd74db2a643c2c318e1d32
Author: Jan Kara <jack@suse.cz>
Date:   Mon Dec 12 16:08:41 2016 +0100

    fsnotify: Fix possible use-after-free in inode iteration on umount
    
    commit 5716863e0f8251d3360d4cbfc0e44e08007075df upstream.
    
    fsnotify_unmount_inodes() plays complex tricks to pin next inode in the
    sb->s_inodes list when iterating over all inodes. Furthermore the code has a
    bug that if the current inode is the last on i_sb_list that does not have e.g.
    I_FREEING set, then we leave next_i pointing to inode which may get removed
    from the i_sb_list once we drop s_inode_list_lock thus resulting in
    use-after-free issues (usually manifesting as infinite looping in
    fsnotify_unmount_inodes()).
    
    Fix the problem by keeping current inode pinned somewhat longer. Then we can
    make the code much simpler and standard.
    
    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 7f5327ec10a09069756c83c45a08a98bf249f260
Author: Geliang Tang <geliangtang@163.com>
Date:   Thu Jan 14 15:16:56 2016 -0800

    fs/notify/inode_mark.c: use list_next_entry in fsnotify_unmount_inodes
    
    commit 1deaf9d19776916cd1c83191503bf327319a301a upstream.
    
    To make the intention clearer, use list_next_entry instead of
    list_entry.
    
    Signed-off-by: Geliang Tang <geliangtang@163.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    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 f649564dfebd5d85a855b327763a91ed0f4c6a11
Author: Ilya Dryomov <idryomov@gmail.com>
Date:   Fri Dec 2 16:35:09 2016 +0100

    libceph: verify authorize reply on connect
    
    commit 5c056fdc5b474329037f2aa18401bd73033e0ce0 upstream.
    
    After sending an authorizer (ceph_x_authorize_a + ceph_x_authorize_b),
    the client gets back a ceph_x_authorize_reply, which it is supposed to
    verify to ensure the authenticity and protect against replay attacks.
    The code for doing this is there (ceph_x_verify_authorizer_reply(),
    ceph_auth_verify_authorizer_reply() + plumbing), but it is never
    invoked by the the messenger.
    
    AFAICT this goes back to 2009, when ceph authentication protocols
    support was added to the kernel client in 4e7a5dcd1bba ("ceph:
    negotiate authentication protocol; implement AUTH_NONE protocol").
    
    The second param of ceph_connection_operations::verify_authorizer_reply
    is unused all the way down.  Pass 0 to facilitate backporting, and kill
    it in the next commit.
    
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Reviewed-by: Sage Weil <sage@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0d22b33aa66134d555aa53e4c759f7c1f9f14d16
Author: Jussi Laako <jussi@sonarnerd.net>
Date:   Mon Nov 28 11:27:45 2016 +0200

    ALSA: hiface: Fix M2Tech hiFace driver sampling rate change
    
    commit 995c6a7fd9b9212abdf01160f6ce3193176be503 upstream.
    
    Sampling rate changes after first set one are not reflected to the
    hardware, while driver and ALSA think the rate has been changed.
    
    Fix the problem by properly stopping the interface at the beginning of
    prepare call, allowing new rate to be set to the hardware. This keeps
    the hardware in sync with the driver.
    
    Signed-off-by: Jussi Laako <jussi@sonarnerd.net>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2f02a6c7e1df05a38b2b716ed60563335193bd08
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Sun Dec 11 13:27:42 2016 -0800

    hwmon: (g762) Fix overflows and crash seen when writing limit attributes
    
    commit 4fccd4a1e8944033bcd7693ea4e8fb478cd2059a upstream.
    
    Fix overflows seen when writing into fan speed limit attributes.
    Also fix crash due to division by zero, seen when certain very
    large values (such as 2147483648, or 0x80000000) are written
    into fan speed limit attributes.
    
    Fixes: 594fbe713bf60 ("Add support for GMT G762/G763 PWM fan controllers")
    Cc: Arnaud Ebalard <arno@natisbad.org>
    Reviewed-by: Jean Delvare <jdelvare@suse.de>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e727f969d7724fd4fa6f01143b86b6c0138b93d7
Author: Gerald Schaefer <gerald.schaefer@de.ibm.com>
Date:   Mon Nov 21 12:13:58 2016 +0100

    s390/vmlogrdr: fix IUCV buffer allocation
    
    commit 5457e03de918f7a3e294eb9d26a608ab8a579976 upstream.
    
    The buffer for iucv_message_receive() needs to be below 2 GB. In
    __iucv_message_receive(), the buffer address is casted to an u32, which
    would result in either memory corruption or an addressing exception when
    using addresses >= 2 GB.
    
    Fix this by using GFP_DMA for the buffer allocation.
    
    Signed-off-by: Gerald Schaefer <gerald.schaefer@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0acbc8e5462d4f74a56a01628bfc5d23e5889c8e
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Fri Nov 25 14:25:54 2016 +0300

    sparc: leon: Fix a retry loop in leon_init_timers()
    
    commit 601e6e3cc5bf6adb7d076fe24d10f6191a25ba9b upstream.
    
    The original code causes a static checker warning because it has a
    continue inside a do { } while (0); loop.  In that context, a continue
    and a break are equivalent.  The intent was to go back to the start of
    the loop so the continue was a bug.
    
    I've added a retry label at the start and changed the continue to a goto
    retry.  Then I removed the do { } while (0) loop and pulled the code in
    one indent level.
    
    Fixes: 2791c1a43900 ("SPARC/LEON: added support for selecting Timer Core and Timer within core")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit cc46a1d777a53f3de89300cbb6e10315fa951074
Author: Ben Hutchings <ben.hutchings@codethink.co.uk>
Date:   Thu Nov 24 22:10:23 2016 +0000

    kconfig/nconf: Fix hang when editing symbol with a long prompt
    
    commit 79e51b5c2deea542b3bb8c66e0d502230b017dde upstream.
    
    Currently it is impossible to edit the value of a config symbol with a
    prompt longer than (terminal width - 2) characters.  dialog_inputbox()
    calculates a negative x-offset for the input window and newwin() fails
    as this is invalid.  It also doesn't check for this failure, so it
    busy-loops calling wgetch(NULL) which immediately returns -1.
    
    The additions in the offset calculations also don't match the intended
    size of the window.
    
    Limit the window size and calculate the offset similarly to
    show_scroll_win().
    
    Fixes: 692d97c380c6 ("kconfig: new configuration interface (nconfig)")
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 88cf7e158fecf8a80ef83371d9e273151fa85b28
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Sat Dec 10 09:56:01 2016 -0500

    ext4: return -ENOMEM instead of success
    
    commit 578620f451f836389424833f1454eeeb2ffc9e9f upstream.
    
    We should set the error code if kzalloc() fails.
    
    Fixes: 67cf5b09a46f ("ext4: add the basic function for inline data support")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1bd9b8e017f73f41588348a947bd7e81f93b3da3
Author: Darrick J. Wong <darrick.wong@oracle.com>
Date:   Sat Dec 10 09:55:01 2016 -0500

    ext4: reject inodes with negative size
    
    commit 7e6e1ef48fc02f3ac5d0edecbb0c6087cd758d58 upstream.
    
    Don't load an inode with a negative size; this causes integer overflow
    problems in the VFS.
    
    [ Added EXT4_ERROR_INODE() to mark file system as corrupted. -TYT]
    
    Fixes: a48380f769df (ext4: rename i_dir_acl to i_size_high)
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    [bwh: Backported to 3.16: use EIO instead of EFSCORRUPTED]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 337547ca7f4b301d488266110acd57ecc45ddad4
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Mon Sep 5 21:42:32 2016 -0400

    nfs_write_end(): fix handling of short copies
    
    commit c0cf3ef5e0f47e385920450b245d22bead93e7ad upstream.
    
    What matters when deciding if we should make a page uptodate is
    not how much we _wanted_ to copy, but how much we actually have
    copied.  As it is, on architectures that do not zero tail on
    short copy we can leave uninitialized data in page marked uptodate.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 32df8b2e7fd3f803b66eed061dadc2f0a309f47b
Author: Steven Rostedt (Red Hat) <rostedt@goodmis.org>
Date:   Thu Dec 8 20:54:49 2016 -0500

    fgraph: Handle a case where a tracer ignores set_graph_notrace
    
    commit 794de08a16cf1fc1bf785dc48f66d36218cf6d88 upstream.
    
    Both the wakeup and irqsoff tracers can use the function graph tracer when
    the display-graph option is set. The problem is that they ignore the notrace
    file, and record the entry of functions that would be ignored by the
    function_graph tracer. This causes the trace->depth to be recorded into the
    ring buffer. The set_graph_notrace uses a trick by adding a large negative
    number to the trace->depth when a graph function is to be ignored.
    
    On trace output, the graph function uses the depth to record a stack of
    functions. But since the depth is negative, it accesses the array with a
    negative number and causes an out of bounds access that can cause a kernel
    oops or corrupt data.
    
    Have the print functions handle cases where a tracer still records functions
    even when they are in set_graph_notrace.
    
    Also add warnings if the depth is below zero before accessing the array.
    
    Note, the function graph logic will still prevent the return of these
    functions from being recorded, which means that they will be left hanging
    without a return. For example:
    
       # echo '*spin*' > set_graph_notrace
       # echo 1 > options/display-graph
       # echo wakeup > current_tracer
       # cat trace
       [...]
          _raw_spin_lock() {
            preempt_count_add() {
            do_raw_spin_lock() {
          update_rq_clock();
    
    Where it should look like:
    
          _raw_spin_lock() {
            preempt_count_add();
            do_raw_spin_lock();
          }
          update_rq_clock();
    
    Cc: Namhyung Kim <namhyung.kim@lge.com>
    Fixes: 29ad23b00474 ("ftrace: Add set_graph_notrace filter")
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 11c7f11f595f8086c254676102f2db75ac8e4cee
Author: Steven Rostedt (Red Hat) <rostedt@goodmis.org>
Date:   Thu Dec 8 12:48:26 2016 -0500

    ftrace/x86_32: Set ftrace_stub to weak to prevent gcc from using short jumps to it
    
    commit 847fa1a6d3d00f3bdf68ef5fa4a786f644a0dd67 upstream.
    
    With new binutils, gcc may get smart with its optimization and change a jmp
    from a 5 byte jump to a 2 byte one even though it was jumping to a global
    function. But that global function existed within a 2 byte radius, and gcc
    was able to optimize it. Unfortunately, that jump was also being modified
    when function graph tracing begins. Since ftrace expected that jump to be 5
    bytes, but it was only two, it overwrote code after the jump, causing a
    crash.
    
    This was fixed for x86_64 with commit 8329e818f149, with the same subject as
    this commit, but nothing was done for x86_32.
    
    Fixes: d61f82d06672 ("ftrace: use dynamic patching for updating mcount calls")
    Reported-by: Colin Ian King <colin.king@canonical.com>
    Tested-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    [bwh: Backported to 3.16: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 54404765f851e4de9fdd81071786cb62f792f59f
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Sun Nov 20 10:37:39 2016 -0800

    hwmon: (ds620) Fix overflows seen when writing temperature limits
    
    commit e36ce99ee0815d7919a7b589bfb66f3de50b6bc7 upstream.
    
    Module test reports:
    
    temp1_max: Suspected overflow: [160000 vs. 0]
    temp1_min: Suspected overflow: [160000 vs. 0]
    
    This is seen because the values passed when writing temperature limits
    are unbound.
    
    Reviewed-by: Jean Delvare <jdelvare@suse.de>
    Fixes: 6099469805c2 ("hwmon: Support for Dallas Semiconductor DS620")
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 851050f1a974e3cf984079ac4b838bd3d3d804ae
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Thu Dec 8 17:22:09 2016 +0100

    cfg80211/mac80211: fix BSS leaks when abandoning assoc attempts
    
    commit e6f462df9acd2a3295e5d34eb29e2823220cf129 upstream.
    
    When mac80211 abandons an association attempt, it may free
    all the data structures, but inform cfg80211 and userspace
    about it only by sending the deauth frame it received, in
    which case cfg80211 has no link to the BSS struct that was
    used and will not cfg80211_unhold_bss() it.
    
    Fix this by providing a way to inform cfg80211 of this with
    the BSS entry passed, so that it can clean up properly, and
    use this ability in the appropriate places in mac80211.
    
    This isn't ideal: some code is more or less duplicated and
    tracing is missing. However, it's a fairly small change and
    it's thus easier to backport - cleanups can come later.
    
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    [bwh: Backported to 3.16:
     - Drop changes to ieee80211_rx_mgmt_deauth(), ieee80211_mgd_deauth()
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0cf589e407c6868d257d9d6bb0199ea713016778
Author: Giuseppe Lippolis <giu.lippolis@gmail.com>
Date:   Tue Dec 6 21:24:19 2016 +0100

    USB: serial: option: add dlink dwm-158
    
    commit d8a12b7117b42fd708f1e908498350232bdbd5ff upstream.
    
    Adding registration for 3G modem DWM-158 in usb-serial-option
    
    Signed-off-by: Giuseppe Lippolis <giu.lippolis@gmail.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2c09e6ff275a6ecb9c1a48c2d5bff594939c2e5b
Author: Daniele Palmas <dnlplm@gmail.com>
Date:   Thu Dec 1 16:38:39 2016 +0100

    USB: serial: option: add support for Telit LE922A PIDs 0x1040, 0x1041
    
    commit 5b09eff0c379002527ad72ea5ea38f25da8a8650 upstream.
    
    This patch adds support for PIDs 0x1040, 0x1041 of Telit LE922A.
    
    Since the interface positions are the same than the ones used
    for other Telit compositions, previous defined blacklists are used.
    
    Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f2059c6707f8011c8f16033dc1c137b282ef432c
Author: Con Kolivas <con@kolivas.org>
Date:   Fri Dec 9 15:15:57 2016 +1100

    ALSA: usb-audio: Add QuickCam Communicate Deluxe/S7500 to volume_control_quirks
    
    commit 82ffb6fc637150b279f49e174166d2aa3853eaf4 upstream.
    
    The Logitech QuickCam Communicate Deluxe/S7500 microphone fails with the
    following warning.
    
    [    6.778995] usb 2-1.2.2.2: Warning! Unlikely big volume range (=3072),
    cval->res is probably wrong.
    [    6.778996] usb 2-1.2.2.2: [5] FU [Mic Capture Volume] ch = 1, val =
    4608/7680/1
    
    Adding it to the list of devices in volume_control_quirks makes it work
    properly, fixing related typo.
    
    Signed-off-by: Con Kolivas <kernel@kolivas.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7f02ae2d7873383ab7a0e8e3a17f99b898c6073d
Author: Shaohua Li <shli@fb.com>
Date:   Thu Dec 8 15:48:18 2016 -0800

    md: MD_RECOVERY_NEEDED is set for mddev->recovery
    
    commit 82a301cb0ea2df8a5c88213094a01660067c7fb4 upstream.
    
    Fixes: 90f5f7ad4f38("md: Wait for md_check_recovery before attempting device
    removal.")
    
    Reviewed-by: NeilBrown <neilb@suse.com>
    Signed-off-by: Shaohua Li <shli@fb.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5782a811cbdbf115a4b06eedfb774be3820c99be
Author: Benjamin Marzinski <bmarzins@redhat.com>
Date:   Wed Nov 30 17:56:14 2016 -0600

    dm space map metadata: fix 'struct sm_metadata' leak on failed create
    
    commit 314c25c56c1ee5026cf99c570bdfe01847927acb upstream.
    
    In dm_sm_metadata_create() we temporarily change the dm_space_map
    operations from 'ops' (whose .destroy function deallocates the
    sm_metadata) to 'bootstrap_ops' (whose .destroy function doesn't).
    
    If dm_sm_metadata_create() fails in sm_ll_new_metadata() or
    sm_ll_extend(), it exits back to dm_tm_create_internal(), which calls
    dm_sm_destroy() with the intention of freeing the sm_metadata, but it
    doesn't (because the dm_space_map operations is still set to
    'bootstrap_ops').
    
    Fix this by setting the dm_space_map operations back to 'ops' if
    dm_sm_metadata_create() fails when it is set to 'bootstrap_ops'.
    
    Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
    Acked-by: Joe Thornber <ejt@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8ef47f4f61970f8a7eea7f9eafcc3d97876d95e1
Author: Wei Yongjun <weiyongjun1@huawei.com>
Date:   Sat Sep 17 00:41:37 2016 +0000

    iw_cxgb4: Fix error return code in c4iw_rdev_open()
    
    commit 15f7e3c21b76598bc6e5816d2577ce843b2b963f upstream.
    
    Fix to return error code -ENOMEM from the __get_free_page() error
    handling case instead of 0, as done elsewhere in this function.
    
    Fixes: 05eb23893c2c ("cxgb4/iw_cxgb4: Doorbell Drop Avoidance Bug Fixes")
    Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
    Acked-by: Steve Wise <swise@opengridcomputing.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9ad4ebf472fc0ab6b0d88eb06201e7d03b1ea51d
Author: Michal Hocko <mhocko@suse.com>
Date:   Wed Dec 7 14:54:38 2016 +0100

    hotplug: Make register and unregister notifier API symmetric
    
    commit 777c6e0daebb3fcefbbd6f620410a946b07ef6d0 upstream.
    
    Yu Zhao has noticed that __unregister_cpu_notifier only unregisters its
    notifiers when HOTPLUG_CPU=y while the registration might succeed even
    when HOTPLUG_CPU=n if MODULE is enabled. This means that e.g. zswap
    might keep a stale notifier on the list on the manual clean up during
    the pool tear down and thus corrupt the list. Resulting in the following
    
    [  144.964346] BUG: unable to handle kernel paging request at ffff880658a2be78
    [  144.971337] IP: [<ffffffffa290b00b>] raw_notifier_chain_register+0x1b/0x40
    <snipped>
    [  145.122628] Call Trace:
    [  145.125086]  [<ffffffffa28e5cf8>] __register_cpu_notifier+0x18/0x20
    [  145.131350]  [<ffffffffa2a5dd73>] zswap_pool_create+0x273/0x400
    [  145.137268]  [<ffffffffa2a5e0fc>] __zswap_param_set+0x1fc/0x300
    [  145.143188]  [<ffffffffa2944c1d>] ? trace_hardirqs_on+0xd/0x10
    [  145.149018]  [<ffffffffa2908798>] ? kernel_param_lock+0x28/0x30
    [  145.154940]  [<ffffffffa2a3e8cf>] ? __might_fault+0x4f/0xa0
    [  145.160511]  [<ffffffffa2a5e237>] zswap_compressor_param_set+0x17/0x20
    [  145.167035]  [<ffffffffa2908d3c>] param_attr_store+0x5c/0xb0
    [  145.172694]  [<ffffffffa290848d>] module_attr_store+0x1d/0x30
    [  145.178443]  [<ffffffffa2b2b41f>] sysfs_kf_write+0x4f/0x70
    [  145.183925]  [<ffffffffa2b2a5b9>] kernfs_fop_write+0x149/0x180
    [  145.189761]  [<ffffffffa2a99248>] __vfs_write+0x18/0x40
    [  145.194982]  [<ffffffffa2a9a412>] vfs_write+0xb2/0x1a0
    [  145.200122]  [<ffffffffa2a9a732>] SyS_write+0x52/0xa0
    [  145.205177]  [<ffffffffa2ff4d97>] entry_SYSCALL_64_fastpath+0x12/0x17
    
    This can be even triggered manually by changing
    /sys/module/zswap/parameters/compressor multiple times.
    
    Fix this issue by making unregister APIs symmetric to the register so
    there are no surprises.
    
    Fixes: 47e627bc8c9a ("[PATCH] hotplug: Allow modules to use the cpu hotplug notifiers even if !CONFIG_HOTPLUG_CPU")
    Reported-and-tested-by: Yu Zhao <yuzhao@google.com>
    Signed-off-by: Michal Hocko <mhocko@suse.com>
    Cc: linux-mm@kvack.org
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Dan Streetman <ddstreet@ieee.org>
    Link: http://lkml.kernel.org/r/20161207135438.4310-1-mhocko@kernel.org
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    [bwh: Backported to 3.16: keep definition of cpu_notify_nofail() conditional
     on CONFIG_HOTPLUG_CPU]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2e77516251731da8c46ed90934e711259133c0a1
Author: Pan Bian <bianpan2016@163.com>
Date:   Thu Dec 1 14:25:44 2016 +0800

    clk: clk-wm831x: fix a logic error
    
    commit 20979202ee6e4c68dab7bcf408787225a656d18e upstream.
    
    Fix bug https://bugzilla.kernel.org/show_bug.cgi?id=188561. Function
    wm831x_clkout_is_prepared() returns "true" when it fails to read
    CLOCK_CONTROL_1. "true" means the device is already prepared. So
    return "true" on the read failure seems improper.
    
    Signed-off-by: Pan Bian <bianpan2016@163.com>
    Acked-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
    Fixes: f05259a6ffa4 ("clk: wm831x: Add initial WM831x clock driver")
    Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 077d7a1314b8ab402f8f649f7a2955246e8dc682
Author: Julien Grall <julien.grall@arm.com>
Date:   Wed Dec 7 12:24:40 2016 +0000

    arm/xen: Use alloc_percpu rather than __alloc_percpu
    
    commit 24d5373dda7c00a438d26016bce140299fae675e upstream.
    
    The function xen_guest_init is using __alloc_percpu with an alignment
    which are not power of two.
    
    However, the percpu allocator never supported alignments which are not power
    of two and has always behaved incorectly in thise case.
    
    Commit 3ca45a4 "percpu: ensure requested alignment is power of two"
    introduced a check which trigger a warning [1] when booting linux-next
    on Xen. But in reality this bug was always present.
    
    This can be fixed by replacing the call to __alloc_percpu with
    alloc_percpu. The latter will use an alignment which are a power of two.
    
    [1]
    
    [    0.023921] illegal size (48) or align (48) for percpu allocation
    [    0.024167] ------------[ cut here ]------------
    [    0.024344] WARNING: CPU: 0 PID: 1 at linux/mm/percpu.c:892 pcpu_alloc+0x88/0x6c0
    [    0.024584] Modules linked in:
    [    0.024708]
    [    0.024804] CPU: 0 PID: 1 Comm: swapper/0 Not tainted
    4.9.0-rc7-next-20161128 #473
    [    0.025012] Hardware name: Foundation-v8A (DT)
    [    0.025162] task: ffff80003d870000 task.stack: ffff80003d844000
    [    0.025351] PC is at pcpu_alloc+0x88/0x6c0
    [    0.025490] LR is at pcpu_alloc+0x88/0x6c0
    [    0.025624] pc : [<ffff00000818e678>] lr : [<ffff00000818e678>]
    pstate: 60000045
    [    0.025830] sp : ffff80003d847cd0
    [    0.025946] x29: ffff80003d847cd0 x28: 0000000000000000
    [    0.026147] x27: 0000000000000000 x26: 0000000000000000
    [    0.026348] x25: 0000000000000000 x24: 0000000000000000
    [    0.026549] x23: 0000000000000000 x22: 00000000024000c0
    [    0.026752] x21: ffff000008e97000 x20: 0000000000000000
    [    0.026953] x19: 0000000000000030 x18: 0000000000000010
    [    0.027155] x17: 0000000000000a3f x16: 00000000deadbeef
    [    0.027357] x15: 0000000000000006 x14: ffff000088f79c3f
    [    0.027573] x13: ffff000008f79c4d x12: 0000000000000041
    [    0.027782] x11: 0000000000000006 x10: 0000000000000042
    [    0.027995] x9 : ffff80003d847a40 x8 : 6f697461636f6c6c
    [    0.028208] x7 : 6120757063726570 x6 : ffff000008f79c84
    [    0.028419] x5 : 0000000000000005 x4 : 0000000000000000
    [    0.028628] x3 : 0000000000000000 x2 : 000000000000017f
    [    0.028840] x1 : ffff80003d870000 x0 : 0000000000000035
    [    0.029056]
    [    0.029152] ---[ end trace 0000000000000000 ]---
    [    0.029297] Call trace:
    [    0.029403] Exception stack(0xffff80003d847b00 to
                                   0xffff80003d847c30)
    [    0.029621] 7b00: 0000000000000030 0001000000000000
    ffff80003d847cd0 ffff00000818e678
    [    0.029901] 7b20: 0000000000000002 0000000000000004
    ffff000008f7c060 0000000000000035
    [    0.030153] 7b40: ffff000008f79000 ffff000008c4cd88
    ffff80003d847bf0 ffff000008101778
    [    0.030402] 7b60: 0000000000000030 0000000000000000
    ffff000008e97000 00000000024000c0
    [    0.030647] 7b80: 0000000000000000 0000000000000000
    0000000000000000 0000000000000000
    [    0.030895] 7ba0: 0000000000000035 ffff80003d870000
    000000000000017f 0000000000000000
    [    0.031144] 7bc0: 0000000000000000 0000000000000005
    ffff000008f79c84 6120757063726570
    [    0.031394] 7be0: 6f697461636f6c6c ffff80003d847a40
    0000000000000042 0000000000000006
    [    0.031643] 7c00: 0000000000000041 ffff000008f79c4d
    ffff000088f79c3f 0000000000000006
    [    0.031877] 7c20: 00000000deadbeef 0000000000000a3f
    [    0.032051] [<ffff00000818e678>] pcpu_alloc+0x88/0x6c0
    [    0.032229] [<ffff00000818ece8>] __alloc_percpu+0x18/0x20
    [    0.032409] [<ffff000008d9606c>] xen_guest_init+0x174/0x2f4
    [    0.032591] [<ffff0000080830f8>] do_one_initcall+0x38/0x130
    [    0.032783] [<ffff000008d90c34>] kernel_init_freeable+0xe0/0x248
    [    0.032995] [<ffff00000899a890>] kernel_init+0x10/0x100
    [    0.033172] [<ffff000008082ec0>] ret_from_fork+0x10/0x50
    
    Reported-by: Wei Chen <wei.chen@arm.com>
    Link: https://lkml.org/lkml/2016/11/28/669
    Signed-off-by: Julien Grall <julien.grall@arm.com>
    Signed-off-by: Stefano Stabellini <sstabellini@kernel.org>
    Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 590c5fe4fa90817061ead05094d09c1c720f2bc2
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Fri Dec 2 00:21:48 2016 -0500

    drm/radeon: add additional pci revision to dpm workaround
    
    commit 8729675c00a8d13cb2094d617d70a4a4da7d83c5 upstream.
    
    New variant.
    
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

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

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

commit d549a37067c99337f058491e4d20cfb1df963725
Author: Michel Dänzer <michel.daenzer@amd.com>
Date:   Thu Oct 27 14:54:31 2016 +0900

    drm/radeon: Hide the HW cursor while it's out of bounds
    
    commit 6b16cf7785a4200b1bddf4f70c9dda2efc49e278 upstream.
    
    Fixes hangs in that case under some circumstances.
    
    v2:
    * Only use non-0 x/yorigin if the cursor is (partially) outside of the
      top/left edge of the total surface with AVIVO/DCE
    
    Bugzilla: https://bugzilla.suse.com/show_bug.cgi?id=1000433
    Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com> (v1)
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    [bwh: Backported to 3.16:
     - Drop changes to radeon_crtc_cursor_set2()
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2e08ab8a957ddeab0dbe6303a8da5188551800db
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Dec 6 11:55:17 2016 +0100

    ALSA: hda - Gate the mic jack on HP Z1 Gen3 AiO
    
    commit f73cd43ac3b41c0f09a126387f302bbc0d9c726d upstream.
    
    HP Z1 Gen3 AiO with Conexant codec doesn't give an unsolicited event
    to the headset mic pin upon the jack plugging, it reports only to the
    headphone pin.  It results in the missing mic switching.  Let's fix up
    by simply gating the jack event.
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 54e3c3a922ee46f3514975f001a160555ce07cc2
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Sep 27 16:44:49 2016 +0200

    ALSA: hda - Add the top speaker pin config for HP Spectre x360
    
    commit 0eec880966e77bdbee0112989a2be67d92e39929 upstream.
    
    HP Spectre x360 with CX20724 codec has two speaker outputs while the
    BIOS sets up only the bottom one (NID 0x17) and disables the top one
    (NID 0x1d).
    
    This patch adds a fixup simply defining the proper pincfg for NID 0x1d
    so that the top speaker works as is.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=169071
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b88c1b1c172d481a48189a47aef79202b612f719
Author: David Henningsson <david.henningsson@canonical.com>
Date:   Tue Oct 7 10:18:40 2014 +0200

    ALSA: hda - Add inverted internal mic for Asus Aspire 4830T
    
    commit 522a7fa883e04725806308a5b663ce1f570e5870 upstream.
    
    Alsa-info at https://launchpadlibrarian.net/186697318/alsa-info.txt.37fYWkaJRc
    
    Reported-by: Tomas Nilsson <tomas.k.nilsson@gmail.com>
    Signed-off-by: David Henningsson <david.henningsson@canonical.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0ba4c6eaaacbcc4b18f51bb3b1567c65a8fecca9
Author: Pavel Shilovsky <pshilov@microsoft.com>
Date:   Fri Nov 4 11:50:31 2016 -0700

    CIFS: Fix a possible memory corruption during reconnect
    
    commit 53e0e11efe9289535b060a51d4cf37c25e0d0f2b upstream.
    
    We can not unlock/lock cifs_tcp_ses_lock while walking through ses
    and tcon lists because it can corrupt list iterator pointers and
    a tcon structure can be released if we don't hold an extra reference.
    Fix it by moving a reconnect process to a separate delayed work
    and acquiring a reference to every tcon that needs to be reconnected.
    Also do not send an echo request on newly established connections.
    
    Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6359e20b91dd72fc5268f61ceb9dea9775d96555
Author: Pavel Shilovsky <pshilov@microsoft.com>
Date:   Tue Nov 29 16:14:43 2016 -0800

    CIFS: Fix a possible memory corruption in push locks
    
    commit e3d240e9d505fc67f8f8735836df97a794bbd946 upstream.
    
    If maxBuf is not 0 but less than a size of SMB2 lock structure
    we can end up with a memory corruption.
    
    Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b225d49f0342e7a47cd9f69d4b31a9c0d4046679
Author: Pavel Shilovsky <pshilov@microsoft.com>
Date:   Tue Nov 29 11:30:58 2016 -0800

    CIFS: Fix missing nls unload in smb2_reconnect()
    
    commit 4772c79599564bd08ee6682715a7d3516f67433f upstream.
    
    Acked-by: Sachin Prabhu <sprabhu@redhat.com>
    Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit fe60fea6a8e569c8247629e2886acc78a807cb45
Author: Nathaniel Quillin <ndq@google.com>
Date:   Mon Dec 5 06:53:00 2016 -0800

    USB: cdc-acm: add device id for GW Instek AFG-125
    
    commit 301216044e4c27d5a7323c1fa766266fad00db5e upstream.
    
    Add device-id entry for GW Instek AFG-125, which has a byte swapped
    bInterfaceSubClass (0x20).
    
    Signed-off-by: Nathaniel Quillin <ndq@google.com>
    Acked-by: Oliver Neukum <oneukum@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8ca146650ff60d6f6b674c1d359b627d846e7f78
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Fri Dec 2 15:14:20 2016 +0200

    mmc: sdhci: Fix recovery from tuning timeout
    
    commit 61e53bd0047d58caee0c7170613045bf96de4458 upstream.
    
    Clearing the tuning bits should reset the tuning circuit. However there is
    more to do. Reset the command and data lines for good measure, and then
    for eMMC ensure the card is not still trying to process a tuning command by
    sending a stop command.
    
    Note the JEDEC eMMC specification says the stop command (CMD12) can be used
    to stop a tuning command (CMD21) whereas the SD specification is silent on
    the subject with respect to the SD tuning command (CMD19). Considering that
    CMD12 is not a valid SDIO command, the stop command is sent only when the
    tuning command is CMD21 i.e. for eMMC. That addresses cases seen so far
    which have been on eMMC.
    
    Note that this replaces the commit fe5fb2e3b58f ("mmc: sdhci: Reset cmd and
    data circuits after tuning failure") which is being reverted for v4.9+.
    
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Tested-by: Dan O'Donovan <dan@emutex.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 578475bbfe57493c018f5e928fb7ad561eaf96bd
Author: Nicholas Piggin <npiggin@gmail.com>
Date:   Mon Nov 28 12:42:26 2016 +1100

    powerpc/boot: Request no dynamic linker for boot wrapper
    
    commit ff45000fcb56b5b0f1a14a865d3541746d838a0a upstream.
    
    The boot wrapper performs its own relocations and does not require
    PT_INTERP segment. However currently we don't tell the linker that.
    
    Prior to binutils 2.28 that works OK. But since binutils commit
    1a9ccd70f9a7 ("Fix the linker so that it will not silently generate ELF
    binaries with invalid program headers. Fix readelf to report such
    invalid binaries.") binutils tries to create a program header segment
    due to PT_INTERP, and the link fails because there is no space for it:
    
      ld: arch/powerpc/boot/zImage.pseries: Not enough room for program headers, try linking with -N
      ld: final link failed: Bad value
    
    So tell the linker not to do that, by passing --no-dynamic-linker.
    
    Reported-by: Anton Blanchard <anton@samba.org>
    Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
    [mpe: Drop dependency on ld-version.sh and massage change log]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d935bf78cf0e721ddfe6d6b3fa5214e0f3494eb3
Author: Eric Sandeen <sandeen@sandeen.net>
Date:   Mon Dec 5 12:31:06 2016 +1100

    xfs: set AGI buffer type in xlog_recover_clear_agi_bucket
    
    commit 6b10b23ca94451fae153a5cc8d62fd721bec2019 upstream.
    
    xlog_recover_clear_agi_bucket didn't set the
    type to XFS_BLFT_AGI_BUF, so we got a warning during log
    replay (or an ASSERT on a debug build).
    
        XFS (md0): Unknown buffer type 0!
        XFS (md0): _xfs_buf_ioapply: no ops on block 0xaea8802/0x1
    
    Fix this, as was done in f19b872b for 2 other locations
    with the same problem.
    
    Signed-off-by: Eric Sandeen <sandeen@redhat.com>
    Reviewed-by: Brian Foster <bfoster@redhat.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Dave Chinner <david@fromorbit.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 21ef8a83c876f77265e2d76ad1b30e0060b93dc2
Author: Trond Myklebust <trond.myklebust@primarydata.com>
Date:   Sat Nov 19 10:54:55 2016 -0500

    NFS: Fix a performance regression in readdir
    
    commit 79f687a3de9e3ba2518b4ea33f38ca6cbe9133eb upstream.
    
    Ben Coddington reports that commit 311324ad1713, by adding the function
    nfs_dir_mapping_need_revalidate() that checks page cache validity on
    each call to nfs_readdir() causes a performance regression when
    the directory is being modified.
    
    If the directory is changing while we're iterating through the directory,
    POSIX does not require us to invalidate the page cache unless the user
    calls rewinddir(). However, we still do want to ensure that we use
    readdirplus in order to avoid a load of stat() calls when the user
    is doing an 'ls -l' workload.
    
    The fix should be to invalidate the page cache immediately when we're
    setting the NFS_INO_ADVISE_RDPLUS bit.
    
    Reported-by: Benjamin Coddington <bcodding@redhat.com>
    Fixes: 311324ad1713 ("NFS: Be more aggressive in using readdirplus...")
    Reviewed-by: Benjamin Coddington <bcodding@redhat.com>
    Tested-by: Benjamin Coddington <bcodding@redhat.com>
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit dac939b8259bbb024afcf936438be4f1e0e441c0
Author: Rabin Vincent <rabinv@axis.com>
Date:   Thu Dec 1 09:18:28 2016 +0100

    block: protect iterate_bdevs() against concurrent close
    
    commit af309226db916e2c6e08d3eba3fa5c34225200c4 upstream.
    
    If a block device is closed while iterate_bdevs() is handling it, the
    following NULL pointer dereference occurs because bdev->b_disk is NULL
    in bdev_get_queue(), which is called from blk_get_backing_dev_info() (in
    turn called by the mapping_cap_writeback_dirty() call in
    __filemap_fdatawrite_range()):
    
     BUG: unable to handle kernel NULL pointer dereference at 0000000000000508
     IP: [<ffffffff81314790>] blk_get_backing_dev_info+0x10/0x20
     PGD 9e62067 PUD 9ee8067 PMD 0
     Oops: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC
     Modules linked in:
     CPU: 1 PID: 2422 Comm: sync Not tainted 4.5.0-rc7+ #400
     Hardware name: QEMU Standard PC (i440FX + PIIX, 1996)
     task: ffff880009f4d700 ti: ffff880009f5c000 task.ti: ffff880009f5c000
     RIP: 0010:[<ffffffff81314790>]  [<ffffffff81314790>] blk_get_backing_dev_info+0x10/0x20
     RSP: 0018:ffff880009f5fe68  EFLAGS: 00010246
     RAX: 0000000000000000 RBX: ffff88000ec17a38 RCX: ffffffff81a4e940
     RDX: 7fffffffffffffff RSI: 0000000000000000 RDI: ffff88000ec176c0
     RBP: ffff880009f5fe68 R08: 0000000000000000 R09: 0000000000000000
     R10: 0000000000000001 R11: 0000000000000000 R12: ffff88000ec17860
     R13: ffffffff811b25c0 R14: ffff88000ec178e0 R15: ffff88000ec17a38
     FS:  00007faee505d700(0000) GS:ffff88000fb00000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
     CR2: 0000000000000508 CR3: 0000000009e8a000 CR4: 00000000000006e0
     Stack:
      ffff880009f5feb8 ffffffff8112e7f5 0000000000000000 7fffffffffffffff
      0000000000000000 0000000000000000 7fffffffffffffff 0000000000000001
      ffff88000ec178e0 ffff88000ec17860 ffff880009f5fec8 ffffffff8112e81f
     Call Trace:
      [<ffffffff8112e7f5>] __filemap_fdatawrite_range+0x85/0x90
      [<ffffffff8112e81f>] filemap_fdatawrite+0x1f/0x30
      [<ffffffff811b25d6>] fdatawrite_one_bdev+0x16/0x20
      [<ffffffff811bc402>] iterate_bdevs+0xf2/0x130
      [<ffffffff811b2763>] sys_sync+0x63/0x90
      [<ffffffff815d4272>] entry_SYSCALL_64_fastpath+0x12/0x76
     Code: 0f 1f 44 00 00 48 8b 87 f0 00 00 00 55 48 89 e5 <48> 8b 80 08 05 00 00 5d
     RIP  [<ffffffff81314790>] blk_get_backing_dev_info+0x10/0x20
      RSP <ffff880009f5fe68>
     CR2: 0000000000000508
     ---[ end trace 2487336ceb3de62d ]---
    
    The crash is easily reproducible by running the following command, if an
    msleep(100) is inserted before the call to func() in iterate_devs():
    
     while :; do head -c1 /dev/nullb0; done > /dev/null & while :; do sync; done
    
    Fix it by holding the bd_mutex across the func() call and only calling
    func() if the bdev is opened.
    
    Fixes: 5c0d6b60a0ba ("vfs: Create function for iterating over block devices")
    Reported-and-tested-by: Wei Fang <fangwei1@huawei.com>
    Signed-off-by: Rabin Vincent <rabinv@axis.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e50167ae9fd50c3188374aa257e60f3cc6f9ba40
Author: Johan Hovold <johan@kernel.org>
Date:   Wed Nov 16 17:31:30 2016 +0000

    bus: vexpress-config: fix device reference leak
    
    commit c090959b9dd8c87703e275079aa4b4a824ba3f8e upstream.
    
    Make sure to drop the reference to the parent device taken by
    class_find_device() after populating the bus.
    
    Fixes: 3b9334ac835b ("mfd: vexpress: Convert custom func API to regmap")
    Acked-by: Sudeep Holla <sudeep.holla@arm.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 413bd41e9d8b99d6bd1d1370f7a44db318771fbc
Author: Robbie Ko <robbieko@synology.com>
Date:   Fri Oct 7 17:30:47 2016 +0800

    Btrfs: fix tree search logic when replaying directory entry deletes
    
    commit 2a7bf53f577e49c43de4ffa7776056de26db65d9 upstream.
    
    If a log tree has a layout like the following:
    
    leaf N:
            ...
            item 240 key (282 DIR_LOG_ITEM 0) itemoff 8189 itemsize 8
                    dir log end 1275809046
    leaf N + 1:
            item 0 key (282 DIR_LOG_ITEM 3936149215) itemoff 16275 itemsize 8
                    dir log end 18446744073709551615
            ...
    
    When we pass the value 1275809046 + 1 as the parameter start_ret to the
    function tree-log.c:find_dir_range() (done by replay_dir_deletes()), we
    end up with path->slots[0] having the value 239 (points to the last item
    of leaf N, item 240). Because the dir log item in that position has an
    offset value smaller than *start_ret (1275809046 + 1) we need to move on
    to the next leaf, however the logic for that is wrong since it compares
    the current slot to the number of items in the leaf, which is smaller
    and therefore we don't lookup for the next leaf but instead we set the
    slot to point to an item that does not exist, at slot 240, and we later
    operate on that slot which has unexpected content or in the worst case
    can result in an invalid memory access (accessing beyond the last page
    of leaf N's extent buffer).
    
    So fix the logic that checks when we need to lookup at the next leaf
    by first incrementing the slot and only after to check if that slot
    is beyond the last item of the current leaf.
    
    Signed-off-by: Robbie Ko <robbieko@synology.com>
    Reviewed-by: Filipe Manana <fdmanana@suse.com>
    Fixes: e02119d5a7b4 (Btrfs: Add a write ahead tree log to optimize synchronous operations)
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    [Modified changelog for clarity and correctness]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1fb7ba01a94db18b3ee660436d4e59ab1947be79
Author: Geoff Levand <geoff@infradead.org>
Date:   Tue Nov 29 10:47:32 2016 -0800

    powerpc/ps3: Fix system hang with GCC 5 builds
    
    commit 6dff5b67054e17c91bd630bcdda17cfca5aa4215 upstream.
    
    GCC 5 generates different code for this bootwrapper null check that
    causes the PS3 to hang very early in its bootup. This check is of
    limited value, so just get rid of it.
    
    Signed-off-by: Geoff Levand <geoff@infradead.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e394ed5555dcd58c71b650a4bab741d62d950350
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Tue Nov 29 17:21:05 2016 -0800

    drivers: base: dma-mapping: Fix typo in dmam_alloc_non_coherent comments
    
    commit cd74da957ba2d03787ede1c22bbb183d9c728aad upstream.
    
    The function we are wrapping is named dma_alloc_noncoherent, and
    not dma_alloc_non_coherent.
    
    Fixes: 9ac7849e35f70 ("devres: device resource management")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 12c04a5ae811d94c19ff3c34cb2b69939143f4ea
Author: Pan Bian <bianpan2016@163.com>
Date:   Tue Nov 29 16:55:02 2016 +0100

    USB: serial: kl5kusb105: abort on open exception path
    
    commit 3c3dd1e058cb01e835dcade4b54a6f13ffaeaf7c upstream.
    
    Function klsi_105_open() calls usb_control_msg() (to "enable read") and
    checks its return value. When the return value is unexpected, it only
    assigns the error code to the return variable retval, but does not
    terminate the exception path. This patch fixes the bug by inserting
    "goto err_generic_close;" when the call to usb_control_msg() fails.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Pan Bian <bianpan2016@163.com>
    [johan: rebase on prerequisite fix and amend commit message]
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8aa598bcbacbab3b2fe7693b37bfc54ee504fd3d
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Nov 29 16:55:01 2016 +0100

    USB: serial: kl5kusb105: fix open error path
    
    commit 6774d5f53271d5f60464f824748995b71da401ab upstream.
    
    Kill urbs and disable read before returning from open on failure to
    retrieve the line state.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f7e8bc577989b5190ae7e5c71d49ee2d5d39fdb7
Author: Krzysztof Kozlowski <krzk@kernel.org>
Date:   Tue Nov 22 19:22:44 2016 +0200

    thermal: hwmon: Properly report critical temperature in sysfs
    
    commit f37fabb8643eaf8e3b613333a72f683770c85eca upstream.
    
    In the critical sysfs entry the thermal hwmon was returning wrong
    temperature to the user-space.  It was reporting the temperature of the
    first trip point instead of the temperature of critical trip point.
    
    For example:
            /sys/class/hwmon/hwmon0/temp1_crit:50000
            /sys/class/thermal/thermal_zone0/trip_point_0_temp:50000
            /sys/class/thermal/thermal_zone0/trip_point_0_type:active
            /sys/class/thermal/thermal_zone0/trip_point_3_temp:120000
            /sys/class/thermal/thermal_zone0/trip_point_3_type:critical
    
    Since commit e68b16abd91d ("thermal: add hwmon sysfs I/F") the driver
    have been registering a sysfs entry if get_crit_temp() callback was
    provided.  However when accessed, it was calling get_trip_temp() instead
    of the get_crit_temp().
    
    Fixes: e68b16abd91d ("thermal: add hwmon sysfs I/F")
    Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
    Signed-off-by: Zhang Rui <rui.zhang@intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 56df5a86bcffc6789d3de58a4cf2351e09bd45ae
Author: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
Date:   Sun Nov 27 19:32:32 2016 +0300

    md/raid5: limit request size according to implementation limits
    
    commit e8d7c33232e5fdfa761c3416539bc5b4acd12db5 upstream.
    
    Current implementation employ 16bit counter of active stripes in lower
    bits of bio->bi_phys_segments. If request is big enough to overflow
    this counter bio will be completed and freed too early.
    
    Fortunately this not happens in default configuration because several
    other limits prevent that: stripe_cache_size * nr_disks effectively
    limits count of active stripes. And small max_sectors_kb at lower
    disks prevent that during normal read/write operations.
    
    Overflow easily happens in discard if it's enabled by module parameter
    "devices_handle_discard_safely" and stripe_cache_size is set big enough.
    
    This patch limits requests size with 256Mb - 8Kb to prevent overflows.
    
    Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Cc: Shaohua Li <shli@kernel.org>
    Cc: Neil Brown <neilb@suse.com>
    Signed-off-by: Shaohua Li <shli@fb.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 37fc9bf0854c387b5f73229a11068020c4c9f85a
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Nov 29 22:28:40 2016 +0100

    ALSA: usb-audio: Fix bogus error return in snd_usb_create_stream()
    
    commit 4763601a56f155ddf94ef35fc2c41504a2de15f5 upstream.
    
    The function returns -EINVAL even if it builds the stream properly.
    The bogus error code sneaked in during the code refactoring, but it
    wasn't noticed until now since the returned error code itself is
    ignored in anyway.  Kill it here, but there is no behavior change by
    this patch, obviously.
    
    Fixes: e5779998bf8b ('ALSA: usb-audio: refactor code')
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3fbf28600c09d60f44378dcc2f1395f37f93bc96
Author: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Date:   Mon Nov 21 09:56:06 2016 -0500

    xen/gntdev: Use VM_MIXEDMAP instead of VM_IO to avoid NUMA balancing
    
    commit 30faaafdfa0c754c91bac60f216c9f34a2bfdf7e upstream.
    
    Commit 9c17d96500f7 ("xen/gntdev: Grant maps should not be subject to
    NUMA balancing") set VM_IO flag to prevent grant maps from being
    subjected to NUMA balancing.
    
    It was discovered recently that this flag causes get_user_pages() to
    always fail with -EFAULT.
    
    check_vma_flags
    __get_user_pages
    __get_user_pages_locked
    __get_user_pages_unlocked
    get_user_pages_fast
    iov_iter_get_pages
    dio_refill_pages
    do_direct_IO
    do_blockdev_direct_IO
    do_blockdev_direct_IO
    ext4_direct_IO_read
    generic_file_read_iter
    aio_run_iocb
    
    (which can happen if guest's vdisk has direct-io-safe option).
    
    To avoid this let's use VM_MIXEDMAP flag instead --- it prevents
    NUMA balancing just as VM_IO does and has no effect on
    check_vma_flags().
    
    
    Reported-by: Olaf Hering <olaf@aepfle.de>
    Suggested-by: Hugh Dickins <hughd@google.com>
    Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Acked-by: Hugh Dickins <hughd@google.com>
    Tested-by: Olaf Hering <olaf@aepfle.de>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b737db95d2bbc56d642ab437288262d937184a17
Author: Nicolai Stange <nicstange@gmail.com>
Date:   Sun Nov 20 19:57:23 2016 +0100

    f2fs: set ->owner for debugfs status file's file_operations
    
    commit 05e6ea2685c964db1e675a24a4f4e2adc22d2388 upstream.
    
    The struct file_operations instance serving the f2fs/status debugfs file
    lacks an initialization of its ->owner.
    
    This means that although that file might have been opened, the f2fs module
    can still get removed. Any further operation on that opened file, releasing
    included,  will cause accesses to unmapped memory.
    
    Indeed, Mike Marshall reported the following:
    
      BUG: unable to handle kernel paging request at ffffffffa0307430
      IP: [<ffffffff8132a224>] full_proxy_release+0x24/0x90
      <...>
      Call Trace:
       [] __fput+0xdf/0x1d0
       [] ____fput+0xe/0x10
       [] task_work_run+0x8e/0xc0
       [] do_exit+0x2ae/0xae0
       [] ? __audit_syscall_entry+0xae/0x100
       [] ? syscall_trace_enter+0x1ca/0x310
       [] do_group_exit+0x44/0xc0
       [] SyS_exit_group+0x14/0x20
       [] do_syscall_64+0x61/0x150
       [] entry_SYSCALL64_slow_path+0x25/0x25
      <...>
      ---[ end trace f22ae883fa3ea6b8 ]---
      Fixing recursive fault but reboot is needed!
    
    Fix this by initializing the f2fs/status file_operations' ->owner with
    THIS_MODULE.
    
    This will allow debugfs to grab a reference to the f2fs module upon any
    open on that file, thus preventing it from getting removed.
    
    Fixes: 902829aa0b72 ("f2fs: move proc files to debugfs")
    Reported-by: Mike Marshall <hubcap@omnibond.com>
    Reported-by: Martin Brandenburg <martin@omnibond.com>
    Signed-off-by: Nicolai Stange <nicstange@gmail.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 67afda460164fb756416bb543c0344ac8dd5cfdf
Author: Kirtika Ruchandani <kirtika@chromium.org>
Date:   Thu Nov 24 16:51:17 2016 -0800

    regmap: cache: Remove unused 'blksize' variable
    
    commit daaadbf07433b15c452b2ff411a293b2ccd98e03 upstream.
    
    Commit 2cbbb579bcbe ("regmap: Add the LZO cache support") introduced
    'blksize' in  regcache_lzo_read() and regcache_lzo_write(), that is
    set but not used. Compiling with W=1 gives the following warnings,
    fix them.
    
    drivers/base/regmap/regcache-lzo.c: In function ‘regcache_lzo_read’:
    drivers/base/regmap/regcache-lzo.c:239:9: warning: variable ‘blksize’ set but not used [-Wunused-but-set-variable]
      size_t blksize, tmp_dst_len;
             ^
    drivers/base/regmap/regcache-lzo.c: In function ‘regcache_lzo_write’:
    drivers/base/regmap/regcache-lzo.c:278:9: warning: variable ‘blksize’ set but not used [-Wunused-but-set-variable]
      size_t blksize, tmp_dst_len;
             ^
    
    These are harmless warnings and are only being fixed to reduce the
    noise with W=1 in the kernel.
    
    Fixes: 2cbbb579bcbe ("regmap: Add the LZO cache support")
    Cc: Dimitris Papastamos <dp@opensource.wolfsonmicro.com>
    Cc: Mark Brown <broonie@opensource.wolfsonmicro.com>
    Signed-off-by: Kirtika Ruchandani <kirtika@chromium.org>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 87acb2be3cbb668669b6bdaf99a2663857faa441
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue Nov 22 18:52:17 2016 -0200

    DaVinci-VPFE-Capture: fix error handling
    
    commit d3d83ee20afda16ad0133ba00f63c11a8d842a35 upstream.
    
    A recent cleanup had the right idea to remove the initialization
    of the error variable, but missed the actual benefit of that,
    which is that we get warnings if there is a bug in it. Now
    we get a warning about a bug that was introduced by this cleanup:
    
    drivers/media/platform/davinci/vpfe_capture.c: In function 'vpfe_probe':
    drivers/media/platform/davinci/vpfe_capture.c:1992:9: error: 'ret' may be used uninitialized in this function [-Werror=maybe-uninitialized]
    
    This adds the missing initialization that the warning is about,
    and another one that was preexisting and that we did not get
    a warning for. That second bug has existed since the driver
    was first added.
    
    Fixes: efb74461f5a6 ("[media] DaVinci-VPFE-Capture: Delete an unnecessary variable initialisation in vpfe_probe()")
    Fixes: 7da8a6cb3e5b ("V4L/DVB (12248): v4l: vpfe capture bridge driver for DM355 and DM6446")
    
    [mchehab@s-opensource.com: fix a merge conflict]
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6c7906efaa2e6e69fa4302024f3ed6cf3f4fbf80
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Fri Nov 18 09:30:24 2016 -0200

    staging: media: davinci_vpfe: unlock on error in vpfe_reqbufs()
    
    commit c4a407b91f4b644145492e28723f9f880efb1da0 upstream.
    
    We should unlock before returning this error code in vpfe_reqbufs().
    
    Fixes: 622897da67b3 ("[media] davinci: vpfe: add v4l2 video driver support")
    
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 36d4a3eab2cb0e4e64eead1444b6b4d4c347c08b
Author: Ondrej Kozina <okozina@redhat.com>
Date:   Wed Nov 2 15:02:08 2016 +0100

    dm crypt: mark key as invalid until properly loaded
    
    commit 265e9098bac02bc5e36cda21fdbad34cb5b2f48d upstream.
    
    In crypt_set_key(), if a failure occurs while replacing the old key
    (e.g. tfm->setkey() fails) the key must not have DM_CRYPT_KEY_VALID flag
    set.  Otherwise, the crypto layer would have an invalid key that still
    has DM_CRYPT_KEY_VALID flag set.
    
    Signed-off-by: Ondrej Kozina <okozina@redhat.com>
    Reviewed-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 50bf72d08f1aeac1b398307003d5fe6608f3a499
Author: Paul Mackerras <paulus@ozlabs.org>
Date:   Mon Nov 7 15:09:58 2016 +1100

    KVM: PPC: Book3S HV: Save/restore XER in checkpointed register state
    
    commit 0d808df06a44200f52262b6eb72bcb6042f5a7c5 upstream.
    
    When switching from/to a guest that has a transaction in progress,
    we need to save/restore the checkpointed register state.  Although
    XER is part of the CPU state that gets checkpointed, the code that
    does this saving and restoring doesn't save/restore XER.
    
    This fixes it by saving and restoring the XER.  To allow userspace
    to read/write the checkpointed XER value, we also add a new ONE_REG
    specifier.
    
    The visible effect of this bug is that the guest may see its XER
    value being corrupted when it uses transactions.
    
    Fixes: e4e38121507a ("KVM: PPC: Book3S HV: Add transactional memory support")
    Fixes: 0a8eccefcb34 ("KVM: PPC: Book3S HV: Add missing code for transaction reclaim on guest exit")
    Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
    Reviewed-by: Thomas Huth <thuth@redhat.com>
    Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
    [bwh: Backported to 3.16: adjust context, spacing]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0a295bf1d1aab79a115af903278f749dd64fe55d
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Fri Nov 18 13:37:47 2016 -0500

    ext4: add sanity checking to count_overhead()
    
    commit c48ae41bafe31e9a66d8be2ced4e42a6b57fa814 upstream.
    
    The commit "ext4: sanity check the block and cluster size at mount
    time" should prevent any problems, but in case the superblock is
    modified while the file system is mounted, add an extra safety check
    to make sure we won't overrun the allocated buffer.
    
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6191bec70789886df39c9ee76a90819c9bcf102b
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Fri Nov 18 13:28:30 2016 -0500

    ext4: use more strict checks for inodes_per_block on mount
    
    commit cd6bb35bf7f6d7d922509bf50265383a0ceabe96 upstream.
    
    Centralize the checks for inodes_per_block and be more strict to make
    sure the inodes_per_block_group can't end up being zero.
    
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Reviewed-by: Andreas Dilger <adilger@dilger.ca>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit dddc6d46f6a2b4009e4143e8001046eb0eb7cda1
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Fri Nov 18 13:24:26 2016 -0500

    ext4: fix in-superblock mount options processing
    
    commit 5aee0f8a3f42c94c5012f1673420aee96315925a upstream.
    
    Fix a large number of problems with how we handle mount options in the
    superblock.  For one, if the string in the superblock is long enough
    that it is not null terminated, we could run off the end of the string
    and try to interpret superblocks fields as characters.  It's unlikely
    this will cause a security problem, but it could result in an invalid
    parse.  Also, parse_options is destructive to the string, so in some
    cases if there is a comma-separated string, it would be modified in
    the superblock.  (Fortunately it only happens on file systems with a
    1k block size.)
    
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    [bwh: Backported to 3.16: adjust indentation]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2ccc3593d62ca53af746f00651afd3c49b79211d
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Nov 1 11:40:25 2016 +0100

    USB: phy: am335x-control: fix device and of_node leaks
    
    commit 015105b12183556771e111e93f5266851e7c5582 upstream.
    
    Make sure to drop the references taken by of_parse_phandle() and
    bus_find_device() before returning from am335x_get_phy_control().
    
    Note that there is no guarantee that the devres-managed struct
    phy_control will be valid for the lifetime of the sibling phy device
    regardless of this change.
    
    Fixes: 3bb869c8b3f1 ("usb: phy: Add AM335x PHY driver")
    Acked-by: Bin Liu <b-liu@ti.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 81f3d5f2d33ae47cb64efb3ec4edd511bcd4829f
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Thu Nov 17 11:14:14 2016 +0200

    usb: hub: Fix auto-remount of safely removed or ejected USB-3 devices
    
    commit 37be66767e3cae4fd16e064d8bb7f9f72bf5c045 upstream.
    
    USB-3 does not have any link state that will avoid negotiating a connection
    with a plugged-in cable but will signal the host when the cable is
    unplugged.
    
    For USB-3 we used to first set the link to Disabled, then to RxDdetect to
    be able to detect cable connects or disconnects. But in RxDetect the
    connected device is detected again and eventually enabled.
    
    Instead set the link into U3 and disable remote wakeups for the device.
    This is what Windows does, and what Alan Stern suggested.
    
    Cc: Alan Stern <stern@rowland.harvard.edu>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e658804f82a8af5fafb501ce5a17e2f9415d5244
Author: Larry Finger <Larry.Finger@lwfinger.net>
Date:   Sat Nov 5 14:08:57 2016 -0500

    ssb: Fix error routine when fallback SPROM fails
    
    commit 8052d7245b6089992343c80b38b14dbbd8354651 upstream.
    
    When there is a CRC error in the SPROM read from the device, the code
    attempts to handle a fallback SPROM. When this also fails, the driver
    returns zero rather than an error code.
    
    Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4731260ad47d173ad7de124e8540863866db9456
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Wed Nov 16 16:08:34 2016 +0100

    scsi: mvsas: fix command_active typo
    
    commit af15769ffab13d777e55fdef09d0762bf0c249c4 upstream.
    
    gcc-7 notices that the condition in mvs_94xx_command_active looks
    suspicious:
    
    drivers/scsi/mvsas/mv_94xx.c: In function 'mvs_94xx_command_active':
    drivers/scsi/mvsas/mv_94xx.c:671:15: error: '<<' in boolean context, did you mean '<' ? [-Werror=int-in-bool-context]
    
    This was introduced when the mv_printk() statement got added, and leads
    to the condition being ignored. This is probably harmless.
    
    Changing '&&' to '&' makes the code look reasonable, as we check the
    command bit before setting and printing it.
    
    Fixes: a4632aae8b66 ("[SCSI] mvsas: Add new macros and functions")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f22f6b3404f9f6be811b31a0751a55d064687fea
Author: Saeed Mahameed <saeedm@mellanox.com>
Date:   Thu Nov 10 11:30:59 2016 +0200

    IB/mlx4: Fix port query for 56Gb Ethernet links
    
    commit 6fa26208206c406fa529cd73f7ae6bf4181e270b upstream.
    
    Report the correct speed in the port attributes when using a 56Gbps
    ethernet link.  Without this change the field is incorrectly set to 10.
    
    Fixes: a9c766bb75ee ('IB/mlx4: Fix info returned when querying IBoE ports')
    Fixes: 2e96691c31ec ('IB: Use central enum for speed instead of hard-coded values')
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Yishai Hadas <yishaih@mellanox.com>
    Signed-off-by: Daniel Jurgens <danielj@mellanox.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e06d97702fc273e838faf3b850eaa29d69deb09f
Author: Maor Gottlieb <maorg@mellanox.com>
Date:   Thu Nov 10 11:30:58 2016 +0200

    IB/mlx4: Put non zero value in max_ah device attribute
    
    commit 731e0415b4af3a133d0316e4dc8ef0ea57dc3fdf upstream.
    
    Use INT_MAX since this is the max value the attribute can hold, though
    hardware capability is unlimited.
    
    Fixes: 225c7b1feef1 ('IB/mlx4: Add a driver Mellanox ConnectX InfiniBand adapters')
    Signed-off-by: Maor Gottlieb <maorg@mellanox.com>
    Signed-off-by: Daniel Jurgens <danielj@mellanox.com>
    Reviewed-by: Mark Bloch <markb@mellanox.com>
    Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 89aad5ee6e416084ebfbecb040df8c65cb5da769
Author: Maor Gottlieb <maorg@mellanox.com>
Date:   Thu Nov 10 11:30:53 2016 +0200

    IB/mlx4: Set traffic class in AH
    
    commit af4295c117b82a521b05d0daf39ce879d26e6cb1 upstream.
    
    Set traffic class within sl_tclass_flowlabel when create iboe AH.
    Without this the TOS value will be empty when running VLAN tagged
    traffic, because the TOS value is taken from the traffic class in the
    address handle attributes.
    
    Fixes: 9106c4106974 ('IB/mlx4: Fix SL to 802.1Q priority-bits mapping for IBoE')
    Signed-off-by: Maor Gottlieb <maorg@mellanox.com>
    Signed-off-by: Daniel Jurgens <danielj@mellanox.com>
    Reviewed-by: Mark Bloch <markb@mellanox.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a58b5f192f5bfd23807d05a47da6635beceac5bc
Author: Kamal Heib <kamalh@mellanox.com>
Date:   Thu Nov 10 10:16:48 2016 +0200

    IB/IPoIB: Remove can't use GFP_NOIO warning
    
    commit 0b59970e7d96edcb3c7f651d9d48e1a59af3c3b0 upstream.
    
    Remove the warning print of "can't use of GFP_NOIO" to avoid prints in
    each QP creation when devices aren't supporting IB_QP_CREATE_USE_GFP_NOIO.
    
    This print become more annoying when the IPoIB interface is configured
    to work in connected mode.
    
    Fixes: 09b93088d750 ('IB: Add a QP creation flag to use GFP_NOIO allocations')
    Signed-off-by: Kamal Heib <kamalh@mellanox.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1537a3cb0c0e113861e5ad49bd0e717f4453f0b4
Author: Eli Cohen <eli@mellanox.com>
Date:   Thu Oct 27 16:36:43 2016 +0300

    IB/mlx5: Wait for all async command completions to complete
    
    commit acbda523884dcf45613bf6818d8ead5180df35c2 upstream.
    
    Wait before continuing unload till all pending mkey async creation requests
    are done.
    
    Fixes: e126ba97dba9 ('mlx5: Add driver for Mellanox Connect-IB adapters')
    Signed-off-by: Eli Cohen <eli@mellanox.com>
    Signed-off-by: Maor Gottlieb <maorg@mellanox.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 231a3365b4bdaa1abbee2104e73919baa543e60a
Author: Maor Gottlieb <maorg@mellanox.com>
Date:   Thu Oct 27 16:36:38 2016 +0300

    IB/mlx5: Put non zero value in max_ah
    
    commit 86695a6582e3b1c4895de2bde4e1022b3a8fbda0 upstream.
    
    We put INT_MAX since this is the max value that can be held.
    Though there is no hardware limitation, this is practically
    a large enough number so we can use it.
    
    Fixes: e126ba97dba9 ('mlx5: Add driver for Mellanox Connect-IB adapters')
    Signed-off-by: Maor Gottlieb <maorg@mellanox.com>
    Reviewed-by: Mark Bloch <markb@mellanox.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5c5972ffc5ac24092cc16b6f0213799088e698fa
Author: Mark Bloch <markb@mellanox.com>
Date:   Thu Oct 27 16:36:30 2016 +0300

    IB/core: Save QP in ib_flow structure
    
    commit 8ecc7985b4b15f1f14bce31d8ab45dc426df7da3 upstream.
    
    When we create flow steering rule, we need to save the related QP in the
    ib_flow struct. this QP is used in destroy flow.
    
    Move the QP assignment from ib_uverbs_ex_create_flow into ib_create_flow,
    this would allow both kernel and userspace consumers to use it.
    
    This bug wasn't seen in the wild because there are no kernel consumers
    currently in the kernel.
    
    Fixes: 319a441d1361 ("IB/core: Add receive flow steering support")
    Signed-off-by: Mark Bloch <markb@mellanox.com>
    Signed-off-by: Maor Gottlieb <maorg@mellanox.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7a361d9683979d45f7f2b96176517a85b0a19d1d
Author: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Date:   Mon Nov 14 21:26:26 2016 -0500

    ext4: fix stack memory corruption with 64k block size
    
    commit 30a9d7afe70ed6bd9191d3000e2ef1a34fb58493 upstream.
    
    The number of 'counters' elements needed in 'struct sg' is
    super_block->s_blocksize_bits + 2. Presently we have 16 'counters'
    elements in the array. This is insufficient for block sizes >= 32k. In
    such cases the memcpy operation performed in ext4_mb_seq_groups_show()
    would cause stack memory corruption.
    
    Fixes: c9de560ded61f
    Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f1c98d619977d76f3a6e442fdd7670a86d90a4ac
Author: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Date:   Mon Nov 14 21:04:37 2016 -0500

    ext4: fix mballoc breakage with 64k block size
    
    commit 69e43e8cc971a79dd1ee5d4343d8e63f82725123 upstream.
    
    'border' variable is set to a value of 2 times the block size of the
    underlying filesystem. With 64k block size, the resulting value won't
    fit into a 16-bit variable. Hence this commit changes the data type of
    'border' to 'unsigned int'.
    
    Fixes: c9de560ded61f
    Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Reviewed-by: Andreas Dilger <adilger@dilger.ca>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit a23b2d6dc53613a8360c4e466b0a7381376b14d5
Author: Bart Van Assche <bart.vanassche@sandisk.com>
Date:   Fri Nov 11 17:05:27 2016 -0800

    dm rq: fix a race condition in rq_completed()
    
    commit d15bb3a6467e102e60d954aadda5fb19ce6fd8ec upstream.
    
    It is required to hold the queue lock when calling blk_run_queue_async()
    to avoid that a race between blk_run_queue_async() and
    blk_cleanup_queue() is triggered.
    
    Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    [bwh: Backported to 3.16: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit fb7c668a7138a0019cda9c54cd3cba28c8e1a999
Author: Kyle Roeschley <kyle.roeschley@ni.com>
Date:   Mon Oct 31 11:26:17 2016 -0500

    ARM: zynq: Reserve correct amount of non-DMA RAM
    
    commit 7a3cc2a7b2c723aa552028f4e66841cec183756d upstream.
    
    On Zynq, we haven't been reserving the correct amount of DMA-incapable
    RAM to keep DMA away from it (per the Zynq TRM Section 4.1, it should be
    the first 512k). In older kernels, this was masked by the
    memblock_reserve call in arm_memblock_init(). Now, reserve the correct
    amount excplicitly rather than relying on swapper_pg_dir, which is an
    address and not a size anyway.
    
    Fixes: 46f5b96 ("ARM: zynq: Reserve not DMAable space in front of the
    kernel")
    
    Signed-off-by: Kyle Roeschley <kyle.roeschley@ni.com>
    Tested-by: Nathan Rossi <nathan@nathanrossi.com>
    Signed-off-by: Michal Simek <michal.simek@xilinx.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f7fdd0567e723be9c2f51b98111fc84da973971f
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Thu Nov 10 22:33:17 2016 +0300

    usb: xhci-mem: use passed in GFP flags instead of GFP_KERNEL
    
    commit c95a9f83711bf53faeb4ed9bbb63a3f065613dfb upstream.
    
    We normally use the passed in gfp flags for allocations, it's just these
    two which were missed.
    
    Fixes: 22d45f01a836 ("usb/xhci: replace pci_*_consistent() with dma_*_coherent()")
    Cc: Mathias Nyman <mathias.nyman@intel.com>
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Acked-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4554c6aec03bb0135cafadb68e4531e2d13b07f4
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Nov 1 16:26:03 2016 +0100

    powerpc/pci/rpadlpar: Fix device reference leaks
    
    commit 99e5cde5eae78bef95bfe7c16ccda87fb070149b upstream.
    
    Make sure to drop any device reference taken by vio_find_node() when
    adding and removing virtual I/O slots.
    
    Fixes: 5eeb8c63a38f ("[PATCH] PCI Hotplug: rpaphp: Move VIO registration")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6190110c165e55eb49c9a5af95a3c980746e8b39
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Nov 1 16:26:01 2016 +0100

    powerpc/ibmebus: Fix further device reference leaks
    
    commit 815a7141c4d1b11610dccb7fcbb38633759824f2 upstream.
    
    Make sure to drop any reference taken by bus_find_device() when creating
    devices during init and driver registration.
    
    Fixes: 55347cc9962f ("[POWERPC] ibmebus: Add device creation and bus probing based on of_device")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ae4043b160b353870d622069f2300bd73762ed2c
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Nov 1 16:26:00 2016 +0100

    powerpc/ibmebus: Fix device reference leaks in sysfs interface
    
    commit fe0f3168169f7c34c29b0cf0c489f126a7f29643 upstream.
    
    Make sure to drop any reference taken by bus_find_device() in the sysfs
    callbacks that are used to create and destroy devices based on
    device-tree entries.
    
    Fixes: 6bccf755ff53 ("[POWERPC] ibmebus: dynamic addition/removal of adapters, some code cleanup")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b521a54c7b3ce3a2e5c0baceb30227c3508315df
Author: Christopher Spinrath <christopher.spinrath@rwth-aachen.de>
Date:   Fri Nov 11 16:59:38 2016 +0100

    ARM: dts: imx6q-cm-fx6: fix fec pinctrl
    
    commit 72649a46067903d00f46e2ebef6543768224f1a0 upstream.
    
    According to the schematics of CompuLab's sbc-fx6 baseboard and the
    vendor devicetree GPIO_16 is *not* muxed to ENET_REF_CLK but to SPDIF_IN.
    
    Remove the wrong pinctrl setting.
    
    Fixes: 682d055e6ac5 ("ARM: dts: Add initial support for cm-fx6.")
    Signed-off-by: Christopher Spinrath <christopher.spinrath@rwth-aachen.de>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    [bwh: Backported to 3.16: adjust indentation]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 13963dd29ae0d55206c42d09c64cd54c06fb1149
Author: Alex Porosanu <alexandru.porosanu@nxp.com>
Date:   Wed Nov 9 10:46:11 2016 +0200

    crypto: caam - fix AEAD givenc descriptors
    
    commit d128af17876d79b87edf048303f98b35f6a53dbc upstream.
    
    The AEAD givenc descriptor relies on moving the IV through the
    output FIFO and then back to the CTX2 for authentication. The
    SEQ FIFO STORE could be scheduled before the data can be
    read from OFIFO, especially since the SEQ FIFO LOAD needs
    to wait for the SEQ FIFO LOAD SKIP to finish first. The
    SKIP takes more time when the input is SG than when it's
    a contiguous buffer. If the SEQ FIFO LOAD is not scheduled
    before the STORE, the DECO will hang waiting for data
    to be available in the OFIFO so it can be transferred to C2.
    In order to overcome this, first force transfer of IV to C2
    by starting the "cryptlen" transfer first and then starting to
    store data from OFIFO to the output buffer.
    
    Fixes: 1acebad3d8db8 ("crypto: caam - faster aead implementation")
    Signed-off-by: Alex Porosanu <alexandru.porosanu@nxp.com>
    Signed-off-by: Horia Geantă <horia.geanta@nxp.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit cbc71eb6c727249c2278c1081fd17ed652fba25b
Author: Linus Walleij <linus.walleij@linaro.org>
Date:   Sat Nov 12 15:22:38 2016 +0100

    regulator: stw481x-vmmc: fix ages old enable error
    
    commit 295070e9aa015abb9b92cccfbb1e43954e938133 upstream.
    
    The regulator has never been properly enabled, it has been
    dormant all the time. It's strange that MMC was working
    at all, but it likely worked by the signals going through
    the levelshifter and reaching the card anyways.
    
    Fixes: 3615a34ea1a6 ("regulator: add STw481x VMMC driver")
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d8f78f822c30240395fa08c1e747a24e27530746
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Fri Oct 21 16:49:07 2016 -0400

    USB: UHCI: report non-PME wakeup signalling for Intel hardware
    
    commit ccdb6be9ec6580ef69f68949ebe26e0fb58a6fb0 upstream.
    
    The UHCI controllers in Intel chipsets rely on a platform-specific non-PME
    mechanism for wakeup signalling.  They can generate wakeup signals even
    though they don't support PME.
    
    We need to let the USB core know this so that it will enable runtime
    suspend for UHCI controllers.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 905b97f31d7cf0c45d42d0d21fb0b1bd25f14aa1
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Fri Oct 21 16:45:38 2016 -0400

    PCI: Check for PME in targeted sleep state
    
    commit 6496ebd7edf446fccf8266a1a70ffcb64252593e upstream.
    
    One some systems, the firmware does not allow certain PCI devices to be put
    in deep D-states.  This can cause problems for wakeup signalling, if the
    device does not support PME# in the deepest allowed suspend state.  For
    example, Pierre reports that on his system, ACPI does not permit his xHCI
    host controller to go into D3 during runtime suspend -- but D3 is the only
    state in which the controller can generate PME# signals.  As a result, the
    controller goes into runtime suspend but never wakes up, so it doesn't work
    properly.  USB devices plugged into the controller are never detected.
    
    If the device relies on PME# for wakeup signals but is not capable of
    generating PME# in the target state, the PCI core should accurately report
    that it cannot do wakeup from runtime suspend.  This patch modifies the
    pci_dev_run_wake() routine to add this check.
    
    Reported-by: Pierre de Villemereuil <flyos@mailoo.org>
    Tested-by: Pierre de Villemereuil <flyos@mailoo.org>
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    CC: Lukas Wunner <lukas@wunner.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9ba955cdb6ad89532c7f47c6a6451faf8c112fa7
Author: Kashyap Desai <kashyap.desai@broadcom.com>
Date:   Fri Oct 21 06:33:29 2016 -0700

    scsi: megaraid_sas: For SRIOV enabled firmware, ensure VF driver waits for 30secs before reset
    
    commit 18e1c7f68a5814442abad849abe6eacbf02ffd7c upstream.
    
    For SRIOV enabled firmware, if there is a OCR(online controller reset)
    possibility driver set the convert flag to 1, which is not happening if
    there are outstanding commands even after 180 seconds.  As driver does
    not set convert flag to 1 and still making the OCR to run, VF(Virtual
    function) driver is directly writing on to the register instead of
    waiting for 30 seconds. Setting convert flag to 1 will cause VF driver
    will wait for 30 secs before going for reset.
    
    Signed-off-by: Kiran Kumar Kasturi <kiran-kumar.kasturi@broadcom.com>
    Signed-off-by: Sumit Saxena <sumit.saxena@broadcom.com>
    Reviewed-by: Hannes Reinecke <hare@suse.com>
    Reviewed-by: Tomas Henzl <thenzl@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 68a0c919ee66b7dc19840918d6f8c791c5ac1daa
Author: Eric Sandeen <sandeen@sandeen.net>
Date:   Tue Nov 8 12:55:18 2016 +1100

    xfs: fix up xfs_swap_extent_forks inline extent handling
    
    commit 4dfce57db6354603641132fac3c887614e3ebe81 upstream.
    
    There have been several reports over the years of NULL pointer
    dereferences in xfs_trans_log_inode during xfs_fsr processes,
    when the process is doing an fput and tearing down extents
    on the temporary inode, something like:
    
    BUG: unable to handle kernel NULL pointer dereference at 0000000000000018
    PID: 29439  TASK: ffff880550584fa0  CPU: 6   COMMAND: "xfs_fsr"
        [exception RIP: xfs_trans_log_inode+0x10]
     #9 [ffff8800a57bbbe0] xfs_bunmapi at ffffffffa037398e [xfs]
    #10 [ffff8800a57bbce8] xfs_itruncate_extents at ffffffffa0391b29 [xfs]
    #11 [ffff8800a57bbd88] xfs_inactive_truncate at ffffffffa0391d0c [xfs]
    #12 [ffff8800a57bbdb8] xfs_inactive at ffffffffa0392508 [xfs]
    #13 [ffff8800a57bbdd8] xfs_fs_evict_inode at ffffffffa035907e [xfs]
    #14 [ffff8800a57bbe00] evict at ffffffff811e1b67
    #15 [ffff8800a57bbe28] iput at ffffffff811e23a5
    #16 [ffff8800a57bbe58] dentry_kill at ffffffff811dcfc8
    #17 [ffff8800a57bbe88] dput at ffffffff811dd06c
    #18 [ffff8800a57bbea8] __fput at ffffffff811c823b
    #19 [ffff8800a57bbef0] ____fput at ffffffff811c846e
    #20 [ffff8800a57bbf00] task_work_run at ffffffff81093b27
    #21 [ffff8800a57bbf30] do_notify_resume at ffffffff81013b0c
    #22 [ffff8800a57bbf50] int_signal at ffffffff8161405d
    
    As it turns out, this is because the i_itemp pointer, along
    with the d_ops pointer, has been overwritten with zeros
    when we tear down the extents during truncate.  When the in-core
    inode fork on the temporary inode used by xfs_fsr was originally
    set up during the extent swap, we mistakenly looked at di_nextents
    to determine whether all extents fit inline, but this misses extents
    generated by speculative preallocation; we should be using if_bytes
    instead.
    
    This mistake corrupts the in-memory inode, and code in
    xfs_iext_remove_inline eventually gets bad inputs, causing
    it to memmove and memset incorrect ranges; this became apparent
    because the two values in ifp->if_u2.if_inline_ext[1] contained
    what should have been in d_ops and i_itemp; they were memmoved due
    to incorrect array indexing and then the original locations
    were zeroed with memset, again due to an array overrun.
    
    Fix this by properly using i_df.if_bytes to determine the number
    of extents, not di_nextents.
    
    Thanks to dchinner for looking at this with me and spotting the
    root cause.
    
    Signed-off-by: Eric Sandeen <sandeen@redhat.com>
    Reviewed-by: Brian Foster <bfoster@redhat.com>
    Signed-off-by: Dave Chinner <david@fromorbit.com>
    [bwh: Backported to 3.16: adjust indentation]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 563084810e81ce71316edf36e32df10ecfb92025
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Sun Oct 30 09:09:18 2016 -0700

    cris: Only build flash rescue image if CONFIG_ETRAX_AXISFLASHMAP is selected
    
    commit 328cf6927bb72cadefddebbc9a23c793108147a2 upstream.
    
    If CONFIG_ETRAX_AXISFLASHMAP is not configured, the flash rescue image
    object file is empty. With recent versions of binutils, this results
    in the following build error.
    
    cris-linux-objcopy: error:
            the input file 'arch/cris/boot/rescue/rescue.o' has no sections
    
    This is seen, for example, when trying to build cris:allnoconfig
    with recently generated toolchains.
    
    Since it does not make sense to build a flash rescue image if there is
    no flash, only build it if CONFIG_ETRAX_AXISFLASHMAP is enabled.
    
    Reported-by: kbuild test robot <fengguang.wu@intel.com>
    Fixes: 66ab3a74c5ce ("CRIS: Merge machine dependent boot/compressed ..")
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Jesper Nilsson <jesper.nilsson@axis.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1035bb5f0a1a8472f49dc4cb378d1e87cb584c28
Author: Govindarajulu Varadarajan <_govind@gmx.com>
Date:   Tue Nov 1 17:58:50 2016 -0700

    enic: set skb->hash type properly
    
    commit 17197236d62c44da127be461c63ac5cc2cce1e53 upstream.
    
    Driver sets the skb l4/l3 hash based on NIC_CFG_RSS_HASH_TYPE_*,
    which is bit mask. This is wrong. Hw actually provides us enum.
    Use CQ_ENET_RQ_DESC_RSS_TYPE_* to set l3 and l4 hash type.
    
    Fixes: bf751ba802fe ("driver/net: enic: record q_number and rss_hash for skb")
    Signed-off-by: Govindarajulu Varadarajan <_govind@gmx.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: drop the version bump]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit be2bf38e91590e2c41ad6ff9174aca8af38c6799
Author: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
Date:   Tue Nov 1 15:43:15 2016 +0100

    drm/gma500: Add compat ioctl
    
    commit 0a97c81a9717431e6c57ea845b59c3c345edce67 upstream.
    
    Hook up drm_compat_ioctl to support 32-bit userspace on 64-bit kernels.
    It turns out that N2600 and N2800 comes with 64-bit enabled. We
    previously assumed there where no such systems out there.
    
    Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
    Signed-off-by: Sean Paul <seanpaul@chromium.org>
    Link: http://patchwork.freedesktop.org/patch/msgid/20161101144315.2955-1-patrik.r.jakobsson@gmail.com
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 22519003da8a83e6e3f4a98e51e6c412ba63ce57
Author: Vladimir Zapolskiy <vz@mleia.com>
Date:   Mon Sep 26 03:03:41 2016 +0300

    ARM: dts: imx31: move CCM device node to AIPS2 bus devices
    
    commit 1f87aee6a2e55eda466a43ba6248a8b75eede153 upstream.
    
    i.MX31 Clock Control Module controller is found on AIPS2 bus, move it
    there from SPBA bus to avoid a conflict of device IO space mismatch.
    
    Fixes: ef0e4a606fb6 ("ARM: mx31: Replace clk_register_clkdev with clock DT lookup")
    Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
    Acked-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8c4aa195a6426a8696279b56406959825f74135d
Author: Vladimir Zapolskiy <vz@mleia.com>
Date:   Mon Sep 26 03:03:40 2016 +0300

    ARM: dts: imx31: fix clock control module interrupts description
    
    commit 2e575cbc930901718cc18e084566ecbb9a4b5ebb upstream.
    
    The type of AVIC interrupt controller found on i.MX31 is one-cell,
    namely 31 for CCM DVFS and 53 for CCM, however for clock control
    module its interrupts are specified as 3-cells, fix it.
    
    Fixes: ef0e4a606fb6 ("ARM: mx31: Replace clk_register_clkdev with clock DT lookup")
    Acked-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 057f22b71eaff6b285485dd8c83dd79a8e2b7c10
Author: Felipe Balbi <felipe.balbi@linux.intel.com>
Date:   Thu Sep 22 11:01:01 2016 +0300

    usb: dwc3: gadget: set PCM1 field of isochronous-first TRBs
    
    commit 6b9018d4c1e5c958625be94a160a5984351d4632 upstream.
    
    In case of High-Speed, High-Bandwidth endpoints, we
    need to tell DWC3 that we have more than one packet
    per interval. We do that by setting PCM1 field of
    Isochronous-First TRB.
    
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ba5c7ca34f99d5875bbe7b83b58b6ebc0b8bda6f
Author: Felipe Balbi <felipe.balbi@linux.intel.com>
Date:   Wed Sep 28 12:33:31 2016 +0300

    usb: gadget: composite: always set ep->mult to a sensible value
    
    commit eaa496ffaaf19591fe471a36cef366146eeb9153 upstream.
    
    ep->mult is supposed to be set to Isochronous and
    Interrupt Endapoint's multiplier value. This value
    is computed from different places depending on the
    link speed.
    
    If we're dealing with HighSpeed, then it's part of
    bits [12:11] of wMaxPacketSize. This case wasn't
    taken into consideration before.
    
    While at that, also make sure the ep->mult defaults
    to one so drivers can use it unconditionally and
    assume they'll never multiply ep->maxpacket to zero.
    
    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 3b5a43dad011e03b8d54e5920984051a532ac2e4
Author: Felipe Balbi <felipe.balbi@linux.intel.com>
Date:   Mon Sep 26 10:51:18 2016 +0300

    usb: add helper to extract bits 12:11 of wMaxPacketSize
    
    commit 541b6fe63023f3059cf85d47ff2767a3e42a8e44 upstream.
    
    According to USB Specification 2.0 table 9-4,
    wMaxPacketSize is a bitfield. Endpoint's maxpacket
    is laid out in bits 10:0. For high-speed,
    high-bandwidth isochronous endpoints, bits 12:11
    contain a multiplier to tell us how many
    transactions we want to try per uframe.
    
    This means that if we want an isochronous endpoint
    to issue 3 transfers of 1024 bytes per uframe,
    wMaxPacketSize should contain the value:
    
            1024 | (2 << 11)
    
    or 5120 (0x1400). In order to make Host and
    Peripheral controller drivers' life easier, we're
    adding a helper which returns bits 12:11. Note that
    no care is made WRT to checking endpoint type and
    gadget's speed. That's left for drivers to handle.
    
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit caf106f850d23a82c31a322a2ec72326a8e365d7
Author: Felipe Balbi <felipe.balbi@linux.intel.com>
Date:   Wed Sep 28 10:38:11 2016 +0300

    usb: gadget: composite: correctly initialize ep->maxpacket
    
    commit e8f29bb719b47a234f33b0af62974d7a9521a52c upstream.
    
    usb_endpoint_maxp() returns wMaxPacketSize in its
    raw form. Without taking into consideration that it
    also contains other bits reserved for isochronous
    endpoints.
    
    This patch fixes one occasion where this is a
    problem by making sure that we initialize
    ep->maxpacket only with lower 10 bits of the value
    returned by usb_endpoint_maxp(). Note that seperate
    patches will be necessary to audit all call sites of
    usb_endpoint_maxp() and make sure that
    usb_endpoint_maxp() only returns lower 10 bits of
    wMaxPacketSize.
    
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3dab7d4f5119373f0092fc33d9c7bf599c39eb32
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Tue Oct 25 17:20:47 2016 -0300

    perf scripting: Avoid leaking the scripting_context variable
    
    commit cf346d5bd4b9d61656df2f72565c9b354ef3ca0d upstream.
    
    Both register_perl_scripting() and register_python_scripting() allocate
    this variable, fix it by checking if it already was.
    
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Tom Zanussi <tzanussi@gmail.com>
    Cc: Wang Nan <wangnan0@huawei.com>
    Fixes: 7e4b21b84c43 ("perf/scripts: Add Python scripting engine")
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5c04a2622839a8a2246d9b74ced2e6a18d53c7c5
Author: Nicolas Iooss <nicolas.iooss_linux@m4x.org>
Date:   Sat Sep 10 13:59:49 2016 -0300

    ite-cir: initialize use_demodulator before using it
    
    commit 7ec03e60ef81c19b5d3a46dd070ee966774b860f upstream.
    
    Function ite_set_carrier_params() uses variable use_demodulator after
    having initialized it to false in some if branches, but this variable is
    never set to true otherwise.
    
    This bug has been found using clang -Wsometimes-uninitialized warning
    flag.
    
    Fixes: 620a32bba4a2 ("[media] rc: New rc-based ite-cir driver for
    several ITE CIRs")
    
    Signed-off-by: Nicolas Iooss <nicolas.iooss_linux@m4x.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit cd689fbaf382475212258942a49ddf00da70c993
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Tue Oct 18 11:28:32 2016 -0300

    perf trace: Use the syscall raw_syscalls:sys_enter timestamp
    
    commit ecf1e2253ea79c6204f4d6a5e756e8fb4aed5a7e upstream.
    
    Instead of the one when another syscall takes place while another is being
    processed (in another CPU, but we show it serialized, so need to "interrupt"
    the other), and also when finally showing the sys_enter + sys_exit + duration,
    where we were showing the sample->time for the sys_exit, duh.
    
    Before:
    
      # perf trace sleep 1
      <SNIP>
         0.373 (   0.001 ms): close(fd: 3                   ) = 0
      1000.626 (1000.211 ms): nanosleep(rqtp: 0x7ffd6ddddfb0) = 0
      1000.653 (   0.003 ms): close(fd: 1                   ) = 0
      1000.657 (   0.002 ms): close(fd: 2                   ) = 0
      1000.667 (   0.000 ms): exit_group(                   )
      #
    
    After:
    
      # perf trace sleep 1
      <SNIP>
         0.336 (   0.001 ms): close(fd: 3                   ) = 0
         0.373 (1000.086 ms): nanosleep(rqtp: 0x7ffe303e9550) = 0
      1000.481 (   0.002 ms): close(fd: 1                   ) = 0
      1000.485 (   0.001 ms): close(fd: 2                   ) = 0
      1000.494 (   0.000 ms): exit_group(                   )
    [root@jouet linux]#
    
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Wang Nan <wangnan0@huawei.com>
    Link: http://lkml.kernel.org/n/tip-ecbzgmu2ni6glc6zkw8p1zmx@git.kernel.org
    Fixes: 752fde44fd1c ("perf trace: Support interrupted syscalls")
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    [bwh: Backported to 3.16:
     - Drop changes to trace__printf_interrupted_entry()
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2c8c9419e441d534c1768168b3258b0167647468
Author: Shmulik Ladkani <shmulik.ladkani@gmail.com>
Date:   Fri Oct 21 00:18:08 2016 +0300

    net/sched: em_meta: Fix 'meta vlan' to correctly recognize zero VID frames
    
    commit d65f2fa680d6f91438461df54c83a331b3a631c9 upstream.
    
    META_COLLECTOR int_vlan_tag() assumes that if the accel tag (vlan_tci)
    is zero, then no vlan accel tag is present.
    
    This is incorrect for zero VID vlan accel packets, making the following
    match fail:
      tc filter add ... basic match 'meta(vlan mask 0xfff eq 0)' ...
    
    Apparently 'int_vlan_tag' was implemented prior VLAN_TAG_PRESENT was
    introduced in 05423b2 "vlan: allow null VLAN ID to be used"
    (and at time introduced, the 'vlan_tx_tag_get' call in em_meta was not
     adapted).
    
    Fix, testing skb_vlan_tag_present instead of testing skb_vlan_tag_get's
    value.
    
    Fixes: 05423b2413 ("vlan: allow null VLAN ID to be used")
    Fixes: 1a31f2042e ("netsched: Allow meta match on vlan tag on receive")
    
    Signed-off-by: Shmulik Ladkani <shmulik.ladkani@gmail.com>
    Cc: Eric Dumazet <eric.dumazet@gmail.com>
    Cc: Stephen Hemminger <stephen@networkplumber.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.16: s/skb_vlan_tag/vlan_tx_tag/]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 944db611e0b046bb8c5680d8b8be9c57a3d05d82
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date:   Tue Oct 11 19:15:19 2016 +0100

    crypto: arm64/aes-xts-ce: fix for big endian
    
    commit caf4b9e2b326cc2a5005a5c557274306536ace61 upstream.
    
    Emit the XTS tweak literal constants in the appropriate order for a
    single 128-bit scalar literal load.
    
    Fixes: 49788fe2a128 ("arm64/crypto: AES-ECB/CBC/CTR/XTS using ARMv8 NEON and Crypto Extensions")
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 476e7398094dba1e35fef0dd2b5648fc2fe1dfe1
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date:   Tue Oct 11 19:15:18 2016 +0100

    crypto: arm64/aes-neon - fix for big endian
    
    commit a2c435cc99862fd3d165e1b66bf48ac72c839c62 upstream.
    
    The AES implementation using pure NEON instructions relies on the generic
    AES key schedule generation routines, which store the round keys as arrays
    of 32-bit quantities stored in memory using native endianness. This means
    we should refer to these round keys using 4x4 loads rather than 16x1 loads.
    In addition, the ShiftRows tables are loading using a single scalar load,
    which is also affected by endianness, so emit these tables in the correct
    order depending on whether we are building for big endian or not.
    
    Fixes: 49788fe2a128 ("arm64/crypto: AES-ECB/CBC/CTR/XTS using ARMv8 NEON and Crypto Extensions")
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d5dda2814c1f4fce2c1f5b3604f49d5d1c50d854
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date:   Tue Oct 11 19:15:17 2016 +0100

    crypto: arm64/aes-ccm-ce: fix for big endian
    
    commit 56e4e76c68fcb51547b5299e5b66a135935ff414 upstream.
    
    The AES-CCM implementation that uses ARMv8 Crypto Extensions instructions
    refers to the AES round keys as pairs of 64-bit quantities, which causes
    failures when building the code for big endian. In addition, it byte swaps
    the input counter unconditionally, while this is only required for little
    endian builds. So fix both issues.
    
    Fixes: 12ac3efe74f8 ("arm64/crypto: use crypto instructions to generate AES key schedule")
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 05cd35225bed6c99f2cb22808b3ca580740a3bed
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date:   Tue Oct 11 19:15:16 2016 +0100

    crypto: arm64/sha2-ce - fix for big endian
    
    commit 174122c39c369ed924d2608fc0be0171997ce800 upstream.
    
    The SHA256 digest is an array of 8 32-bit quantities, so we should refer
    to them as such in order for this code to work correctly when built for
    big endian. So replace 16 byte scalar loads and stores with 4x32 vector
    ones where appropriate.
    
    Fixes: 6ba6c74dfc6b ("arm64/crypto: SHA-224/SHA-256 using ARMv8 Crypto Extensions")
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    [bwh: Backported to 3.16: use x2 instead of x0]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 620a2026474c590c660f8664550d2b72a3dac602
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date:   Tue Oct 11 19:15:15 2016 +0100

    crypto: arm64/sha1-ce - fix for big endian
    
    commit ee71e5f1e7d25543ee63a80451871f8985b8d431 upstream.
    
    The SHA1 digest is an array of 5 32-bit quantities, so we should refer
    to them as such in order for this code to work correctly when built for
    big endian. So replace 16 byte scalar loads and stores with 4x4 vector
    ones where appropriate.
    
    Fixes: 2c98833a42cd ("arm64/crypto: SHA-1 using ARMv8 Crypto Extensions")
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    [bwh: Backported to 3.16: use x2 instead of x0]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7f7a6023294e5c85dd455784228ae657594de6e1
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date:   Tue Oct 11 19:15:14 2016 +0100

    crypto: arm64/ghash-ce - fix for big endian
    
    commit 9c433ad5083fd4a4a3c721d86cbfbd0b2a2326a5 upstream.
    
    The GHASH key and digest are both pairs of 64-bit quantities, but the
    GHASH code does not always refer to them as such, causing failures when
    built for big endian. So replace the 16x1 loads and stores with 2x8 ones.
    
    Fixes: b913a6404ce2 ("arm64/crypto: improve performance of GHASH algorithm")
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6389caf7f6fe96f500adcc729251f0e0c9aafefc
Author: Eva Rachel Retuya <eraretuya@gmail.com>
Date:   Sun Oct 9 00:05:39 2016 +0800

    staging: iio: ad7606: fix improper setting of oversampling pins
    
    commit b321a38d2407c7e425c54bc09be909a34e49f740 upstream.
    
    The oversampling ratio is controlled using the oversampling pins,
    OS [2:0] with OS2 being the MSB control bit, and OS0 the LSB control
    bit.
    
    The gpio connected to the OS2 pin is not being set correctly, only OS0
    and OS1 pins are being set. Fix the typo to allow proper control of the
    oversampling pins.
    
    Signed-off-by: Eva Rachel Retuya <eraretuya@gmail.com>
    Fixes: b9618c0 ("staging: IIO: ADC: New driver for AD7606/AD7606-6/AD7606-4")
    Acked-by: Lars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>