commit 1656b14572090df53ff096f158726c1d1355f5ca
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sun May 5 14:42:41 2019 +0200

    Linux 4.19.40

commit cc313d405b0ceebd02f2811ab7cf83fd3474d0e8
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Sun Mar 3 18:24:33 2019 +0100

    ath10k: Drop WARN_ON()s that always trigger during system resume
    
    commit 9e80ad37f6788ed52b89a3cfcd593e0aa69b216d upstream.
    
    ath10k_mac_vif_chan() always returns an error for the given vif
    during system-wide resume which reliably triggers two WARN_ON()s
    in ath10k_bss_info_changed() and they are not particularly
    useful in that code path, so drop them.
    
    Tested: QCA6174 hw3.2 PCI with WLAN.RM.2.0-00180-QCARMSWPZ-1
    Tested: QCA6174 hw3.2 SDIO with WLAN.RMH.4.4.1-00007-QCARMSWP-1
    
    Fixes: cd93b83ad927 ("ath10k: support for multicast rate control")
    Fixes: f279294e9ee2 ("ath10k: add support for configuring management packet rate")
    Cc: stable@vger.kernel.org
    Reviewed-by: Brian Norris <briannorris@chromium.org>
    Tested-by: Brian Norris <briannorris@chromium.org>
    Tested-by: Claire Chang <tientzu@chromium.org>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d0a5000f10e7a568d03c25ad6d397451061a65c4
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sun Apr 28 18:04:11 2019 +0200

    ALSA: line6: use dynamic buffers
    
    commit e5c812e84f0dece3400d5caf42522287e6ef139f upstream.
    
    The line6 driver uses a lot of USB buffers off of the stack, which is
    not allowed on many systems, causing the driver to crash on some of
    them.  Fix this up by dynamically allocating the buffers with kmalloc()
    which allows for proper DMA-able memory.
    
    Reported-by: Christo Gouws <gouws.christo@gmail.com>
    Reported-by: Alan Stern <stern@rowland.harvard.edu>
    Tested-by: Christo Gouws <gouws.christo@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 68d49ff47789a8bef15c6bacfb80cee95ccc23f7
Author: Jim Mattson <jmattson@google.com>
Date:   Thu Jan 17 11:55:58 2019 -0800

    KVM: nVMX: Fix size checks in vmx_set_nested_state
    
    commit e8ab8d24b488632d07ce5ddb261f1d454114415b upstream.
    
    The size checks in vmx_nested_state are wrong because the calculations
    are made based on the size of a pointer to a struct kvm_nested_state
    rather than the size of a struct kvm_nested_state.
    
    Reported-by: Felix Wilhelm  <fwilhelm@google.com>
    Signed-off-by: Jim Mattson <jmattson@google.com>
    Reviewed-by: Drew Schmitt <dasch@google.com>
    Reviewed-by: Marc Orr <marcorr@google.com>
    Reviewed-by: Peter Shier <pshier@google.com>
    Reviewed-by: Krish Sadhukhan <krish.sadhukhan@oracle.com>
    Fixes: 8fcc4b5923af5de58b80b53a069453b135693304
    Cc: stable@ver.kernel.org
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 499bbe739d5aeb1bb775fed5523902f840cbe67b
Author: Sean Christopherson <sean.j.christopherson@intel.com>
Date:   Mon Apr 29 07:04:15 2019 -0700

    KVM: x86: Whitelist port 0x7e for pre-incrementing %rip
    
    commit 8764ed55c9705e426d889ff16c26f398bba70b9b upstream.
    
    KVM's recent bug fix to update %rip after emulating I/O broke userspace
    that relied on the previous behavior of incrementing %rip prior to
    exiting to userspace.  When running a Windows XP guest on AMD hardware,
    Qemu may patch "OUT 0x7E" instructions in reaction to the OUT itself.
    Because KVM's old behavior was to increment %rip before exiting to
    userspace to handle the I/O, Qemu manually adjusted %rip to account for
    the OUT instruction.
    
    Arguably this is a userspace bug as KVM requires userspace to re-enter
    the kernel to complete instruction emulation before taking any other
    actions.  That being said, this is a bit of a grey area and breaking
    userspace that has worked for many years is bad.
    
    Pre-increment %rip on OUT to port 0x7e before exiting to userspace to
    hack around the issue.
    
    Fixes: 45def77ebf79e ("KVM: x86: update %rip after emulating IO")
    Reported-by: Simon Becherer <simon@becherer.de>
    Reported-and-tested-by: Iakov Karpov <srid@rkmail.ru>
    Reported-by: Gabriele Balducci <balducci@units.it>
    Reported-by: Antti Antinoja <reader@fennosys.fi>
    Cc: stable@vger.kernel.org
    Cc: Takashi Iwai <tiwai@suse.com>
    Cc: Jiri Slaby <jslaby@suse.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d0771bd41c27e08af7bb7bb95e3c9450633770f7
