commit d88700f79448fc8f03617d4f1929c39676f8d1e4
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sat May 19 10:20:27 2018 +0200

    Linux 4.14.42

commit 5c9a9508de30d4d27a270047c7ab5f2817b1366d
Author: Willy Tarreau <w@1wt.eu>
Date:   Fri May 11 08:11:44 2018 +0200

    proc: do not access cmdline nor environ from file-backed areas
    
    commit 7f7ccc2ccc2e70c6054685f5e3522efa81556830 upstream.
    
    proc_pid_cmdline_read() and environ_read() directly access the target
    process' VM to retrieve the command line and environment. If this
    process remaps these areas onto a file via mmap(), the requesting
    process may experience various issues such as extra delays if the
    underlying device is slow to respond.
    
    Let's simply refuse to access file-backed areas in these functions.
    For this we add a new FOLL_ANON gup flag that is passed to all calls
    to access_remote_vm(). The code already takes care of such failures
    (including unmapped areas). Accesses via /proc/pid/mem were not
    changed though.
    
    This was assigned CVE-2018-1120.
    
    Note for stable backports: the patch may apply to kernels prior to 4.11
    but silently miss one location; it must be checked that no call to
    access_remote_vm() keeps zero as the last argument.
    
    Reported-by: Qualys Security Advisory <qsa@qualys.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Willy Tarreau <w@1wt.eu>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7a4eda600d770aab72d038901647b12f9a4b887c