Author: Jakub Kicinski <jakub.kicinski@netronome.com>
Date:   Thu Apr 25 17:35:10 2019 -0700

    net/tls: fix copy to fragments in reencrypt
    
    [ Upstream commit eb3d38d5adb520435d4e4af32529ccb13ccc9935 ]
    
    Fragments may contain data from other records so we have to account
    for that when we calculate the destination and max length of copy we
    can perform.  Note that 'offset' is the offset within the message,
    so it can't be passed as offset within the frag..
    
    Here skb_store_bits() would have realised the call is wrong and
    simply not copy data.
    
    Fixes: 4799ac81e52a ("tls: Add rx inline crypto offload")
    Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
    Reviewed-by: John Hurley <john.hurley@netronome.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dd424182bc2d5af26b67f5885c182a02d00a18a6
Author: Jakub Kicinski <jakub.kicinski@netronome.com>
Date:   Thu Apr 25 17:35:09 2019 -0700

    net/tls: don't copy negative amounts of data in reencrypt
    
    [ Upstream commit 97e1caa517e22d62a283b876fb8aa5f4672c83dd ]
    
    There is no guarantee the record starts before the skb frags.
    If we don't check for this condition copy amount will get
    negative, leading to reads and writes to random memory locations.
    Familiar hilarity ensues.
    
    Fixes: 4799ac81e52a ("tls: Add rx inline crypto offload")
    Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
    Reviewed-by: John Hurley <john.hurley@netronome.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f1fd68e934091734c21e3ea21748d272f08b3fee
Author: Michael Chan <michael.chan@broadcom.com>
Date:   Thu Apr 25 22:31:55 2019 -0400

    bnxt_en: Fix uninitialized variable usage in bnxt_rx_pkt().
    
    [ Upstream commit 0b397b17a4120cb80f7bf89eb30587b3dd9b0d1d ]
    
    In bnxt_rx_pkt(), if the driver encounters BD errors, it will recycle
    the buffers and jump to the end where the uninitailized variable "len"
    is referenced.  Fix it by adding a new jump label that will skip
    the length update.  This is the most correct fix since the length
    may not be valid when we get this type of error.
    
    Fixes: 6a8788f25625 ("bnxt_en: add support for software dynamic interrupt moderation")
    Reported-by: Nathan Chancellor <natechancellor@gmail.com>
    Cc: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Michael Chan <michael.chan@broadcom.com>
    Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
    Tested-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 396350737326d0e54c848ae14e4eb7160592633d
Author: Vasundhara Volam <vasundhara-v.volam@broadcom.com>
Date:   Thu Apr 25 22:31:51 2019 -0400

    bnxt_en: Free short FW command HWRM memory in error path in bnxt_init_one()
    
    [ Upstream commit f9099d611449836a51a65f40ea7dc9cb5f2f665e ]
    
    In the bnxt_init_one() error path, short FW command request memory
    is not freed. This patch fixes it.
    
    Fixes: e605db801bde ("bnxt_en: Support for Short Firmware Message")
    Signed-off-by: Vasundhara Volam <vasundhara-v.volam@broadcom.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 09a9213613533a7e34245df1f258764cf71a5206
Author: Michael Chan <michael.chan@broadcom.com>
Date:   Thu Apr 25 22:31:50 2019 -0400

    bnxt_en: Improve multicast address setup logic.
    
    [ Upstream commit b4e30e8e7ea1d1e35ffd64ca46f7d9a7f227b4bf ]
    
    The driver builds a list of multicast addresses and sends it to the
    firmware when the driver's ndo_set_rx_mode() is called.  In rare
    cases, the firmware can fail this call if internal resources to
    add multicast addresses are exhausted.  In that case, we should
    try the call again by setting the ALL_MCAST flag which is more
    guaranteed to succeed.
    
    Fixes: c0c050c58d84 ("bnxt_en: New Broadcom ethernet driver.")
    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 6a57fa6fa7d5d34b9ae9d77e0bb5b61a45312a44
Author: Willem de Bruijn <willemb@google.com>
Date:   Mon Apr 29 11:53:18 2019 -0400

    packet: validate msg_namelen in send directly
    
    [ Upstream commit 486efdc8f6ce802b27e15921d2353cc740c55451 ]
    
    Packet sockets in datagram mode take a destination address. Verify its
    length before passing to dev_hard_header.
    
    Prior to 2.6.14-rc3, the send code ignored sll_halen. This is
    established behavior. Directly compare msg_namelen to dev->addr_len.
    
    Change v1->v2: initialize addr in all paths
    
    Fixes: 6b8d95f1795c4 ("packet: validate address length if non-zero")
    Suggested-by: David Laight <David.Laight@aculab.com>
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7a42cf4dfa43af6b1fc4a18c6ad41891e59bb1ed
Author: Hangbin Liu <liuhangbin@gmail.com>
Date:   Tue Apr 30 10:46:10 2019 +0800

    selftests: fib_rule_tests: print the result and return 1 if any tests failed
    
    [ Upstream commit f68d7c44e76532e46f292ad941aa3706cb9e6e40 ]
    
    Fixes: 65b2b4939a64 ("selftests: net: initial fib rule tests")
    Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
    Reviewed-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 b563e9bbabfeddf6d4da3b99e27b337778083018