Author: James Chapman <jchapman@katalix.com>
Date:   Wed Jan 3 22:48:05 2018 +0000

    l2tp: revert "l2tp: fix missing print session offset info"
    
    commit de3b58bc359a861d5132300f53f95e83f71954b3 upstream.
    
    Revert commit 820da5357572 ("l2tp: fix missing print session offset
    info").  The peer_offset parameter is removed.
    
    Signed-off-by: James Chapman <jchapman@katalix.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Cc: Guillaume Nault <g.nault@alphalink.fr>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 036bbd584b0b4e771498368da0450736d4ce0ffc
Author: Antony Antony <antony@phenome.org>
Date:   Thu Dec 7 21:54:27 2017 +0100

    xfrm: fix xfrm_do_migrate() with AEAD e.g(AES-GCM)
    
    commit 75bf50f4aaa1c78d769d854ab3d975884909e4fb upstream.
    
    copy geniv when cloning the xfrm state.
    
    x->geniv was not copied to the new state and migration would fail.
    
    xfrm_do_migrate
      ..
      xfrm_state_clone()
       ..
       ..
       esp_init_aead()
       crypto_alloc_aead()
        crypto_alloc_tfm()
         crypto_find_alg() return EAGAIN and failed
    
    Signed-off-by: Antony Antony <antony@phenome.org>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Cc: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b0e5b437ecfd7e81351facef50e434d75b40ac63
Author: ethanwu <ethanwu@synology.com>
Date:   Sun Apr 29 15:59:42 2018 +0800

    btrfs: Take trans lock before access running trans in check_delayed_ref
    
    commit 998ac6d21cfd6efd58f5edf420bae8839dda9f2a upstream.
    
    In preivous patch:
    Btrfs: kill trans in run_delalloc_nocow and btrfs_cross_ref_exist
    We avoid starting btrfs transaction and get this information from
    fs_info->running_transaction directly.
    
    When accessing running_transaction in check_delayed_ref, there's a
    chance that current transaction will be freed by commit transaction
    after the NULL pointer check of running_transaction is passed.
    
    After looking all the other places using fs_info->running_transaction,
    they are either protected by trans_lock or holding the transactions.
    
    Fix this by using trans_lock and increasing the use_count.
    
    Fixes: e4c3b2dcd144 ("Btrfs: kill trans in run_delalloc_nocow and btrfs_cross_ref_exist")
    CC: stable@vger.kernel.org # 4.14+
    Signed-off-by: ethanwu <ethanwu@synology.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d2d85f8d224917936ceea0552fe453fe01e2e1e0
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Thu Jan 4 22:25:07 2018 +1100

    xfrm: Use __skb_queue_tail in xfrm_trans_queue
    
    commit d16b46e4fd8bc6063624605f25b8c0835bb1fbe3 upstream.
    
    We do not need locking in xfrm_trans_queue because it is designed
    to use per-CPU buffers.  However, the original code incorrectly
    used skb_queue_tail which takes the lock.  This patch switches
    it to __skb_queue_tail instead.
    
    Reported-and-tested-by: Artem Savkov <asavkov@redhat.com>
    Fixes: acf568ee859f ("xfrm: Reinject transport-mode packets...")
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Alistair Strachan <astrachan@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 73cda903038035eff6a3da75ca67a553f21c247a
Author: Dave Carroll <david.carroll@microsemi.com>
Date:   Wed Apr 25 10:24:20 2018 -0600

    scsi: aacraid: Correct hba_send to include iu_type
    
    commit 7d3af7d96af7b9f51e1ef67b6f4725f545737da2 upstream.
    
    commit b60710ec7d7a ("scsi: aacraid: enable sending of TMFs from
    aac_hba_send()") allows aac_hba_send() to send scsi commands, and TMF
    requests, but the existing code only updates the iu_type for scsi
    commands. For TMF requests we are sending an unknown iu_type to
    firmware, which causes a fault.
    
    Include iu_type prior to determining the validity of the command
    
    Reported-by: Noah Misner <nmisner@us.ibm.com>
    Fixes: b60710ec7d7ab ("aacraid: enable sending of TMFs from aac_hba_send()")
    Fixes: 423400e64d377 ("aacraid: Include HBA direct interface")
    Tested-by: Noah Misner <nmisner@us.ibm.com>
    cc: stable@vger.kernel.org
    Signed-off-by: Dave Carroll <david.carroll@microsemi.com>
    Reviewed-by: Raghava Aditya Renukunta <RaghavaAditya.Renukunta@microsemi.com>
    Reviewed-by: Brian King <brking@linux.vnet.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 59afc1841b703064d73ec7011bde6402e0efd0ec
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Wed May 9 12:42:34 2018 +0200

    udp: fix SO_BINDTODEVICE
    
    [ Upstream commit 69678bcd4d2dedbc3e8fcd6d7d99f283d83c531a ]
    
    Damir reported a breakage of SO_BINDTODEVICE for UDP sockets.
    In absence of VRF devices, after commit fb74c27735f0 ("net:
    ipv4: add second dif to udp socket lookups") the dif mismatch
    isn't fatal anymore for UDP socket lookup with non null
    sk_bound_dev_if, breaking SO_BINDTODEVICE semantics.
    
    This changeset addresses the issue making the dif match mandatory
    again in the above scenario.
    
    Reported-by: Damir Mansurov <dnman@oktetlabs.ru>
    Fixes: fb74c27735f0 ("net: ipv4: add second dif to udp socket lookups")
    Fixes: 1801b570dd2a ("net: ipv6: add second dif to udp socket lookups")
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Acked-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8151fe6861a00a34a50302f159c8cc8b0bc07228
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu May 3 13:37:54 2018 -0700

    nsh: fix infinite loop
    
    [ Upstream commit af50e4ba34f4c45e92535364133d4deb5931c1c5 ]
    
    syzbot caught an infinite recursion in nsh_gso_segment().
    
    Problem here is that we need to make sure the NSH header is of
    reasonable length.
    
    BUG: MAX_LOCK_DEPTH too low!
    turning off the locking correctness validator.
    depth: 48  max: 48!
    48 locks held by syz-executor0/10189:
     #0:         (ptrval) (rcu_read_lock_bh){....}, at: __dev_queue_xmit+0x30f/0x34c0 net/core/dev.c:3517
     #1:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #1:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #2:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #2:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #3:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #3:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #4:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #4:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #5:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #5:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #6:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #6:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #7:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #7:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #8:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #8:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #9:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #9:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #10:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #10:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #11:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #11:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #12:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #12:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #13:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #13:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #14:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #14:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #15:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #15:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #16:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #16:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #17:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #17:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #18:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #18:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #19:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #19:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #20:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #20:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #21:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #21:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #22:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #22:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #23:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #23:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #24:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #24:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #25:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #25:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #26:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #26:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #27:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #27:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #28:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #28:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #29:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #29:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #30:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #30:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #31:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #31:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
    dccp_close: ABORT with 65423 bytes unread
     #32:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #32:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #33:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #33:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #34:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #34:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #35:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #35:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #36:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #36:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #37:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #37:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #38:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #38:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #39:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #39:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #40:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #40:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #41:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #41:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #42:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #42:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #43:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #43:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #44:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #44:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #45:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #45:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #46:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #46:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
     #47:         (ptrval) (rcu_read_lock){....}, at: __skb_pull include/linux/skbuff.h:2080 [inline]
     #47:         (ptrval) (rcu_read_lock){....}, at: skb_mac_gso_segment+0x221/0x720 net/core/dev.c:2787
    INFO: lockdep is turned off.
    CPU: 1 PID: 10189 Comm: syz-executor0 Not tainted 4.17.0-rc2+ #26
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0x1b9/0x294 lib/dump_stack.c:113
     __lock_acquire+0x1788/0x5140 kernel/locking/lockdep.c:3449
     lock_acquire+0x1dc/0x520 kernel/locking/lockdep.c:3920
     rcu_lock_acquire include/linux/rcupdate.h:246 [inline]
     rcu_read_lock include/linux/rcupdate.h:632 [inline]
     skb_mac_gso_segment+0x25b/0x720 net/core/dev.c:2789
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     nsh_gso_segment+0x405/0xb60 net/nsh/nsh.c:107
     skb_mac_gso_segment+0x3ad/0x720 net/core/dev.c:2792
     __skb_gso_segment+0x3bb/0x870 net/core/dev.c:2865
     skb_gso_segment include/linux/netdevice.h:4025 [inline]
     validate_xmit_skb+0x54d/0xd90 net/core/dev.c:3118
     validate_xmit_skb_list+0xbf/0x120 net/core/dev.c:3168
     sch_direct_xmit+0x354/0x11e0 net/sched/sch_generic.c:312
     qdisc_restart net/sched/sch_generic.c:399 [inline]
     __qdisc_run+0x741/0x1af0 net/sched/sch_generic.c:410
     __dev_xmit_skb net/core/dev.c:3243 [inline]
     __dev_queue_xmit+0x28ea/0x34c0 net/core/dev.c:3551
     dev_queue_xmit+0x17/0x20 net/core/dev.c:3616
     packet_snd net/packet/af_packet.c:2951 [inline]
     packet_sendmsg+0x40f8/0x6070 net/packet/af_packet.c:2976
     sock_sendmsg_nosec net/socket.c:629 [inline]
     sock_sendmsg+0xd5/0x120 net/socket.c:639
     __sys_sendto+0x3d7/0x670 net/socket.c:1789
     __do_sys_sendto net/socket.c:1801 [inline]
     __se_sys_sendto net/socket.c:1797 [inline]
     __x64_sys_sendto+0xe1/0x1a0 net/socket.c:1797
     do_syscall_64+0x1b1/0x800 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    Fixes: c411ed854584 ("nsh: add GSO support")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Jiri Benc <jbenc@redhat.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Acked-by: Jiri Benc <jbenc@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 66fefcabae5ee926784e2563c4ce19e4c0552ad4
Author: Jianbo Liu <jianbol@mellanox.com>
Date:   Tue Mar 27 09:22:16 2018 +0000

    net/mlx5e: Allow offloading ipv4 header re-write for icmp
    
    [ Upstream commit 1ccef350db2f13715040a10df77ae672206004cf ]
    
    For ICMPv4, the checksum is calculated from the ICMP headers and data.
    Since the ICMPv4 checksum doesn't cover the IP header, we can allow to
    do L3 header re-write for this protocol.
    
    Fixes: bdd66ac0aeed ('net/mlx5e: Disallow TC offloading of unsupported match/action combinations')
    Signed-off-by: Jianbo Liu <jianbol@mellanox.com>
    Reviewed-by: Or Gerlitz <ogerlitz@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cb9e5a0817f4d6a05add9e3de01aed179c76e098
Author: Eric Dumazet <edumazet@google.com>
Date:   Sun Apr 29 09:54:59 2018 -0700

    ipv6: fix uninit-value in ip6_multipath_l3_keys()
    
    [ Upstream commit cea67a2dd6b2419dcc13a39309b9a79a1f773193 ]
    
    syzbot/KMSAN reported an uninit-value in ip6_multipath_l3_keys(),
    root caused to a bad assumption of ICMP header being already
    pulled in skb->head
    
    ip_multipath_l3_keys() does the correct thing, so it is an IPv6 only bug.
    
    BUG: KMSAN: uninit-value in ip6_multipath_l3_keys net/ipv6/route.c:1830 [inline]
    BUG: KMSAN: uninit-value in rt6_multipath_hash+0x5c4/0x640 net/ipv6/route.c:1858
    CPU: 0 PID: 4507 Comm: syz-executor661 Not tainted 4.16.0+ #87
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:17 [inline]
     dump_stack+0x185/0x1d0 lib/dump_stack.c:53
     kmsan_report+0x142/0x240 mm/kmsan/kmsan.c:1067
     __msan_warning_32+0x6c/0xb0 mm/kmsan/kmsan_instr.c:683
     ip6_multipath_l3_keys net/ipv6/route.c:1830 [inline]
     rt6_multipath_hash+0x5c4/0x640 net/ipv6/route.c:1858
     ip6_route_input+0x65a/0x920 net/ipv6/route.c:1884
     ip6_rcv_finish+0x413/0x6e0 net/ipv6/ip6_input.c:69
     NF_HOOK include/linux/netfilter.h:288 [inline]
     ipv6_rcv+0x1e16/0x2340 net/ipv6/ip6_input.c:208
     __netif_receive_skb_core+0x47df/0x4a90 net/core/dev.c:4562
     __netif_receive_skb net/core/dev.c:4627 [inline]
     netif_receive_skb_internal+0x49d/0x630 net/core/dev.c:4701
     netif_receive_skb+0x230/0x240 net/core/dev.c:4725
     tun_rx_batched drivers/net/tun.c:1555 [inline]
     tun_get_user+0x740f/0x7c60 drivers/net/tun.c:1962
     tun_chr_write_iter+0x1d4/0x330 drivers/net/tun.c:1990
     call_write_iter include/linux/fs.h:1782 [inline]
     new_sync_write fs/read_write.c:469 [inline]
     __vfs_write+0x7fb/0x9f0 fs/read_write.c:482
     vfs_write+0x463/0x8d0 fs/read_write.c:544
     SYSC_write+0x172/0x360 fs/read_write.c:589
     SyS_write+0x55/0x80 fs/read_write.c:581
     do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    
    Fixes: 23aebdacb05d ("ipv6: Compute multipath hash for ICMP errors from offending packet")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Cc: Jakub Sitnicki <jkbs@redhat.com>
    Acked-by: Jakub Sitnicki <jkbs@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 19bf346ca70552d6e5614cea12c98888c8805d68
Author: Stephen Hemminger <stephen@networkplumber.org>
Date:   Wed May 9 14:09:04 2018 -0700

    hv_netvsc: set master device
    
    [ Upstream commit 97f3efb64323beb0690576e9d74e94998ad6e82a ]
    
    The hyper-v transparent bonding should have used master_dev_link.
    The netvsc device should look like a master bond device not
    like the upper side of a tunnel.
    
    This makes the semantics the same so that userspace applications
    looking at network devices see the correct master relationshipship.
    
    Fixes: 0c195567a8f6 ("netvsc: transparent VF management")
    Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6ecec17f71f578696e6254c16aa06d656783a07c
Author: Talat Batheesh <talatb@mellanox.com>
Date:   Sun Apr 15 11:26:19 2018 +0300

    net/mlx5: Avoid cleaning flow steering table twice during error flow
    
    [ Upstream commit 9c26f5f89d01ca21560c6b8a8e4054c271cc3a9c ]
    
    When we fail to initialize the RX root namespace, we need
    to clean only that and not the entire flow steering.
    
    Currently the code may try to clean the flow steering twice
    on error witch leads to null pointer deference.
    Make sure we clean correctly.
    
    Fixes: fba53f7b5719 ("net/mlx5: Introduce mlx5_flow_steering structure")
    Signed-off-by: Talat Batheesh <talatb@mellanox.com>
    Reviewed-by: Mark Bloch <markb@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eac1ab609be07f75ab4faf258bf10e1a1bbbe421
Author: Tariq Toukan <tariqt@mellanox.com>
Date:   Tue Mar 20 18:17:25 2018 +0200

    net/mlx5e: TX, Use correct counter in dma_map error flow
    
    [ Upstream commit d9a96ec362e3da878c378854e25321c85bac52c2 ]
    
    In case of a dma_mapping_error, do not use wi->num_dma
    as a parameter for dma unmap function because it's yet
    to be set, and holds an out-of-date value.
    Use actual value (local variable num_dma) instead.
    
    Fixes: 34802a42b352 ("net/mlx5e: Do not modify the TX SKB")
    Fixes: e586b3b0baee ("net/mlx5: Ethernet Datapath files")
    Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b047794cc36c77da3fd81cb578a58a8028f0d692
Author: Jiri Pirko <jiri@mellanox.com>
Date:   Fri May 11 17:45:32 2018 +0200

    net: sched: fix error path in tcf_proto_create() when modules are not configured
    
    [ Upstream commit d68d75fdc34b0253c2bded7ed18cd60eb5a9599b ]
    
    In case modules are not configured, error out when tp->ops is null
    and prevent later null pointer dereference.
    
    Fixes: 33a48927c193 ("sched: push TC filter protocol creation into a separate function")
    Signed-off-by: Jiri Pirko <jiri@mellanox.com>
    Acked-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f6294114ade4c46d9f54c6fd0afd1225855a8f0e
Author: Debabrata Banerjee <dbanerje@akamai.com>
Date:   Wed May 9 19:32:11 2018 -0400

    bonding: send learning packets for vlans on slave
    
    [ Upstream commit 21706ee8a47d3ede7fdae0be6d7c0a0e31a83229 ]
    
    There was a regression at some point from the intended functionality of
    commit f60c3704e87d ("bonding: Fix alb mode to only use first level
    vlans.")
    
    Given the return value vlan_get_encap_level() we need to store the nest
    level of the bond device, and then compare the vlan's encap level to
    this. Without this, this check always fails and learning packets are
    never sent.
    
    In addition, this same commit caused a regression in the behavior of
    balance_alb, which requires learning packets be sent for all interfaces
    using the slave's mac in order to load balance properly. For vlan's
    that have not set a user mac, we can send after checking one bit.
    Otherwise we need send the set mac, albeit defeating rx load balancing
    for that vlan.
    
    Signed-off-by: Debabrata Banerjee <dbanerje@akamai.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2eca993ddc832c9d1174c177bea1057f34a5263f
Author: Debabrata Banerjee <dbanerje@akamai.com>
Date:   Wed May 9 19:32:10 2018 -0400

    bonding: do not allow rlb updates to invalid mac
    
    [ Upstream commit 4fa8667ca3989ce14cf66301fa251544fbddbdd0 ]
    
    Make sure multicast, broadcast, and zero mac's cannot be the output of rlb
    updates, which should all be directed arps. Receive load balancing will be
    collapsed if any of these happen, as the switch will broadcast.
    
    Signed-off-by: Debabrata Banerjee <dbanerje@akamai.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f754c9c88045736f303a7d304cc2ac158894b378
Author: Michael Chan <michael.chan@broadcom.com>
Date:   Thu May 3 20:04:27 2018 -0400

    tg3: Fix vunmap() BUG_ON() triggered from tg3_free_consistent().
    
    [ Upstream commit d89a2adb8bfe6f8949ff389acdb9fa298b6e8e12 ]
    
    tg3_free_consistent() calls dma_free_coherent() to free tp->hw_stats
    under spinlock and can trigger BUG_ON() in vunmap() because vunmap()
    may sleep.  Fix it by removing the spinlock and relying on the
    TG3_FLAG_INIT_COMPLETE flag to prevent race conditions between
    tg3_get_stats64() and tg3_free_consistent().  TG3_FLAG_INIT_COMPLETE
    is always cleared under tp->lock before tg3_free_consistent()
    and therefore tg3_get_stats64() can safely access tp->hw_stats
    under tp->lock if TG3_FLAG_INIT_COMPLETE is set.
    
    Fixes: f5992b72ebe0 ("tg3: Fix race condition in tg3_get_stats64().")
    Reported-by: Zumeng Chen <zumeng.chen@gmail.com>
    Signed-off-by: Michael Chan <michael.chan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 413d2627692d0eeccd702951c912b96b5c564d98
Author: Yuchung Cheng <ycheng@google.com>
Date:   Wed Apr 25 11:33:08 2018 -0700

    tcp: ignore Fast Open on repair mode
    
    [ Upstream commit 16ae6aa1705299789f71fdea59bfb119c1fbd9c0 ]
    
    The TCP repair sequence of operation is to first set the socket in
    repair mode, then inject the TCP stats into the socket with repair
    socket options, then call connect() to re-activate the socket. The
    connect syscall simply returns and set state to ESTABLISHED
    mode. As a result Fast Open is meaningless for TCP repair.
    
    However allowing sendto() system call with MSG_FASTOPEN flag half-way
    during the repair operation could unexpectedly cause data to be
    sent, before the operation finishes changing the internal TCP stats
    (e.g. MSS).  This in turn triggers TCP warnings on inconsistent
    packet accounting.
    
    The fix is to simply disallow Fast Open operation once the socket
    is in the repair mode.
    
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Yuchung Cheng <ycheng@google.com>
    Reviewed-by: Neal Cardwell <ncardwell@google.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3cfe95a0eb027ff81c76bd7b01136e85158dd62e
Author: Neal Cardwell <ncardwell@google.com>
Date:   Tue May 1 21:45:41 2018 -0400

    tcp_bbr: fix to zero idle_restart only upon S/ACKed data
    
    [ Upstream commit e6e6a278b1eaffa19d42186bfacd1ffc15a50b3f ]
    
    Previously the bbr->idle_restart tracking was zeroing out the
    bbr->idle_restart bit upon ACKs that did not SACK or ACK anything,
    e.g. receiving incoming data or receiver window updates. In such
    situations BBR would forget that this was a restart-from-idle
    situation, and if the min_rtt had expired it would unnecessarily enter
    PROBE_RTT (even though we were actually restarting from idle but had
    merely forgotten that fact).
    
    The fix is simple: we need to remember we are restarting from idle
    until we receive a S/ACK for some data (a S/ACK for the first flight
    of data we send as we are restarting).
    
    This commit is a stable candidate for kernels back as far as 4.9.
    
    Fixes: 0f8782ea1497 ("tcp_bbr: add BBR congestion control")
    Signed-off-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: Yuchung Cheng <ycheng@google.com>
    Signed-off-by: Soheil Hassas Yeganeh <soheil@google.com>
    Signed-off-by: Priyaranjan Jha <priyarjha@google.com>
    Signed-off-by: Yousuk Seung <ysseung@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bf2f3bae31a2a0bf3b213a03c58053e9e793f81c
Author: Xin Long <lucien.xin@gmail.com>
Date:   Wed May 2 13:39:46 2018 +0800

    sctp: use the old asoc when making the cookie-ack chunk in dupcook_d
    
    [ Upstream commit 46e16d4b956867013e0bbd7f2bad206f4aa55752 ]
    
    When processing a duplicate cookie-echo chunk, for case 'D', sctp will
    not process the param from this chunk. It means old asoc has nothing
    to be updated, and the new temp asoc doesn't have the complete info.
    
    So there's no reason to use the new asoc when creating the cookie-ack
    chunk. Otherwise, like when auth is enabled for cookie-ack, the chunk
    can not be set with auth, and it will definitely be dropped by peer.
    
    This issue is there since very beginning, and we fix it by using the
    old asoc instead.
    
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Neil Horman <nhorman@tuxdriver.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4dce9afc2d352a805030c514c5e22b83fa4a980f
Author: Xin Long <lucien.xin@gmail.com>
Date:   Thu May 10 17:34:13 2018 +0800

    sctp: remove sctp_chunk_put from fail_mark err path in sctp_ulpevent_make_rcvmsg
    
    [ Upstream commit 6910e25de2257e2c82c7a2d126e3463cd8e50810 ]
    
    In Commit 1f45f78f8e51 ("sctp: allow GSO frags to access the chunk too"),
    it held the chunk in sctp_ulpevent_make_rcvmsg to access it safely later
    in recvmsg. However, it also added sctp_chunk_put in fail_mark err path,
    which is only triggered before holding the chunk.
    
    syzbot reported a use-after-free crash happened on this err path, where
    it shouldn't call sctp_chunk_put.
    
    This patch simply removes this call.
    
    Fixes: 1f45f78f8e51 ("sctp: allow GSO frags to access the chunk too")
    Reported-by: syzbot+141d898c5f24489db4aa@syzkaller.appspotmail.com
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Neil Horman <nhorman@tuxdriver.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d3d4d69d9bbd497a051cf73ce8b4c73444d157f5
Author: Xin Long <lucien.xin@gmail.com>
Date:   Thu Apr 26 14:13:57 2018 +0800

    sctp: handle two v4 addrs comparison in sctp_inet6_cmp_addr
    
    [ Upstream commit d625329b06e46bd20baf9ee40847d11982569204 ]
    
    Since sctp ipv6 socket also supports v4 addrs, it's possible to
    compare two v4 addrs in pf v6 .cmp_addr, sctp_inet6_cmp_addr.
    
    However after Commit 1071ec9d453a ("sctp: do not check port in
    sctp_inet6_cmp_addr"), it no longer calls af1->cmp_addr, which
    in this case is sctp_v4_cmp_addr, but calls __sctp_v6_cmp_addr
    where it handles them as two v6 addrs. It would cause a out of
    bounds crash.
    
    syzbot found this crash when trying to bind two v4 addrs to a
    v6 socket.
    
    This patch fixes it by adding the process for two v4 addrs in
    sctp_inet6_cmp_addr.
    
    Fixes: 1071ec9d453a ("sctp: do not check port in sctp_inet6_cmp_addr")
    Reported-by: syzbot+cd494c1dd681d4d93ebb@syzkaller.appspotmail.com
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Neil Horman <nhorman@tuxdriver.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f6c962d27d1a3b868c23aba432b6a9b951d8727a
Author: Xin Long <lucien.xin@gmail.com>
Date:   Wed May 2 13:45:12 2018 +0800

    sctp: fix the issue that the cookie-ack with auth can't get processed
    
    [ Upstream commit ce402f044e4e432c296f90eaabb8dbe8f3624391 ]
    
    When auth is enabled for cookie-ack chunk, in sctp_inq_pop, sctp
    processes auth chunk first, then continues to the next chunk in
    this packet if chunk_end + chunk_hdr size < skb_tail_pointer().
    Otherwise, it will go to the next packet or discard this chunk.
    
    However, it missed the fact that cookie-ack chunk's size is equal
    to chunk_hdr size, which couldn't match that check, and thus this
    chunk would not get processed.
    
    This patch fixes it by changing the check to chunk_end + chunk_hdr
    size <= skb_tail_pointer().
    
    Fixes: 26b87c788100 ("net: sctp: fix remote memory pressure from excessive queueing")
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Neil Horman <nhorman@tuxdriver.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3b54f1fd8770280baafd13c965f863c885371b81
Author: Xin Long <lucien.xin@gmail.com>
Date:   Sat May 5 14:59:47 2018 +0800

    sctp: delay the authentication for the duplicated cookie-echo chunk
    
    [ Upstream commit 59d8d4434f429b4fa8a346fd889058bda427a837 ]
    
    Now sctp only delays the authentication for the normal cookie-echo
    chunk by setting chunk->auth_chunk in sctp_endpoint_bh_rcv(). But
    for the duplicated one with auth, in sctp_assoc_bh_rcv(), it does
    authentication first based on the old asoc, which will definitely
    fail due to the different auth info in the old asoc.
    
    The duplicated cookie-echo chunk will create a new asoc with the
    auth info from this chunk, and the authentication should also be
    done with the new asoc's auth info for all of the collision 'A',
    'B' and 'D'. Otherwise, the duplicated cookie-echo chunk with auth
    will never pass the authentication and create the new connection.
    
    This issue exists since very beginning, and this fix is to make
    sctp_assoc_bh_rcv() follow the way sctp_endpoint_bh_rcv() does
    for the normal cookie-echo chunk to delay the authentication.
    
    While at it, remove the unused params from sctp_sf_authenticate()
    and define sctp_auth_chunk_verify() used for all the places that
    do the delayed authentication.
    
    v1->v2:
      fix the typo in changelog as Marcelo noticed.
    
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 30ffa967adc3ec396211a103ebeaeb24366ee600
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed May 2 14:53:39 2018 -0700

    rds: do not leak kernel memory to user land
    
    [ Upstream commit eb80ca476ec11f67a62691a93604b405ffc7d80c ]
    
    syzbot/KMSAN reported an uninit-value in put_cmsg(), originating
    from rds_cmsg_recv().
    
    Simply clear the structure, since we have holes there, or since
    rx_traces might be smaller than RDS_MSG_RX_DGRAM_TRACE_MAX.
    
    BUG: KMSAN: uninit-value in copy_to_user include/linux/uaccess.h:184 [inline]
    BUG: KMSAN: uninit-value in put_cmsg+0x600/0x870 net/core/scm.c:242
    CPU: 0 PID: 4459 Comm: syz-executor582 Not tainted 4.16.0+ #87
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:17 [inline]
     dump_stack+0x185/0x1d0 lib/dump_stack.c:53
     kmsan_report+0x142/0x240 mm/kmsan/kmsan.c:1067
     kmsan_internal_check_memory+0x135/0x1e0 mm/kmsan/kmsan.c:1157
     kmsan_copy_to_user+0x69/0x160 mm/kmsan/kmsan.c:1199
     copy_to_user include/linux/uaccess.h:184 [inline]
     put_cmsg+0x600/0x870 net/core/scm.c:242
     rds_cmsg_recv net/rds/recv.c:570 [inline]
     rds_recvmsg+0x2db5/0x3170 net/rds/recv.c:657
     sock_recvmsg_nosec net/socket.c:803 [inline]
     sock_recvmsg+0x1d0/0x230 net/socket.c:810
     ___sys_recvmsg+0x3fb/0x810 net/socket.c:2205
     __sys_recvmsg net/socket.c:2250 [inline]
     SYSC_recvmsg+0x298/0x3c0 net/socket.c:2262
     SyS_recvmsg+0x54/0x80 net/socket.c:2257
     do_syscall_64+0x309/0x430 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    
    Fixes: 3289025aedc0 ("RDS: add receive message trace used by application")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Cc: Santosh Shilimkar <santosh.shilimkar@oracle.com>
    Cc: linux-rdma <linux-rdma@vger.kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2753ebb4e96c64eb852205166c947db8b3e1d64f
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Mon May 7 21:11:21 2018 +0200

    r8169: fix powering up RTL8168h
    
    [ Upstream commit 3148dedfe79e422f448a10250d3e2cdf8b7ee617 ]
    
    Since commit a92a08499b1f "r8169: improve runtime pm in general and
    suspend unused ports" interfaces w/o link are runtime-suspended after
    10s. On systems where drivers take longer to load this can lead to the
    situation that the interface is runtime-suspended already when it's
    initially brought up.
    This shouldn't be a problem because rtl_open() resumes MAC/PHY.
    However with at least one chip version the interface doesn't properly
    come up, as reported here:
    https://bugzilla.kernel.org/show_bug.cgi?id=199549
    
    The vendor driver uses a delay to give certain chip versions some
    time to resume before starting the PHY configuration. So let's do
    the same. I don't know which chip versions may be affected,
    therefore apply this delay always.
    
    This patch was reported to fix the issue for RTL8168h.
    I was able to reproduce the issue on an Asus H310I-Plus which also
    uses a RTL8168h. Also in my case the patch fixed the issue.
    
    Reported-by: Slava Kardakov <ojab@ojab.ru>
    Tested-by: Slava Kardakov <ojab@ojab.ru>
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2bb66a711cc8209e92421e62d16e1cca8b43eb05
Author: Bjørn Mork <bjorn@mork.no>
Date:   Wed May 2 22:22:54 2018 +0200

    qmi_wwan: do not steal interfaces from class drivers
    
    [ Upstream commit 5697db4a696c41601a1d15c1922150b4dbf5726c ]
    
    The USB_DEVICE_INTERFACE_NUMBER matching macro assumes that
    the { vendorid, productid, interfacenumber } set uniquely
    identifies one specific function.  This has proven to fail
    for some configurable devices. One example is the Quectel
    EM06/EP06 where the same interface number can be either
    QMI or MBIM, without the device ID changing either.
    
    Fix by requiring the vendor-specific class for interface number
    based matching.  Functions of other classes can and should use
    class based matching instead.
    
    Fixes: 03304bcb5ec4 ("net: qmi_wwan: use fixed interface number matching")
    Signed-off-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c1ce5f3590666cada7d9478ed1ce811ac13b9e06
Author: Stefano Brivio <sbrivio@redhat.com>
Date:   Thu May 3 18:13:25 2018 +0200

    openvswitch: Don't swap table in nlattr_set() after OVS_ATTR_NESTED is found
    
    [ Upstream commit 72f17baf2352ded6a1d3f4bb2d15da8c678cd2cb ]
    
    If an OVS_ATTR_NESTED attribute type is found while walking
    through netlink attributes, we call nlattr_set() recursively
    passing the length table for the following nested attributes, if
    different from the current one.
    
    However, once we're done with those sub-nested attributes, we
    should continue walking through attributes using the current
    table, instead of using the one related to the sub-nested
    attributes.
    
    For example, given this sequence:
    
    1  OVS_KEY_ATTR_PRIORITY
    2  OVS_KEY_ATTR_TUNNEL
    3       OVS_TUNNEL_KEY_ATTR_ID
    4       OVS_TUNNEL_KEY_ATTR_IPV4_SRC
    5       OVS_TUNNEL_KEY_ATTR_IPV4_DST
    6       OVS_TUNNEL_KEY_ATTR_TTL
    7       OVS_TUNNEL_KEY_ATTR_TP_SRC
    8       OVS_TUNNEL_KEY_ATTR_TP_DST
    9  OVS_KEY_ATTR_IN_PORT
    10 OVS_KEY_ATTR_SKB_MARK
    11 OVS_KEY_ATTR_MPLS
    
    we switch to the 'ovs_tunnel_key_lens' table on attribute #3,
    and we don't switch back to 'ovs_key_lens' while setting
    attributes #9 to #11 in the sequence. As OVS_KEY_ATTR_MPLS
    evaluates to 21, and the array size of 'ovs_tunnel_key_lens' is
    15, we also get this kind of KASan splat while accessing the
    wrong table:
    
    [ 7654.586496] ==================================================================
    [ 7654.594573] BUG: KASAN: global-out-of-bounds in nlattr_set+0x164/0xde9 [openvswitch]
    [ 7654.603214] Read of size 4 at addr ffffffffc169ecf0 by task handler29/87430
    [ 7654.610983]
    [ 7654.612644] CPU: 21 PID: 87430 Comm: handler29 Kdump: loaded Not tainted 3.10.0-866.el7.test.x86_64 #1
    [ 7654.623030] Hardware name: Dell Inc. PowerEdge R730/072T6D, BIOS 2.1.7 06/16/2016
    [ 7654.631379] Call Trace:
    [ 7654.634108]  [<ffffffffb65a7c50>] dump_stack+0x19/0x1b
    [ 7654.639843]  [<ffffffffb53ff373>] print_address_description+0x33/0x290
    [ 7654.647129]  [<ffffffffc169b37b>] ? nlattr_set+0x164/0xde9 [openvswitch]
    [ 7654.654607]  [<ffffffffb53ff812>] kasan_report.part.3+0x242/0x330
    [ 7654.661406]  [<ffffffffb53ff9b4>] __asan_report_load4_noabort+0x34/0x40
    [ 7654.668789]  [<ffffffffc169b37b>] nlattr_set+0x164/0xde9 [openvswitch]
    [ 7654.676076]  [<ffffffffc167ef68>] ovs_nla_get_match+0x10c8/0x1900 [openvswitch]
    [ 7654.684234]  [<ffffffffb61e9cc8>] ? genl_rcv+0x28/0x40
    [ 7654.689968]  [<ffffffffb61e7733>] ? netlink_unicast+0x3f3/0x590
    [ 7654.696574]  [<ffffffffc167dea0>] ? ovs_nla_put_tunnel_info+0xb0/0xb0 [openvswitch]
    [ 7654.705122]  [<ffffffffb4f41b50>] ? unwind_get_return_address+0xb0/0xb0
    [ 7654.712503]  [<ffffffffb65d9355>] ? system_call_fastpath+0x1c/0x21
    [ 7654.719401]  [<ffffffffb4f41d79>] ? update_stack_state+0x229/0x370
    [ 7654.726298]  [<ffffffffb4f41d79>] ? update_stack_state+0x229/0x370
    [ 7654.733195]  [<ffffffffb53fe4b5>] ? kasan_unpoison_shadow+0x35/0x50
    [ 7654.740187]  [<ffffffffb53fe62a>] ? kasan_kmalloc+0xaa/0xe0
    [ 7654.746406]  [<ffffffffb53fec32>] ? kasan_slab_alloc+0x12/0x20
    [ 7654.752914]  [<ffffffffb53fe711>] ? memset+0x31/0x40
    [ 7654.758456]  [<ffffffffc165bf92>] ovs_flow_cmd_new+0x2b2/0xf00 [openvswitch]
    
    [snip]
    
    [ 7655.132484] The buggy address belongs to the variable:
    [ 7655.138226]  ovs_tunnel_key_lens+0xf0/0xffffffffffffd400 [openvswitch]
    [ 7655.145507]
    [ 7655.147166] Memory state around the buggy address:
    [ 7655.152514]  ffffffffc169eb80: 00 00 00 00 00 00 00 00 00 00 fa fa fa fa fa fa
    [ 7655.160585]  ffffffffc169ec00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [ 7655.168644] >ffffffffc169ec80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fa fa
    [ 7655.176701]                                                              ^
    [ 7655.184372]  ffffffffc169ed00: fa fa fa fa 00 00 00 00 fa fa fa fa 00 00 00 05
    [ 7655.192431]  ffffffffc169ed80: fa fa fa fa 00 00 00 00 00 00 00 00 00 00 00 00
    [ 7655.200490] ==================================================================
    
    Reported-by: Hangbin Liu <liuhangbin@gmail.com>
    Fixes: 982b52700482 ("openvswitch: Fix mask generation for nested attributes.")
    Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
    Reviewed-by: Sabrina Dubroca <sd@queasysnail.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8e1b8e327903a77ca78233b9ae3e8ba2ef3c4364
Author: Andre Tomt <andre@tomt.net>
Date:   Mon May 7 04:24:39 2018 +0200

    net/tls: Fix connection stall on partial tls record
    
    [ Upstream commit 080324c36ade319f57e505633ab54f6f53289b45 ]
    
    In the case of writing a partial tls record we forgot to clear the
    ctx->in_tcp_sendpages flag, causing some connections to stall.
    
    Fixes: c212d2c7fc47 ("net/tls: Don't recursively call push_record during tls_write_space callbacks")
    Signed-off-by: Andre Tomt <andre@tomt.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3ac0f3e0b823a1217896ae70a731c825bf26f778
Author: Dave Watson <davejwatson@fb.com>
Date:   Tue May 1 13:05:39 2018 -0700

    net/tls: Don't recursively call push_record during tls_write_space callbacks
    
    [ Upstream commit c212d2c7fc4736d49be102fb7a1a545cdc2f1fea ]
    
    It is reported that in some cases, write_space may be called in
    do_tcp_sendpages, such that we recursively invoke do_tcp_sendpages again:
    
    [  660.468802]  ? do_tcp_sendpages+0x8d/0x580
    [  660.468826]  ? tls_push_sg+0x74/0x130 [tls]
    [  660.468852]  ? tls_push_record+0x24a/0x390 [tls]
    [  660.468880]  ? tls_write_space+0x6a/0x80 [tls]
    ...
    
    tls_push_sg already does a loop over all sending sg's, so ignore
    any tls_write_space notifications until we are done sending.
    We then have to call the previous write_space to wake up
    poll() waiters after we are done with the send loop.
    
    Reported-by: Andre Tomt <andre@tomt.net>
    Signed-off-by: Dave Watson <davejwatson@fb.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 78ac65e8e940a0d590a7a2d838ed0cb7d909912a
Author: Lance Richardson <lance.richardson.net@gmail.com>
Date:   Wed Apr 25 10:21:54 2018 -0400

    net: support compat 64-bit time in {s,g}etsockopt
    
    [ Upstream commit 988bf7243e03ef69238381594e0334a79cef74a6 ]
    
    For the x32 ABI, struct timeval has two 64-bit fields. However
    the kernel currently interprets the user-space values used for
    the SO_RCVTIMEO and SO_SNDTIMEO socket options as having a pair
    of 32-bit fields.
    
    When the seconds portion of the requested timeout is less than 2**32,
    the seconds portion of the effective timeout is correct but the
    microseconds portion is zero.  When the seconds portion of the
    requested timeout is zero and the microseconds portion is non-zero,
    the kernel interprets the timeout as zero (never timeout).
    
    Fix by using 64-bit time for SO_RCVTIMEO/SO_SNDTIMEO as required
    for the ABI.
    
    The code included below demonstrates the problem.
    
    Results before patch:
        $ gcc -m64 -Wall -O2 -o socktmo socktmo.c && ./socktmo
        recv time: 2.008181 seconds
        send time: 2.015985 seconds
    
        $ gcc -m32 -Wall -O2 -o socktmo socktmo.c && ./socktmo
        recv time: 2.016763 seconds
        send time: 2.016062 seconds
    
        $ gcc -mx32 -Wall -O2 -o socktmo socktmo.c && ./socktmo
        recv time: 1.007239 seconds
        send time: 1.023890 seconds
    
    Results after patch:
        $ gcc -m64 -O2 -Wall -o socktmo socktmo.c && ./socktmo
        recv time: 2.010062 seconds
        send time: 2.015836 seconds
    
        $ gcc -m32 -O2 -Wall -o socktmo socktmo.c && ./socktmo
        recv time: 2.013974 seconds
        send time: 2.015981 seconds
    
        $ gcc -mx32 -O2 -Wall -o socktmo socktmo.c && ./socktmo
        recv time: 2.030257 seconds
        send time: 2.013383 seconds
    
     #include <stdio.h>
     #include <stdlib.h>
     #include <sys/socket.h>
     #include <sys/types.h>
     #include <sys/time.h>
    
     void checkrc(char *str, int rc)
     {
             if (rc >= 0)
                     return;
    
             perror(str);
             exit(1);
     }
    
     static char buf[1024];
     int main(int argc, char **argv)
     {
             int rc;
             int socks[2];
             struct timeval tv;
             struct timeval start, end, delta;
    
             rc = socketpair(AF_UNIX, SOCK_STREAM, 0, socks);
             checkrc("socketpair", rc);
    
             /* set timeout to 1.999999 seconds */
             tv.tv_sec = 1;
             tv.tv_usec = 999999;
             rc = setsockopt(socks[0], SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof tv);
             rc = setsockopt(socks[0], SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof tv);
             checkrc("setsockopt", rc);
    
             /* measure actual receive timeout */
             gettimeofday(&start, NULL);
             rc = recv(socks[0], buf, sizeof buf, 0);
             gettimeofday(&end, NULL);
             timersub(&end, &start, &delta);
    
             printf("recv time: %ld.%06ld seconds\n",
                    (long)delta.tv_sec, (long)delta.tv_usec);
    
             /* fill send buffer */
             do {
                     rc = send(socks[0], buf, sizeof buf, 0);
             } while (rc > 0);
    
             /* measure actual send timeout */
             gettimeofday(&start, NULL);
             rc = send(socks[0], buf, sizeof buf, 0);
             gettimeofday(&end, NULL);
             timersub(&end, &start, &delta);
    
             printf("send time: %ld.%06ld seconds\n",
                    (long)delta.tv_sec, (long)delta.tv_usec);
             exit(0);
     }
    
    Fixes: 515c7af85ed9 ("x32: Use compat shims for {g,s}etsockopt")
    Reported-by: Gopal RajagopalSai <gopalsr83@gmail.com>
    Signed-off-by: Lance Richardson <lance.richardson.net@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b2a4d52fae0da1e60be0a62a3f9efdb11396557b
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed May 2 10:03:30 2018 -0700

    net_sched: fq: take care of throttled flows before reuse
    
    [ Upstream commit 7df40c2673a1307c3260aab6f9d4b9bf97ca8fd7 ]
    
    Normally, a socket can not be freed/reused unless all its TX packets
    left qdisc and were TX-completed. However connect(AF_UNSPEC) allows
    this to happen.
    
    With commit fc59d5bdf1e3 ("pkt_sched: fq: clear time_next_packet for
    reused flows") we cleared f->time_next_packet but took no special
    action if the flow was still in the throttled rb-tree.
    
    Since f->time_next_packet is the key used in the rb-tree searches,
    blindly clearing it might break rb-tree integrity. We need to make
    sure the flow is no longer in the rb-tree to avoid this problem.
    
    Fixes: fc59d5bdf1e3 ("pkt_sched: fq: clear time_next_packet for reused flows")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6a5b0444e703da81660bef3c95f8b6a14a87d30d
Author: Roman Mashak <mrv@mojatatu.com>
Date:   Fri May 11 14:35:33 2018 -0400

    net sched actions: fix refcnt leak in skbmod
    
    [ Upstream commit a52956dfc503f8cc5cfe6454959b7049fddb4413 ]
    
    When application fails to pass flags in netlink TLV when replacing
    existing skbmod action, the kernel will leak refcnt:
    
    $ tc actions get action skbmod index 1
    total acts 0
    
            action order 0: skbmod pipe set smac 00:11:22:33:44:55
             index 1 ref 1 bind 0
    
    For example, at this point a buggy application replaces the action with
    index 1 with new smac 00:aa:22:33:44:55, it fails because of zero flags,
    however refcnt gets bumped:
    
    $ tc actions get actions skbmod index 1
    total acts 0
    
            action order 0: skbmod pipe set smac 00:11:22:33:44:55
             index 1 ref 2 bind 0
    $
    
    Tha patch fixes this by calling tcf_idr_release() on existing actions.
    
    Fixes: 86da71b57383d ("net_sched: Introduce skbmod action")
    Signed-off-by: Roman Mashak <mrv@mojatatu.com>
    Acked-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1abd8c5fea11d4eeb6a135c05375e97c7d2ad308
Author: Adi Nissim <adin@mellanox.com>
Date:   Wed Apr 25 11:21:32 2018 +0300

    net/mlx5: E-Switch, Include VF RDMA stats in vport statistics
    
    [ Upstream commit 88d725bbb43cd63a40c8ef70dd373f1d38ead2e3 ]
    
    The host side reporting of VF vport statistics didn't include the VF
    RDMA traffic.
    
    Fixes: 3b751a2a418a ("net/mlx5: E-Switch, Introduce get vf statistics")
    Signed-off-by: Adi Nissim <adin@mellanox.com>
    Reported-by: Ariel Almog <ariela@mellanox.com>
    Reviewed-by: Or Gerlitz <ogerlitz@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 57e0a9f2174e3975894578b4c853859bf6e8245d
Author: Roi Dayan <roid@mellanox.com>
Date:   Thu Mar 22 18:51:37 2018 +0200

    net/mlx5e: Err if asked to offload TC match on frag being first
    
    [ Upstream commit f85900c3e13fdb61f040c9feecbcda601e0cdcfb ]
    
    The HW doesn't support matching on frag first/later, return error if we are
    asked to offload that.
    
    Fixes: 3f7d0eb42d59 ("net/mlx5e: Offload TC matching on packets being IP fragments")
    Signed-off-by: Roi Dayan <roid@mellanox.com>
    Reviewed-by: Or Gerlitz <ogerlitz@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit edc0c15f6f613b035fcc47a5bcc4004cad7cab96
Author: Moshe Shemesh <moshe@mellanox.com>
Date:   Wed May 9 18:35:13 2018 +0300

    net/mlx4_en: Verify coalescing parameters are in range
    
    [ Upstream commit 6ad4e91c6d796b38a7f0e724db1de28eeb122bad ]
    
    Add check of coalescing parameters received through ethtool are within
    range of values supported by the HW.
    Driver gets the coalescing rx/tx-usecs and rx/tx-frames as set by the
    users through ethtool. The ethtool support up to 32 bit value for each.
    However, mlx4 modify cq limits the coalescing time parameter and
    coalescing frames parameters to 16 bits.
    Return out of range error if user tries to set these parameters to
    higher values.
    Change type of sample-interval and adaptive_rx_coal parameters in mlx4
    driver to u32 as the ethtool holds them as u32 and these parameters are
    not limited due to mlx4 HW.
    
    Fixes: c27a02cd94d6 ('mlx4_en: Add driver for Mellanox ConnectX 10GbE NIC')
    Signed-off-by: Moshe Shemesh <moshe@mellanox.com>
    Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2213a18303a2ac05d964e2551b2eab0b2a0aa334
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Thu May 10 09:06:04 2018 +0200

    net/mlx4_en: Fix an error handling path in 'mlx4_en_init_netdev()'
    
    [ Upstream commit a577d868b768a3baf16cdd4841ab8cfb165521d6 ]
    
    If an error occurs, 'mlx4_en_destroy_netdev()' is called.
    It then calls 'mlx4_en_free_resources()' which does the needed resources
    cleanup.
    
    So, doing some explicit kfree in the error handling path would lead to
    some double kfree.
    
    Simplify code to avoid such a case.
    
    Fixes: 67f8b1dcb9ee ("net/mlx4_en: Refactor the XDP forwarding rings scheme")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Reviewed-by: Tariq Toukan <tariqt@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6b10014800ce0191218a4e8a2fe8447fc001439d
Author: Grygorii Strashko <grygorii.strashko@ti.com>
Date:   Tue May 1 12:41:22 2018 -0500

    net: ethernet: ti: cpsw: fix packet leaking in dual_mac mode
    
    [ Upstream commit 5e5add172ea81152d518b161ec5706503ad3d799 ]
    
    In dual_mac mode packets arrived on one port should not be forwarded by
    switch hw to another port. Only Linux Host can forward packets between
    ports. The below test case (reported in [1]) shows that packet arrived on
    one port can be leaked to anoter (reproducible with dual port evms):
     - connect port 1 (eth0) to linux Host 0 and run tcpdump or Wireshark
     - connect port 2 (eth1) to linux Host 1 with vlan 1 configured
     - ping <IPx> from Host 1 through vlan 1 interface.
    ARP packets will be seen on Host 0.
    
    Issue happens because dual_mac mode is implemnted using two vlans: 1 (Port
    1+Port 0) and 2 (Port 2+Port 0), so there are vlan records created for for
    each vlan. By default, the ALE will find valid vlan record in its table
    when vlan 1 tagged packet arrived on Port 2 and so forwards packet to all
    ports which are vlan 1 members (like Port.
    
    To avoid such behaviorr the ALE VLAN ID Ingress Check need to be enabled
    for each external CPSW port (ALE_PORTCTLn.VID_INGRESS_CHECK) so ALE will
    drop ingress packets if Rx port is not VLAN member.
    
    Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1029fb466b44e031e2724ba2356c08ebc1c6ffb6
Author: Rob Taglang <rob@taglang.io>
Date:   Thu May 3 17:13:06 2018 -0400

    net: ethernet: sun: niu set correct packet size in skb
    
    [ Upstream commit 14224923c3600bae2ac4dcae3bf0c3d4dc2812be ]
    
    Currently, skb->len and skb->data_len are set to the page size, not
    the packet size. This causes the frame check sequence to not be
    located at the "end" of the packet resulting in ethernet frame check
    errors. The driver does work currently, but stricter kernel facing
    networking solutions like OpenVSwitch will drop these packets as
    invalid.
    
    These changes set the packet size correctly so that these errors no
    longer occur. The length does not include the frame check sequence, so
    that subtraction was removed.
    
    Tested on Oracle/SUN Multithreaded 10-Gigabit Ethernet Network
    Controller [108e:abcd] and validated in wireshark.
    
    Signed-off-by: Rob Taglang <rob@taglang.io>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1e22ffab52c0367feef009cf5c650988c258c895
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon May 7 09:02:25 2018 -0700

    llc: better deal with too small mtu
    
    [ Upstream commit 2c5d5b13c6eb79f5677e206b8aad59b3a2097f60 ]
    
    syzbot loves to set very small mtu on devices, since it brings joy.
    We must make llc_ui_sendmsg() fool proof.
    
    usercopy: Kernel memory overwrite attempt detected to wrapped address (offset 0, size 18446612139802320068)!
    
    kernel BUG at mm/usercopy.c:100!
    invalid opcode: 0000 [#1] SMP KASAN
    Dumping ftrace buffer:
       (ftrace buffer empty)
    Modules linked in:
    CPU: 0 PID: 17464 Comm: syz-executor1 Not tainted 4.17.0-rc3+ #36
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    RIP: 0010:usercopy_abort+0xbb/0xbd mm/usercopy.c:88
    RSP: 0018:ffff8801868bf800 EFLAGS: 00010282
    RAX: 000000000000006c RBX: ffffffff87d2fb00 RCX: 0000000000000000
    RDX: 000000000000006c RSI: ffffffff81610731 RDI: ffffed0030d17ef6
    RBP: ffff8801868bf858 R08: ffff88018daa4200 R09: ffffed003b5c4fb0
    R10: ffffed003b5c4fb0 R11: ffff8801dae27d87 R12: ffffffff87d2f8e0
    R13: ffffffff87d2f7a0 R14: ffffffff87d2f7a0 R15: ffffffff87d2f7a0
    FS:  00007f56a14ac700(0000) GS:ffff8801dae00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000001b2bc21000 CR3: 00000001abeb1000 CR4: 00000000001426f0
    DR0: 0000000020000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000030602
    Call Trace:
     check_bogus_address mm/usercopy.c:153 [inline]
     __check_object_size+0x5d9/0x5d9 mm/usercopy.c:256
     check_object_size include/linux/thread_info.h:108 [inline]
     check_copy_size include/linux/thread_info.h:139 [inline]
     copy_from_iter_full include/linux/uio.h:121 [inline]
     memcpy_from_msg include/linux/skbuff.h:3305 [inline]
     llc_ui_sendmsg+0x4b1/0x1530 net/llc/af_llc.c:941
     sock_sendmsg_nosec net/socket.c:629 [inline]
     sock_sendmsg+0xd5/0x120 net/socket.c:639
     __sys_sendto+0x3d7/0x670 net/socket.c:1789
     __do_sys_sendto net/socket.c:1801 [inline]
     __se_sys_sendto net/socket.c:1797 [inline]
     __x64_sys_sendto+0xe1/0x1a0 net/socket.c:1797
     do_syscall_64+0x1b1/0x800 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    RIP: 0033:0x455979
    RSP: 002b:00007f56a14abc68 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
    RAX: ffffffffffffffda RBX: 00007f56a14ac6d4 RCX: 0000000000455979
    RDX: 0000000000000000 RSI: 0000000020000000 RDI: 0000000000000018
    RBP: 000000000072bea0 R08: 00000000200012c0 R09: 0000000000000010
    R10: 0000000000000000 R11: 0000000000000246 R12: 00000000ffffffff
    R13: 0000000000000548 R14: 00000000006fbf60 R15: 0000000000000000
    Code: 55 c0 e8 c0 55 bb ff ff 75 c8 48 8b 55 c0 4d 89 f9 ff 75 d0 4d 89 e8 48 89 d9 4c 89 e6 41 56 48 c7 c7 80 fa d2 87 e8 a0 0b a3 ff <0f> 0b e8 95 55 bb ff e8 c0 a8 f7 ff 8b 95 14 ff ff ff 4d 89 e8
    RIP: usercopy_abort+0xbb/0xbd mm/usercopy.c:88 RSP: ffff8801868bf800
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a7aea8e273599e6aeb5bd4f87d5650937ef1e64c
Author: Andrey Ignatov <rdna@fb.com>
Date:   Thu May 10 10:59:34 2018 -0700

    ipv4: fix memory leaks in udp_sendmsg, ping_v4_sendmsg
    
    [ Upstream commit 1b97013bfb11d66f041de691de6f0fec748ce016 ]
    
    Fix more memory leaks in ip_cmsg_send() callers. Part of them were fixed
    earlier in 919483096bfe.
    
    * udp_sendmsg one was there since the beginning when linux sources were
      first added to git;
    * ping_v4_sendmsg one was copy/pasted in c319b4d76b9e.
    
    Whenever return happens in udp_sendmsg() or ping_v4_sendmsg() IP options
    have to be freed if they were allocated previously.
    
    Add label so that future callers (if any) can use it instead of kfree()
    before return that is easy to forget.
    
    Fixes: c319b4d76b9e (net: ipv4: add IPPROTO_ICMP socket kind)
    Signed-off-by: Andrey Ignatov <rdna@fb.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c751af5229899e4d57d7690f7d2fe551c6491f23
Author: Julian Anastasov <ja@ssi.bg>
Date:   Wed May 2 09:41:19 2018 +0300

    ipv4: fix fnhe usage by non-cached routes
    
    [ Upstream commit 94720e3aee6884d8c8beb678001629da60ec6366 ]
    
    Allow some non-cached routes to use non-expired fnhe:
    
    1. ip_del_fnhe: moved above and now called by find_exception.
    The 4.5+ commit deed49df7390 expires fnhe only when caching
    routes. Change that to:
    
    1.1. use fnhe for non-cached local output routes, with the help
    from (2)
    
    1.2. allow __mkroute_input to detect expired fnhe (outdated
    fnhe_gw, for example) when do_cache is false, eg. when itag!=0
    for unicast destinations.
    
    2. __mkroute_output: keep fi to allow local routes with orig_oif != 0
    to use fnhe info even when the new route will not be cached into fnhe.
    After commit 839da4d98960 ("net: ipv4: set orig_oif based on fib
    result for local traffic") it means all local routes will be affected
    because they are not cached. This change is used to solve a PMTU
    problem with IPVS (and probably Netfilter DNAT) setups that redirect
    local clients from target local IP (local route to Virtual IP)
    to new remote IP target, eg. IPVS TUN real server. Loopback has
    64K MTU and we need to create fnhe on the local route that will
    keep the reduced PMTU for the Virtual IP. Without this change
    fnhe_pmtu is updated from ICMP but never exposed to non-cached
    local routes. This includes routes with flowi4_oif!=0 for 4.6+ and
    with flowi4_oif=any for 4.14+).
    
    3. update_or_create_fnhe: make sure fnhe_expires is not 0 for
    new entries
    
    Fixes: 839da4d98960 ("net: ipv4: set orig_oif based on fib result for local traffic")
    Fixes: d6d5e999e5df ("route: do not cache fib route info on local routes with oif")
    Fixes: deed49df7390 ("route: check and remove route cache when we get route")
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: Julian Anastasov <ja@ssi.bg>
    Acked-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 91c2d70192c717e8bda6c5524ad682d30ded0bf5
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu May 3 09:39:20 2018 -0700

    dccp: fix tasklet usage
    
    [ Upstream commit a8d7aa17bbc970971ccdf71988ea19230ab368b1 ]
    
    syzbot reported a crash in tasklet_action_common() caused by dccp.
    
    dccp needs to make sure socket wont disappear before tasklet handler
    has completed.
    
    This patch takes a reference on the socket when arming the tasklet,
    and moves the sock_put() from dccp_write_xmit_timer() to dccp_write_xmitlet()
    
    kernel BUG at kernel/softirq.c:514!
    invalid opcode: 0000 [#1] SMP KASAN
    Dumping ftrace buffer:
       (ftrace buffer empty)
    Modules linked in:
    CPU: 1 PID: 17 Comm: ksoftirqd/1 Not tainted 4.17.0-rc3+ #30
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    RIP: 0010:tasklet_action_common.isra.19+0x6db/0x700 kernel/softirq.c:515
    RSP: 0018:ffff8801d9b3faf8 EFLAGS: 00010246
    dccp_close: ABORT with 65423 bytes unread
    RAX: 1ffff1003b367f6b RBX: ffff8801daf1f3f0 RCX: 0000000000000000
    RDX: ffff8801cf895498 RSI: 0000000000000004 RDI: 0000000000000000
    RBP: ffff8801d9b3fc40 R08: ffffed0039f12a95 R09: ffffed0039f12a94
    dccp_close: ABORT with 65423 bytes unread
    R10: ffffed0039f12a94 R11: ffff8801cf8954a3 R12: 0000000000000000
    R13: ffff8801d9b3fc18 R14: dffffc0000000000 R15: ffff8801cf895490
    FS:  0000000000000000(0000) GS:ffff8801daf00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000001b2bc28000 CR3: 00000001a08a9000 CR4: 00000000001406e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     tasklet_action+0x1d/0x20 kernel/softirq.c:533
     __do_softirq+0x2e0/0xaf5 kernel/softirq.c:285
    dccp_close: ABORT with 65423 bytes unread
     run_ksoftirqd+0x86/0x100 kernel/softirq.c:646
     smpboot_thread_fn+0x417/0x870 kernel/smpboot.c:164
     kthread+0x345/0x410 kernel/kthread.c:238
     ret_from_fork+0x3a/0x50 arch/x86/entry/entry_64.S:412
    Code: 48 8b 85 e8 fe ff ff 48 8b 95 f0 fe ff ff e9 94 fb ff ff 48 89 95 f0 fe ff ff e8 81 53 6e 00 48 8b 95 f0 fe ff ff e9 62 fb ff ff <0f> 0b 48 89 cf 48 89 8d e8 fe ff ff e8 64 53 6e 00 48 8b 8d e8
    RIP: tasklet_action_common.isra.19+0x6db/0x700 kernel/softirq.c:515 RSP: ffff8801d9b3faf8
    
    Fixes: dc841e30eaea ("dccp: Extend CCID packet dequeueing interface")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Cc: Gerrit Renker <gerrit@erg.abdn.ac.uk>
    Cc: dccp@vger.kernel.org
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2c13a91e0fc52fcba83dbdacbdfaf07de1a4f44f
Author: Hangbin Liu <liuhangbin@gmail.com>
Date:   Fri Apr 27 20:59:24 2018 +0800

    bridge: check iface upper dev when setting master via ioctl
    
    [ Upstream commit e8238fc2bd7b4c3c7554fa2df067e796610212fc ]
    
    When we set a bond slave's master to bridge via ioctl, we only check
    the IFF_BRIDGE_PORT flag. Although we will find the slave's real master
    at netdev_master_upper_dev_link() later, it already does some settings
    and allocates some resources. It would be better to return as early
    as possible.
    
    v1 -> v2:
    use netdev_master_upper_dev_get() instead of netdev_has_any_upper_dev()
    to check if we have a master, because not all upper devs are masters,
    e.g. vlan device.
    
    Reported-by: syzbot+de73361ee4971b6e6f75@syzkaller.appspotmail.com
    Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
    Acked-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ece94a76618e1df547ea99544fb69de5a5079633
Author: Ingo Molnar <mingo@elte.hu>
Date:   Wed May 2 13:30:57 2018 +0200

    8139too: Use disable_irq_nosync() in rtl8139_poll_controller()
    
    [ Upstream commit af3e0fcf78879f718c5f73df0814951bd7057d34 ]
    
    Use disable_irq_nosync() instead of disable_irq() as this might be
    called in atomic context with netpoll.
    
    Signed-off-by: Ingo Molnar <mingo@elte.hu>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>