Author: Xin Long <lucien.xin@gmail.com>
Date:   Mon Apr 29 14:16:19 2019 +0800

    sctp: avoid running the sctp state machine recursively
    
    [ Upstream commit fbd019737d71e405f86549fd738f81e2ff3dd073 ]
    
    Ying triggered a call trace when doing an asconf testing:
    
      BUG: scheduling while atomic: swapper/12/0/0x10000100
      Call Trace:
       <IRQ>  [<ffffffffa4375904>] dump_stack+0x19/0x1b
       [<ffffffffa436fcaf>] __schedule_bug+0x64/0x72
       [<ffffffffa437b93a>] __schedule+0x9ba/0xa00
       [<ffffffffa3cd5326>] __cond_resched+0x26/0x30
       [<ffffffffa437bc4a>] _cond_resched+0x3a/0x50
       [<ffffffffa3e22be8>] kmem_cache_alloc_node+0x38/0x200
       [<ffffffffa423512d>] __alloc_skb+0x5d/0x2d0
       [<ffffffffc0995320>] sctp_packet_transmit+0x610/0xa20 [sctp]
       [<ffffffffc098510e>] sctp_outq_flush+0x2ce/0xc00 [sctp]
       [<ffffffffc098646c>] sctp_outq_uncork+0x1c/0x20 [sctp]
       [<ffffffffc0977338>] sctp_cmd_interpreter.isra.22+0xc8/0x1460 [sctp]
       [<ffffffffc0976ad1>] sctp_do_sm+0xe1/0x350 [sctp]
       [<ffffffffc099443d>] sctp_primitive_ASCONF+0x3d/0x50 [sctp]
       [<ffffffffc0977384>] sctp_cmd_interpreter.isra.22+0x114/0x1460 [sctp]
       [<ffffffffc0976ad1>] sctp_do_sm+0xe1/0x350 [sctp]
       [<ffffffffc097b3a4>] sctp_assoc_bh_rcv+0xf4/0x1b0 [sctp]
       [<ffffffffc09840f1>] sctp_inq_push+0x51/0x70 [sctp]
       [<ffffffffc099732b>] sctp_rcv+0xa8b/0xbd0 [sctp]
    
    As it shows, the first sctp_do_sm() running under atomic context (NET_RX
    softirq) invoked sctp_primitive_ASCONF() that uses GFP_KERNEL flag later,
    and this flag is supposed to be used in non-atomic context only. Besides,
    sctp_do_sm() was called recursively, which is not expected.
    
    Vlad tried to fix this recursive call in Commit c0786693404c ("sctp: Fix
    oops when sending queued ASCONF chunks") by introducing a new command
    SCTP_CMD_SEND_NEXT_ASCONF. But it didn't work as this command is still
    used in the first sctp_do_sm() call, and sctp_primitive_ASCONF() will
    be called in this command again.
    
    To avoid calling sctp_do_sm() recursively, we send the next queued ASCONF
    not by sctp_primitive_ASCONF(), but by sctp_sf_do_prm_asconf() in the 1st
    sctp_do_sm() directly.
    
    Reported-by: Ying Xu <yinxu@redhat.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 fdd36abd9d092d0188a97efa74efd7c1771b1d46
Author: David Howells <dhowells@redhat.com>
Date:   Tue Apr 30 08:34:08 2019 +0100

    rxrpc: Fix net namespace cleanup
    
    [ Upstream commit b13023421b5179413421333f602850914f6a7ad8 ]
    
    In rxrpc_destroy_all_calls(), there are two phases: (1) make sure the
    ->calls list is empty, emitting error messages if not, and (2) wait for the
    RCU cleanup to happen on outstanding calls (ie. ->nr_calls becomes 0).
    
    To avoid taking the call_lock, the function prechecks ->calls and if empty,
    it returns to avoid taking the lock - this is wrong, however: it still
    needs to go and do the second phase and wait for ->nr_calls to become 0.
    
    Without this, the rxrpc_net struct may get deallocated before we get to the
    RCU cleanup for the last calls.  This can lead to:
    
      Slab corruption (Not tainted): kmalloc-16k start=ffff88802b178000, len=16384
      050: 6b 6b 6b 6b 6b 6b 6b 6b 61 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkakkkkkkk
    
    Note the "61" at offset 0x58.  This corresponds to the ->nr_calls member of
    struct rxrpc_net (which is >9k in size, and thus allocated out of the 16k
    slab).
    
    Fix this by flipping the condition on the if-statement, putting the locked
    section inside the if-body and dropping the return from there.  The
    function will then always go on to wait for the RCU cleanup on outstanding
    calls.
    
    Fixes: 2baec2c3f854 ("rxrpc: Support network namespacing")
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a976384b955370e148c462e43f1a13400e33c24a
Author: Jakub Kicinski <jakub.kicinski@netronome.com>
Date:   Mon Apr 29 12:19:12 2019 -0700

    net/tls: avoid NULL pointer deref on nskb->sk in fallback
    
    [ Upstream commit 2dcb003314032c6efb13a065ffae60d164b2dd35 ]
    
    update_chksum() accesses nskb->sk before it has been set
    by complete_skb(), move the init up.
    
    Fixes: e8f69799810c ("net/tls: Add generic NIC offload infrastructure")
    Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
    Reviewed-by: Simon Horman <simon.horman@netronome.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1d412d873a12f5d7aa1d8ef1792f330a5e0a27c2
Author: Andrew Lunn <andrew@lunn.ch>
Date:   Thu Apr 25 00:33:00 2019 +0200

    net: phy: marvell: Fix buffer overrun with stats counters
    
    [ Upstream commit fdfdf86720a34527f777cbe0d8599bf0528fa146 ]
    
    marvell_get_sset_count() returns how many statistics counters there
    are. If the PHY supports fibre, there are 3, otherwise two.
    
    marvell_get_strings() does not make this distinction, and always
    returns 3 strings. This then often results in writing past the end
    of the buffer for the strings.
    
    Fixes: 2170fef78a40 ("Marvell phy: add field to get errors from fiber link.")
    Signed-off-by: Andrew Lunn <andrew@lunn.ch>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b48a0a1207e9033bbb16995a1a091f499710538e
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue Apr 30 13:44:19 2019 +0300

    net: dsa: bcm_sf2: fix buffer overflow doing set_rxnfc
    
    [ Upstream commit f949a12fd697479f68d99dc65e9bbab68ee49043 ]
    
    The "fs->location" is a u32 that comes from the user in ethtool_set_rxnfc().
    We can't pass unclamped values to test_bit() or it results in an out of
    bounds access beyond the end of the bitmap.
    
    Fixes: 7318166cacad ("net: dsa: bcm_sf2: Add support for ethtool::rxnfc")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 485f382f2c6da326e5ceea085f45257c71f6f907
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Apr 23 09:43:26 2019 -0700

    l2tp: use rcu_dereference_sk_user_data() in l2tp_udp_encap_recv()
    
    [ Upstream commit c1c477217882c610a2ba0268f5faf36c9c092528 ]
    
    Canonical way to fetch sk_user_data from an encap_rcv() handler called
    from UDP stack in rcu protected section is to use rcu_dereference_sk_user_data(),
    otherwise compiler might read it multiple times.
    
    Fixes: d00fa9adc528 ("il2tp: fix races with tunnel socket close")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: James Chapman <jchapman@katalix.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e571a33963f4d58f2780253635b1361ab7692d7b
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Apr 30 06:27:58 2019 -0700

    l2ip: fix possible use-after-free
    
    [ Upstream commit a622b40035d16196bf19b2b33b854862595245fc ]
    
    Before taking a refcount on a rcu protected structure,
    we need to make sure the refcount is not zero.
    
    syzbot reported :
    
    refcount_t: increment on 0; use-after-free.
    WARNING: CPU: 1 PID: 23533 at lib/refcount.c:156 refcount_inc_checked lib/refcount.c:156 [inline]
    WARNING: CPU: 1 PID: 23533 at lib/refcount.c:156 refcount_inc_checked+0x61/0x70 lib/refcount.c:154
    Kernel panic - not syncing: panic_on_warn set ...
    CPU: 1 PID: 23533 Comm: syz-executor.2 Not tainted 5.1.0-rc7+ #93
    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+0x172/0x1f0 lib/dump_stack.c:113
     panic+0x2cb/0x65c kernel/panic.c:214
     __warn.cold+0x20/0x45 kernel/panic.c:571
     report_bug+0x263/0x2b0 lib/bug.c:186
     fixup_bug arch/x86/kernel/traps.c:179 [inline]
     fixup_bug arch/x86/kernel/traps.c:174 [inline]
     do_error_trap+0x11b/0x200 arch/x86/kernel/traps.c:272
     do_invalid_op+0x37/0x50 arch/x86/kernel/traps.c:291
     invalid_op+0x14/0x20 arch/x86/entry/entry_64.S:973
    RIP: 0010:refcount_inc_checked lib/refcount.c:156 [inline]
    RIP: 0010:refcount_inc_checked+0x61/0x70 lib/refcount.c:154
    Code: 1d 98 2b 2a 06 31 ff 89 de e8 db 2c 40 fe 84 db 75 dd e8 92 2b 40 fe 48 c7 c7 20 7a a1 87 c6 05 78 2b 2a 06 01 e8 7d d9 12 fe <0f> 0b eb c1 90 90 90 90 90 90 90 90 90 90 90 55 48 89 e5 41 57 41
    RSP: 0018:ffff888069f0fba8 EFLAGS: 00010286
    RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000000
    RDX: 000000000000f353 RSI: ffffffff815afcb6 RDI: ffffed100d3e1f67
    RBP: ffff888069f0fbb8 R08: ffff88809b1845c0 R09: ffffed1015d23ef1
    R10: ffffed1015d23ef0 R11: ffff8880ae91f787 R12: ffff8880a8f26968
    R13: 0000000000000004 R14: dffffc0000000000 R15: ffff8880a49a6440
     l2tp_tunnel_inc_refcount net/l2tp/l2tp_core.h:240 [inline]
     l2tp_tunnel_get+0x250/0x580 net/l2tp/l2tp_core.c:173
     pppol2tp_connect+0xc00/0x1c70 net/l2tp/l2tp_ppp.c:702
     __sys_connect+0x266/0x330 net/socket.c:1808
     __do_sys_connect net/socket.c:1819 [inline]
     __se_sys_connect net/socket.c:1816 [inline]
     __x64_sys_connect+0x73/0xb0 net/socket.c:1816
    
    Fixes: 54652eb12c1b ("l2tp: hold tunnel while looking up sessions in l2tp_netlink")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Cc: Guillaume Nault <g.nault@alphalink.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f78ec0cd0664cc1455caf0c18f3e7954ccce5e17
Author: Willem de Bruijn <willemb@google.com>
Date:   Thu Apr 25 12:06:54 2019 -0400

    ipv6: invert flowlabel sharing check in process and user mode
    
    [ Upstream commit 95c169251bf734aa555a1e8043e4d88ec97a04ec ]
    
    A request for a flowlabel fails in process or user exclusive mode must
    fail if the caller pid or uid does not match. Invert the test.
    
    Previously, the test was unsafe wrt PID recycling, but indeed tested
    for inequality: fl1->owner != fl->owner
    
    Fixes: 4f82f45730c68 ("net ip6 flowlabel: Make owner a union of struct pid* and kuid_t")
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 39eddbb7cab34ef3886c900b79ad16339103db9e
Author: Eric Dumazet <edumazet@google.com>
Date:   Sat Apr 27 16:49:06 2019 -0700

    ipv6/flowlabel: wait rcu grace period before put_pid()
    
    [ Upstream commit 6c0afef5fb0c27758f4d52b2210c61b6bd8b4470 ]
    
    syzbot was able to catch a use-after-free read in pid_nr_ns() [1]
    
    ip6fl_seq_show() seems to use RCU protection, dereferencing fl->owner.pid
    but fl_free() releases fl->owner.pid before rcu grace period is started.
    
    [1]
    
    BUG: KASAN: use-after-free in pid_nr_ns+0x128/0x140 kernel/pid.c:407
    Read of size 4 at addr ffff888094012a04 by task syz-executor.0/18087
    
    CPU: 0 PID: 18087 Comm: syz-executor.0 Not tainted 5.1.0-rc6+ #89
    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+0x172/0x1f0 lib/dump_stack.c:113
     print_address_description.cold+0x7c/0x20d mm/kasan/report.c:187
     kasan_report.cold+0x1b/0x40 mm/kasan/report.c:317
     __asan_report_load4_noabort+0x14/0x20 mm/kasan/generic_report.c:131
     pid_nr_ns+0x128/0x140 kernel/pid.c:407
     ip6fl_seq_show+0x2f8/0x4f0 net/ipv6/ip6_flowlabel.c:794
     seq_read+0xad3/0x1130 fs/seq_file.c:268
     proc_reg_read+0x1fe/0x2c0 fs/proc/inode.c:227
     do_loop_readv_writev fs/read_write.c:701 [inline]
     do_loop_readv_writev fs/read_write.c:688 [inline]
     do_iter_read+0x4a9/0x660 fs/read_write.c:922
     vfs_readv+0xf0/0x160 fs/read_write.c:984
     kernel_readv fs/splice.c:358 [inline]
     default_file_splice_read+0x475/0x890 fs/splice.c:413
     do_splice_to+0x12a/0x190 fs/splice.c:876
     splice_direct_to_actor+0x2d2/0x970 fs/splice.c:953
     do_splice_direct+0x1da/0x2a0 fs/splice.c:1062
     do_sendfile+0x597/0xd00 fs/read_write.c:1443
     __do_sys_sendfile64 fs/read_write.c:1498 [inline]
     __se_sys_sendfile64 fs/read_write.c:1490 [inline]
     __x64_sys_sendfile64+0x15a/0x220 fs/read_write.c:1490
     do_syscall_64+0x103/0x610 arch/x86/entry/common.c:290
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    RIP: 0033:0x458da9
    Code: ad b8 fb ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 0f 83 7b b8 fb ff c3 66 2e 0f 1f 84 00 00 00 00
    RSP: 002b:00007f300d24bc78 EFLAGS: 00000246 ORIG_RAX: 0000000000000028
    RAX: ffffffffffffffda RBX: 0000000000000004 RCX: 0000000000458da9
    RDX: 00000000200000c0 RSI: 0000000000000008 RDI: 0000000000000007
    RBP: 000000000073bf00 R08: 0000000000000000 R09: 0000000000000000
    R10: 000000000000005a R11: 0000000000000246 R12: 00007f300d24c6d4
    R13: 00000000004c5fa3 R14: 00000000004da748 R15: 00000000ffffffff
    
    Allocated by task 17543:
     save_stack+0x45/0xd0 mm/kasan/common.c:75
     set_track mm/kasan/common.c:87 [inline]
     __kasan_kmalloc mm/kasan/common.c:497 [inline]
     __kasan_kmalloc.constprop.0+0xcf/0xe0 mm/kasan/common.c:470
     kasan_slab_alloc+0xf/0x20 mm/kasan/common.c:505
     slab_post_alloc_hook mm/slab.h:437 [inline]
     slab_alloc mm/slab.c:3393 [inline]
     kmem_cache_alloc+0x11a/0x6f0 mm/slab.c:3555
     alloc_pid+0x55/0x8f0 kernel/pid.c:168
     copy_process.part.0+0x3b08/0x7980 kernel/fork.c:1932
     copy_process kernel/fork.c:1709 [inline]
     _do_fork+0x257/0xfd0 kernel/fork.c:2226
     __do_sys_clone kernel/fork.c:2333 [inline]
     __se_sys_clone kernel/fork.c:2327 [inline]
     __x64_sys_clone+0xbf/0x150 kernel/fork.c:2327
     do_syscall_64+0x103/0x610 arch/x86/entry/common.c:290
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    Freed by task 7789:
     save_stack+0x45/0xd0 mm/kasan/common.c:75
     set_track mm/kasan/common.c:87 [inline]
     __kasan_slab_free+0x102/0x150 mm/kasan/common.c:459
     kasan_slab_free+0xe/0x10 mm/kasan/common.c:467
     __cache_free mm/slab.c:3499 [inline]
     kmem_cache_free+0x86/0x260 mm/slab.c:3765
     put_pid.part.0+0x111/0x150 kernel/pid.c:111
     put_pid+0x20/0x30 kernel/pid.c:105
     fl_free+0xbe/0xe0 net/ipv6/ip6_flowlabel.c:102
     ip6_fl_gc+0x295/0x3e0 net/ipv6/ip6_flowlabel.c:152
     call_timer_fn+0x190/0x720 kernel/time/timer.c:1325
     expire_timers kernel/time/timer.c:1362 [inline]
     __run_timers kernel/time/timer.c:1681 [inline]
     __run_timers kernel/time/timer.c:1649 [inline]
     run_timer_softirq+0x652/0x1700 kernel/time/timer.c:1694
     __do_softirq+0x266/0x95a kernel/softirq.c:293
    
    The buggy address belongs to the object at ffff888094012a00
     which belongs to the cache pid_2 of size 88
    The buggy address is located 4 bytes inside of
     88-byte region [ffff888094012a00, ffff888094012a58)
    The buggy address belongs to the page:
    page:ffffea0002500480 count:1 mapcount:0 mapping:ffff88809a483080 index:0xffff888094012980
    flags: 0x1fffc0000000200(slab)
    raw: 01fffc0000000200 ffffea00018a3508 ffffea0002524a88 ffff88809a483080
    raw: ffff888094012980 ffff888094012000 000000010000001b 0000000000000000
    page dumped because: kasan: bad access detected
    
    Memory state around the buggy address:
     ffff888094012900: fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc fc
     ffff888094012980: fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc fc
    >ffff888094012a00: fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc fc
                       ^
     ffff888094012a80: fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc fc
     ffff888094012b00: fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc fc
    
    Fixes: 4f82f45730c6 ("net ip6 flowlabel: Make owner a union of struct pid * and kuid_t")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Eric W. Biederman <ebiederm@xmission.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 1a9e0134af40f0d799d09beb18265300125d06d9
Author: Eric Dumazet <edumazet@google.com>
Date:   Sun Apr 28 12:22:25 2019 -0700

    ipv6: fix races in ip6_dst_destroy()
    
    [ Upstream commit 0e2338749192ce0e52e7174c5352f627632f478a ]
    
    We had many syzbot reports that seem to be caused by use-after-free
    of struct fib6_info.
    
    ip6_dst_destroy(), fib6_drop_pcpu_from() and rt6_remove_exception()
    are writers vs rt->from, and use non consistent synchronization among
    themselves.
    
    Switching to xchg() will solve the issues with no possible
    lockdep issues.
    
    BUG: KASAN: user-memory-access in atomic_dec_and_test include/asm-generic/atomic-instrumented.h:747 [inline]
    BUG: KASAN: user-memory-access in fib6_info_release include/net/ip6_fib.h:294 [inline]
    BUG: KASAN: user-memory-access in fib6_info_release include/net/ip6_fib.h:292 [inline]
    BUG: KASAN: user-memory-access in fib6_drop_pcpu_from net/ipv6/ip6_fib.c:927 [inline]
    BUG: KASAN: user-memory-access in fib6_purge_rt+0x4f6/0x670 net/ipv6/ip6_fib.c:960
    Write of size 4 at addr 0000000000ffffb4 by task syz-executor.1/7649
    
    CPU: 0 PID: 7649 Comm: syz-executor.1 Not tainted 5.1.0-rc6+ #183
    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+0x172/0x1f0 lib/dump_stack.c:113
     kasan_report.cold+0x5/0x40 mm/kasan/report.c:321
     check_memory_region_inline mm/kasan/generic.c:185 [inline]
     check_memory_region+0x123/0x190 mm/kasan/generic.c:191
     kasan_check_write+0x14/0x20 mm/kasan/common.c:108
     atomic_dec_and_test include/asm-generic/atomic-instrumented.h:747 [inline]
     fib6_info_release include/net/ip6_fib.h:294 [inline]
     fib6_info_release include/net/ip6_fib.h:292 [inline]
     fib6_drop_pcpu_from net/ipv6/ip6_fib.c:927 [inline]
     fib6_purge_rt+0x4f6/0x670 net/ipv6/ip6_fib.c:960
     fib6_del_route net/ipv6/ip6_fib.c:1813 [inline]
     fib6_del+0xac2/0x10a0 net/ipv6/ip6_fib.c:1844
     fib6_clean_node+0x3a8/0x590 net/ipv6/ip6_fib.c:2006
     fib6_walk_continue+0x495/0x900 net/ipv6/ip6_fib.c:1928
     fib6_walk+0x9d/0x100 net/ipv6/ip6_fib.c:1976
     fib6_clean_tree+0xe0/0x120 net/ipv6/ip6_fib.c:2055
     __fib6_clean_all+0x118/0x2a0 net/ipv6/ip6_fib.c:2071
     fib6_clean_all+0x2b/0x40 net/ipv6/ip6_fib.c:2082
     rt6_sync_down_dev+0x134/0x150 net/ipv6/route.c:4057
     rt6_disable_ip+0x27/0x5f0 net/ipv6/route.c:4062
     addrconf_ifdown+0xa2/0x1220 net/ipv6/addrconf.c:3705
     addrconf_notify+0x19a/0x2260 net/ipv6/addrconf.c:3630
     notifier_call_chain+0xc7/0x240 kernel/notifier.c:93
     __raw_notifier_call_chain kernel/notifier.c:394 [inline]
     raw_notifier_call_chain+0x2e/0x40 kernel/notifier.c:401
     call_netdevice_notifiers_info+0x3f/0x90 net/core/dev.c:1753
     call_netdevice_notifiers_extack net/core/dev.c:1765 [inline]
     call_netdevice_notifiers net/core/dev.c:1779 [inline]
     dev_close_many+0x33f/0x6f0 net/core/dev.c:1522
     rollback_registered_many+0x43b/0xfd0 net/core/dev.c:8177
     rollback_registered+0x109/0x1d0 net/core/dev.c:8242
     unregister_netdevice_queue net/core/dev.c:9289 [inline]
     unregister_netdevice_queue+0x1ee/0x2c0 net/core/dev.c:9282
     unregister_netdevice include/linux/netdevice.h:2658 [inline]
     __tun_detach+0xd5b/0x1000 drivers/net/tun.c:727
     tun_detach drivers/net/tun.c:744 [inline]
     tun_chr_close+0xe0/0x180 drivers/net/tun.c:3443
     __fput+0x2e5/0x8d0 fs/file_table.c:278
     ____fput+0x16/0x20 fs/file_table.c:309
     task_work_run+0x14a/0x1c0 kernel/task_work.c:113
     exit_task_work include/linux/task_work.h:22 [inline]
     do_exit+0x90a/0x2fa0 kernel/exit.c:876
     do_group_exit+0x135/0x370 kernel/exit.c:980
     __do_sys_exit_group kernel/exit.c:991 [inline]
     __se_sys_exit_group kernel/exit.c:989 [inline]
     __x64_sys_exit_group+0x44/0x50 kernel/exit.c:989
     do_syscall_64+0x103/0x610 arch/x86/entry/common.c:290
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    RIP: 0033:0x458da9
    Code: ad b8 fb ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 0f 83 7b b8 fb ff c3 66 2e 0f 1f 84 00 00 00 00
    RSP: 002b:00007ffeafc2a6a8 EFLAGS: 00000246 ORIG_RAX: 00000000000000e7
    RAX: ffffffffffffffda RBX: 000000000000001c RCX: 0000000000458da9
    RDX: 0000000000412a80 RSI: 0000000000a54ef0 RDI: 0000000000000043
    RBP: 00000000004be552 R08: 000000000000000c R09: 000000000004c0d1
    R10: 0000000002341940 R11: 0000000000000246 R12: 00000000ffffffff
    R13: 00007ffeafc2a7f0 R14: 000000000004c065 R15: 00007ffeafc2a800
    
    Fixes: a68886a69180 ("net/ipv6: Make from in rt6_info rcu protected")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Cc: David Ahern <dsahern@gmail.com>
    Reviewed-by: David Ahern <dsahern@gmail.com>
    Acked-by: Martin KaFai Lau <kafai@fb.com>
    Acked-by: Wei Wang <weiwan@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7ea4f000c41f7f29d614a0ebb31adef7f7ad4723
Author: Martin KaFai Lau <kafai@fb.com>
Date:   Tue Apr 30 10:45:12 2019 -0700

    ipv6: A few fixes on dereferencing rt->from
    
    [ Upstream commit 886b7a50100a50f1cbd08a6f8ec5884dfbe082dc ]
    
    It is a followup after the fix in
    commit 9c69a1320515 ("route: Avoid crash from dereferencing NULL rt->from")
    
    rt6_do_redirect():
    1. NULL checking is needed on rt->from because a parallel
       fib6_info delete could happen that sets rt->from to NULL.
       (e.g. rt6_remove_exception() and fib6_drop_pcpu_from()).
    
    2. fib6_info_hold() is not enough.  Same reason as (1).
       Meaning, holding dst->__refcnt cannot ensure
       rt->from is not NULL or rt->from->fib6_ref is not 0.
    
       Instead of using fib6_info_hold_safe() which ip6_rt_cache_alloc()
       is already doing, this patch chooses to extend the rcu section
       to keep "from" dereference-able after checking for NULL.
    
    inet6_rtm_getroute():
    1. NULL checking is also needed on rt->from for a similar reason.
       Note that inet6_rtm_getroute() is using RTNL_FLAG_DOIT_UNLOCKED.
    
    Fixes: a68886a69180 ("net/ipv6: Make from in rt6_info rcu protected")
    Signed-off-by: Martin KaFai Lau <kafai@fb.com>
    Acked-by: Wei Wang <weiwan@google.com>
    Reviewed-by: David Ahern <dsahern@gmail.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 3f611a479962ed4ab3682cbb0deb476f90d513f5
Author: Shmulik Ladkani <shmulik@metanetworks.com>
Date:   Mon Apr 29 16:39:30 2019 +0300

    ipv4: ip_do_fragment: Preserve skb_iif during fragmentation
    
    [ Upstream commit d2f0c961148f65bc73eda72b9fa3a4e80973cb49 ]
    
    Previously, during fragmentation after forwarding, skb->skb_iif isn't
    preserved, i.e. 'ip_copy_metadata' does not copy skb_iif from given
    'from' skb.
    
    As a result, ip_do_fragment's creates fragments with zero skb_iif,
    leading to inconsistent behavior.
    
    Assume for example an eBPF program attached at tc egress (post
    forwarding) that examines __sk_buff->ingress_ifindex:
     - the correct iif is observed if forwarding path does not involve
       fragmentation/refragmentation
     - a bogus iif is observed if forwarding path involves
       fragmentation/refragmentatiom
    
    Fix, by preserving skb_iif during 'ip_copy_metadata'.
    
    Signed-off-by: Shmulik Ladkani <shmulik.ladkani@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>