commit 84f5ad468100f86d70096799e4ee716a17c2962f
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sat Jan 4 14:00:23 2020 +0100

    Linux 4.14.162

commit f8f4d3e589c7c0ece3b5e3b1bec37c208edaeee8
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Thu Dec 12 17:47:24 2019 +0000

    spi: fsl: use platform_get_irq() instead of of_irq_to_resource()
    
    commit 63aa6a692595d47a0785297b481072086b9272d2 upstream.
    
    Unlike irq_of_parse_and_map() which has a dummy definition on SPARC,
    of_irq_to_resource() hasn't.
    
    But as platform_get_irq() can be used instead and is generic, use it.
    
    Reported-by: kbuild test robot <lkp@intel.com>
    Suggested-by: Mark Brown <broonie@kernel.org>
    Fixes:  3194d2533eff ("spi: fsl: don't map irq during probe")
    Cc: stable@vger.kernel.org
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Link: https://lore.kernel.org/r/091a277fd0b3356dca1e29858c1c96983fc9cb25.1576172743.git.christophe.leroy@c-s.fr
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Cc: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3e8374bd5ab1e7f6e6148fe1e0178edf049e6891
Author: Taehee Yoo <ap420073@gmail.com>
Date:   Wed Dec 11 08:23:48 2019 +0000

    gtp: avoid zero size hashtable
    
    [ Upstream commit 6a902c0f31993ab02e1b6ea7085002b9c9083b6a ]
    
    GTP default hashtable size is 1024 and userspace could set specific
    hashtable size with IFLA_GTP_PDP_HASHSIZE. If hashtable size is set to 0
    from userspace,  hashtable will not work and panic will occur.
    
    Fixes: 459aa660eb1d ("gtp: add initial driver for datapath of GPRS Tunneling Protocol (GTP-U)")
    Signed-off-by: Taehee Yoo <ap420073@gmail.com>
    Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a29c4303930bc0c25ae6a4f365dcdef71447b4ea
Author: Taehee Yoo <ap420073@gmail.com>
Date:   Wed Dec 11 08:23:34 2019 +0000

    gtp: fix an use-after-free in ipv4_pdp_find()
    
    [ Upstream commit 94dc550a5062030569d4aa76e10e50c8fc001930 ]
    
    ipv4_pdp_find() is called in TX packet path of GTP.
    ipv4_pdp_find() internally uses gtp->tid_hash to lookup pdp context.
    In the current code, gtp->tid_hash and gtp->addr_hash are freed by
    ->dellink(), which is gtp_dellink().
    But gtp_dellink() would be called while packets are processing.
    So, gtp_dellink() should not free gtp->tid_hash and gtp->addr_hash.
    Instead, dev->priv_destructor() would be used because this callback
    is called after all packet processing safely.
    
    Test commands:
        ip link add veth1 type veth peer name veth2
        ip a a 172.0.0.1/24 dev veth1
        ip link set veth1 up
        ip a a 172.99.0.1/32 dev lo
    
        gtp-link add gtp1 &
    
        gtp-tunnel add gtp1 v1 200 100 172.99.0.2 172.0.0.2
        ip r a  172.99.0.2/32 dev gtp1
        ip link set gtp1 mtu 1500
    
        ip netns add ns2
        ip link set veth2 netns ns2
        ip netns exec ns2 ip a a 172.0.0.2/24 dev veth2
        ip netns exec ns2 ip link set veth2 up
        ip netns exec ns2 ip a a 172.99.0.2/32 dev lo
        ip netns exec ns2 ip link set lo up
    
        ip netns exec ns2 gtp-link add gtp2 &
        ip netns exec ns2 gtp-tunnel add gtp2 v1 100 200 172.99.0.1 172.0.0.1
        ip netns exec ns2 ip r a 172.99.0.1/32 dev gtp2
        ip netns exec ns2 ip link set gtp2 mtu 1500
    
        hping3 172.99.0.2 -2 --flood &
        ip link del gtp1
    
    Splat looks like:
    [   72.568081][ T1195] BUG: KASAN: use-after-free in ipv4_pdp_find.isra.12+0x130/0x170 [gtp]
    [   72.568916][ T1195] Read of size 8 at addr ffff8880b9a35d28 by task hping3/1195
    [   72.569631][ T1195]
    [   72.569861][ T1195] CPU: 2 PID: 1195 Comm: hping3 Not tainted 5.5.0-rc1 #199
    [   72.570547][ T1195] Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
    [   72.571438][ T1195] Call Trace:
    [   72.571764][ T1195]  dump_stack+0x96/0xdb
    [   72.572171][ T1195]  ? ipv4_pdp_find.isra.12+0x130/0x170 [gtp]
    [   72.572761][ T1195]  print_address_description.constprop.5+0x1be/0x360
    [   72.573400][ T1195]  ? ipv4_pdp_find.isra.12+0x130/0x170 [gtp]
    [   72.573971][ T1195]  ? ipv4_pdp_find.isra.12+0x130/0x170 [gtp]
    [   72.574544][ T1195]  __kasan_report+0x12a/0x16f
    [   72.575014][ T1195]  ? ipv4_pdp_find.isra.12+0x130/0x170 [gtp]
    [   72.575593][ T1195]  kasan_report+0xe/0x20
    [   72.576004][ T1195]  ipv4_pdp_find.isra.12+0x130/0x170 [gtp]
    [   72.576577][ T1195]  gtp_build_skb_ip4+0x199/0x1420 [gtp]
    [ ... ]
    [   72.647671][ T1195] BUG: unable to handle page fault for address: ffff8880b9a35d28
    [   72.648512][ T1195] #PF: supervisor read access in kernel mode
    [   72.649158][ T1195] #PF: error_code(0x0000) - not-present page
    [   72.649849][ T1195] PGD a6c01067 P4D a6c01067 PUD 11fb07067 PMD 11f939067 PTE 800fffff465ca060
    [   72.652958][ T1195] Oops: 0000 [#1] SMP DEBUG_PAGEALLOC KASAN PTI
    [   72.653834][ T1195] CPU: 2 PID: 1195 Comm: hping3 Tainted: G    B             5.5.0-rc1 #199
    [   72.668062][ T1195] RIP: 0010:ipv4_pdp_find.isra.12+0x86/0x170 [gtp]
    [ ... ]
    [   72.679168][ T1195] Call Trace:
    [   72.679603][ T1195]  gtp_build_skb_ip4+0x199/0x1420 [gtp]
    [   72.681915][ T1195]  ? ipv4_pdp_find.isra.12+0x170/0x170 [gtp]
    [   72.682513][ T1195]  ? lock_acquire+0x164/0x3b0
    [   72.682966][ T1195]  ? gtp_dev_xmit+0x35e/0x890 [gtp]
    [   72.683481][ T1195]  gtp_dev_xmit+0x3c2/0x890 [gtp]
    [ ... ]
    
    Fixes: 459aa660eb1d ("gtp: add initial driver for datapath of GPRS Tunneling Protocol (GTP-U)")
    Signed-off-by: Taehee Yoo <ap420073@gmail.com>
    Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 90cbd508fbd5adbd24c716816f2b0775efbb83bf
Author: Taehee Yoo <ap420073@gmail.com>
Date:   Wed Dec 11 08:23:17 2019 +0000

    gtp: fix wrong condition in gtp_genl_dump_pdp()
    
    [ Upstream commit 94a6d9fb88df43f92d943c32b84ce398d50bf49f ]
    
    gtp_genl_dump_pdp() is ->dumpit() callback of GTP module and it is used
    to dump pdp contexts. it would be re-executed because of dump packet size.
    
    If dump packet size is too big, it saves current dump pointer
    (gtp interface pointer, bucket, TID value) then it restarts dump from
    last pointer.
    Current GTP code allows adding zero TID pdp context but dump code
    ignores zero TID value. So, last dump pointer will not be found.
    
    In addition, this patch adds missing rcu_read_lock() in
    gtp_genl_dump_pdp().
    
    Fixes: 459aa660eb1d ("gtp: add initial driver for datapath of GPRS Tunneling Protocol (GTP-U)")
    Signed-off-by: Taehee Yoo <ap420073@gmail.com>
    Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e4e33e48ac71512c00fcf3d489af7bb054198024
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Dec 12 12:55:29 2019 -0800

    tcp: do not send empty skb from tcp_write_xmit()
    
    [ Upstream commit 1f85e6267caca44b30c54711652b0726fadbb131 ]
    
    Backport of commit fdfc5c8594c2 ("tcp: remove empty skb from
    write queue in error cases") in linux-4.14 stable triggered
    various bugs. One of them has been fixed in commit ba2ddb43f270
    ("tcp: Don't dequeue SYN/FIN-segments from write-queue"), but
    we still have crashes in some occasions.
    
    Root-cause is that when tcp_sendmsg() has allocated a fresh
    skb and could not append a fragment before being blocked
    in sk_stream_wait_memory(), tcp_write_xmit() might be called
    and decide to send this fresh and empty skb.
    
    Sending an empty packet is not only silly, it might have caused
    many issues we had in the past with tp->packets_out being
    out of sync.
    
    Fixes: c65f7f00c587 ("[TCP]: Simplify SKB data portion allocation with NETIF_F_SG.")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Christoph Paasch <cpaasch@apple.com>
    Acked-by: Neal Cardwell <ncardwell@google.com>
    Cc: Jason Baron <jbaron@akamai.com>
    Acked-by: Soheil Hassas Yeganeh <soheil@google.com>
    Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 94671cf125f8e08e093290451d511c197b005c82
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Dec 13 18:20:41 2019 -0800

    tcp/dccp: fix possible race __inet_lookup_established()
    
    commit 8dbd76e79a16b45b2ccb01d2f2e08dbf64e71e40 upstream.
    
    Michal Kubecek and Firo Yang did a very nice analysis of crashes
    happening in __inet_lookup_established().
    
    Since a TCP socket can go from TCP_ESTABLISH to TCP_LISTEN
    (via a close()/socket()/listen() cycle) without a RCU grace period,
    I should not have changed listeners linkage in their hash table.
    
    They must use the nulls protocol (Documentation/RCU/rculist_nulls.txt),
    so that a lookup can detect a socket in a hash list was moved in
    another one.
    
    Since we added code in commit d296ba60d8e2 ("soreuseport: Resolve
    merge conflict for v4/v6 ordering fix"), we have to add
    hlist_nulls_add_tail_rcu() helper.
    
    Fixes: 3b24d854cb35 ("tcp/dccp: do not touch listener sk_refcnt under synflood")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Michal Kubecek <mkubecek@suse.cz>
    Reported-by: Firo Yang <firo.yang@suse.com>
    Reviewed-by: Michal Kubecek <mkubecek@suse.cz>
    Link: https://lore.kernel.org/netdev/20191120083919.GH27852@unicorn.suse.cz/
    Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
    [stable-4.14: we also need to update code in __inet_lookup_listener() and
     inet6_lookup_listener() which has been removed in 5.0-rc1.]
    Signed-off-by: Michal Kubecek <mkubecek@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0ddfaacfb76d8d54a1f94bfa4e4bc9a7c452d4c7
Author: Taehee Yoo <ap420073@gmail.com>
Date:   Wed Dec 11 08:23:00 2019 +0000

    gtp: do not allow adding duplicate tid and ms_addr pdp context
    
    [ Upstream commit 6b01b1d9b2d38dc84ac398bfe9f00baff06a31e5 ]
    
    GTP RX packet path lookups pdp context with TID. If duplicate TID pdp
    contexts are existing in the list, it couldn't select correct pdp context.
    So, TID value  should be unique.
    GTP TX packet path lookups pdp context with ms_addr. If duplicate ms_addr pdp
    contexts are existing in the list, it couldn't select correct pdp context.
    So, ms_addr value should be unique.
    
    Fixes: 459aa660eb1d ("gtp: add initial driver for datapath of GPRS Tunneling Protocol (GTP-U)")
    Signed-off-by: Taehee Yoo <ap420073@gmail.com>
    Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit de211c95f9b107b001d8864bfc8e45f62bcb6614
Author: Hangbin Liu <liuhangbin@gmail.com>
Date:   Sun Dec 22 10:51:15 2019 +0800

    sit: do not confirm neighbor when do pmtu update
    
    [ Upstream commit 4d42df46d6372ece4cb4279870b46c2ea7304a47 ]
    
    When do IPv6 tunnel PMTU update and calls __ip6_rt_update_pmtu() in the end,
    we should not call dst_confirm_neigh() as there is no two-way communication.
    
    v5: No change.
    v4: No change.
    v3: Do not remove dst_confirm_neigh, but add a new bool parameter in
        dst_ops.update_pmtu to control whether we should do neighbor confirm.
        Also split the big patch to small ones for each area.
    v2: Remove dst_confirm_neigh in __ip6_rt_update_pmtu.
    
    Reviewed-by: Guillaume Nault <gnault@redhat.com>
    Acked-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7b296da1aca79471cbcc022b2e71efd65ab0eacd
Author: Hangbin Liu <liuhangbin@gmail.com>
Date:   Sun Dec 22 10:51:14 2019 +0800

    vti: do not confirm neighbor when do pmtu update
    
    [ Upstream commit 8247a79efa2f28b44329f363272550c1738377de ]
    
    When do IPv6 tunnel PMTU update and calls __ip6_rt_update_pmtu() in the end,
    we should not call dst_confirm_neigh() as there is no two-way communication.
    
    Although vti and vti6 are immune to this problem because they are IFF_NOARP
    interfaces, as Guillaume pointed. There is still no sense to confirm neighbour
    here.
    
    v5: Update commit description.
    v4: No change.
    v3: Do not remove dst_confirm_neigh, but add a new bool parameter in
        dst_ops.update_pmtu to control whether we should do neighbor confirm.
        Also split the big patch to small ones for each area.
    v2: Remove dst_confirm_neigh in __ip6_rt_update_pmtu.
    
    Reviewed-by: Guillaume Nault <gnault@redhat.com>
    Acked-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b1467e87af4ff142e2b88f6c497e50cf79f0803b
Author: Hangbin Liu <liuhangbin@gmail.com>
Date:   Sun Dec 22 10:51:13 2019 +0800

    tunnel: do not confirm neighbor when do pmtu update
    
    [ Upstream commit 7a1592bcb15d71400a98632727791d1e68ea0ee8 ]
    
    When do tunnel PMTU update and calls __ip6_rt_update_pmtu() in the end,
    we should not call dst_confirm_neigh() as there is no two-way communication.
    
    v5: No Change.
    v4: Update commit description
    v3: Do not remove dst_confirm_neigh, but add a new bool parameter in
        dst_ops.update_pmtu to control whether we should do neighbor confirm.
        Also split the big patch to small ones for each area.
    v2: Remove dst_confirm_neigh in __ip6_rt_update_pmtu.
    
    Fixes: 0dec879f636f ("net: use dst_confirm_neigh for UDP, RAW, ICMP, L2TP")
    Reviewed-by: Guillaume Nault <gnault@redhat.com>
    Tested-by: Guillaume Nault <gnault@redhat.com>
    Acked-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b560914e473a716533af3c24f578351558d40e4c
Author: Hangbin Liu <liuhangbin@gmail.com>
Date:   Sun Dec 22 10:51:12 2019 +0800

    net/dst: add new function skb_dst_update_pmtu_no_confirm
    
    [ Upstream commit 07dc35c6e3cc3c001915d05f5bf21f80a39a0970 ]
    
    Add a new function skb_dst_update_pmtu_no_confirm() for callers who need
    update pmtu but should not do neighbor confirm.
    
    v5: No change.
    v4: No change.
    v3: Do not remove dst_confirm_neigh, but add a new bool parameter in
        dst_ops.update_pmtu to control whether we should do neighbor confirm.
        Also split the big patch to small ones for each area.
    v2: Remove dst_confirm_neigh in __ip6_rt_update_pmtu.
    
    Reviewed-by: Guillaume Nault <gnault@redhat.com>
    Acked-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 58df598b278e63b1f1d8995676c78c3e46800f62
Author: Hangbin Liu <liuhangbin@gmail.com>
Date:   Sun Dec 22 10:51:11 2019 +0800

    gtp: do not confirm neighbor when do pmtu update
    
    [ Upstream commit 6e9105c73f8d2163d12d5dfd762fd75483ed30f5 ]
    
    When do IPv6 tunnel PMTU update and calls __ip6_rt_update_pmtu() in the end,
    we should not call dst_confirm_neigh() as there is no two-way communication.
    
    Although GTP only support ipv4 right now, and __ip_rt_update_pmtu() does not
    call dst_confirm_neigh(), we still set it to false to keep consistency with
    IPv6 code.
    
    v5: No change.
    v4: No change.
    v3: Do not remove dst_confirm_neigh, but add a new bool parameter in
        dst_ops.update_pmtu to control whether we should do neighbor confirm.
        Also split the big patch to small ones for each area.
    v2: Remove dst_confirm_neigh in __ip6_rt_update_pmtu.
    
    Reviewed-by: Guillaume Nault <gnault@redhat.com>
    Acked-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4e3c0a8d0f85422a9ea23bb64e26b4288f6632c6
Author: Hangbin Liu <liuhangbin@gmail.com>
Date:   Sun Dec 22 10:51:10 2019 +0800

    ip6_gre: do not confirm neighbor when do pmtu update
    
    [ Upstream commit 675d76ad0ad5bf41c9a129772ef0aba8f57ea9a7 ]
    
    When we do ipv6 gre pmtu update, we will also do neigh confirm currently.
    This will cause the neigh cache be refreshed and set to REACHABLE before
    xmit.
    
    But if the remote mac address changed, e.g. device is deleted and recreated,
    we will not able to notice this and still use the old mac address as the neigh
    cache is REACHABLE.
    
    Fix this by disable neigh confirm when do pmtu update
    
    v5: No change.
    v4: No change.
    v3: Do not remove dst_confirm_neigh, but add a new bool parameter in
        dst_ops.update_pmtu to control whether we should do neighbor confirm.
        Also split the big patch to small ones for each area.
    v2: Remove dst_confirm_neigh in __ip6_rt_update_pmtu.
    
    Reported-by: Jianlin Shi <jishi@redhat.com>
    Reviewed-by: Guillaume Nault <gnault@redhat.com>
    Acked-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7ae78f9bbb51d2515c6e5abfde9461a7c51e1caf
Author: Hangbin Liu <liuhangbin@gmail.com>
Date:   Sun Dec 22 10:51:09 2019 +0800

    net: add bool confirm_neigh parameter for dst_ops.update_pmtu
    
    [ Upstream commit bd085ef678b2cc8c38c105673dfe8ff8f5ec0c57 ]
    
    The MTU update code is supposed to be invoked in response to real
    networking events that update the PMTU. In IPv6 PMTU update function
    __ip6_rt_update_pmtu() we called dst_confirm_neigh() to update neighbor
    confirmed time.
    
    But for tunnel code, it will call pmtu before xmit, like:
      - tnl_update_pmtu()
        - skb_dst_update_pmtu()
          - ip6_rt_update_pmtu()
            - __ip6_rt_update_pmtu()
              - dst_confirm_neigh()
    
    If the tunnel remote dst mac address changed and we still do the neigh
    confirm, we will not be able to update neigh cache and ping6 remote
    will failed.
    
    So for this ip_tunnel_xmit() case, _EVEN_ if the MTU is changed, we
    should not be invoking dst_confirm_neigh() as we have no evidence
    of successful two-way communication at this point.
    
    On the other hand it is also important to keep the neigh reachability fresh
    for TCP flows, so we cannot remove this dst_confirm_neigh() call.
    
    To fix the issue, we have to add a new bool parameter for dst_ops.update_pmtu
    to choose whether we should do neigh update or not. I will add the parameter
    in this patch and set all the callers to true to comply with the previous
    way, and fix the tunnel code one by one on later patches.
    
    v5: No change.
    v4: No change.
    v3: Do not remove dst_confirm_neigh, but add a new bool parameter in
        dst_ops.update_pmtu to control whether we should do neighbor confirm.
        Also split the big patch to small ones for each area.
    v2: Remove dst_confirm_neigh in __ip6_rt_update_pmtu.
    
    Suggested-by: David Miller <davem@davemloft.net>
    Reviewed-by: Guillaume Nault <gnault@redhat.com>
    Acked-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1f8b45f101ef715f5574bff6b51d5617097df0f7
Author: Stefano Garzarella <sgarzare@redhat.com>
Date:   Fri Dec 6 15:39:12 2019 +0100

    vhost/vsock: accept only packets with the right dst_cid
    
    [ Upstream commit 8a3cc29c316c17de590e3ff8b59f3d6cbfd37b0a ]
    
    When we receive a new packet from the guest, we check if the
    src_cid is correct, but we forgot to check the dst_cid.
    
    The host should accept only packets where dst_cid is
    equal to the host CID.
    
    Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 343f3056b542cf9c64c18c43a764752067887b14
Author: Antonio Messina <amessina@google.com>
Date:   Thu Dec 19 15:08:03 2019 +0100

    udp: fix integer overflow while computing available space in sk_rcvbuf
    
    [ Upstream commit feed8a4fc9d46c3126fb9fcae0e9248270c6321a ]
    
    When the size of the receive buffer for a socket is close to 2^31 when
    computing if we have enough space in the buffer to copy a packet from
    the queue to the buffer we might hit an integer overflow.
    
    When an user set net.core.rmem_default to a value close to 2^31 UDP
    packets are dropped because of this overflow. This can be visible, for
    instance, with failure to resolve hostnames.
    
    This can be fixed by casting sk_rcvbuf (which is an int) to unsigned
    int, similarly to how it is done in TCP.
    
    Signed-off-by: Antonio Messina <amessina@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2dece4d6d13fe179ee3a5991811712725a56e2f7
Author: Vladis Dronov <vdronov@redhat.com>
Date:   Fri Dec 27 03:26:27 2019 +0100

    ptp: fix the race between the release of ptp_clock and cdev
    
    [ Upstream commit a33121e5487b424339636b25c35d3a180eaa5f5e ]
    
    In a case when a ptp chardev (like /dev/ptp0) is open but an underlying
    device is removed, closing this file leads to a race. This reproduces
    easily in a kvm virtual machine:
    
    ts# cat openptp0.c
    int main() { ... fp = fopen("/dev/ptp0", "r"); ... sleep(10); }
    ts# uname -r
    5.5.0-rc3-46cf053e
    ts# cat /proc/cmdline
    ... slub_debug=FZP
    ts# modprobe ptp_kvm
    ts# ./openptp0 &
    [1] 670
    opened /dev/ptp0, sleeping 10s...
    ts# rmmod ptp_kvm
    ts# ls /dev/ptp*
    ls: cannot access '/dev/ptp*': No such file or directory
    ts# ...woken up
    [   48.010809] general protection fault: 0000 [#1] SMP
    [   48.012502] CPU: 6 PID: 658 Comm: openptp0 Not tainted 5.5.0-rc3-46cf053e #25
    [   48.014624] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), ...
    [   48.016270] RIP: 0010:module_put.part.0+0x7/0x80
    [   48.017939] RSP: 0018:ffffb3850073be00 EFLAGS: 00010202
    [   48.018339] RAX: 000000006b6b6b6b RBX: 6b6b6b6b6b6b6b6b RCX: ffff89a476c00ad0
    [   48.018936] RDX: fffff65a08d3ea08 RSI: 0000000000000247 RDI: 6b6b6b6b6b6b6b6b
    [   48.019470] ...                                              ^^^ a slub poison
    [   48.023854] Call Trace:
    [   48.024050]  __fput+0x21f/0x240
    [   48.024288]  task_work_run+0x79/0x90
    [   48.024555]  do_exit+0x2af/0xab0
    [   48.024799]  ? vfs_write+0x16a/0x190
    [   48.025082]  do_group_exit+0x35/0x90
    [   48.025387]  __x64_sys_exit_group+0xf/0x10
    [   48.025737]  do_syscall_64+0x3d/0x130
    [   48.026056]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
    [   48.026479] RIP: 0033:0x7f53b12082f6
    [   48.026792] ...
    [   48.030945] Modules linked in: ptp i6300esb watchdog [last unloaded: ptp_kvm]
    [   48.045001] Fixing recursive fault but reboot is needed!
    
    This happens in:
    
    static void __fput(struct file *file)
    {   ...
        if (file->f_op->release)
            file->f_op->release(inode, file); <<< cdev is kfree'd here
        if (unlikely(S_ISCHR(inode->i_mode) && inode->i_cdev != NULL &&
                 !(mode & FMODE_PATH))) {
            cdev_put(inode->i_cdev); <<< cdev fields are accessed here
    
    Namely:
    
    __fput()
      posix_clock_release()
        kref_put(&clk->kref, delete_clock) <<< the last reference
          delete_clock()
            delete_ptp_clock()
              kfree(ptp) <<< cdev is embedded in ptp
      cdev_put
        module_put(p->owner) <<< *p is kfree'd, bang!
    
    Here cdev is embedded in posix_clock which is embedded in ptp_clock.
    The race happens because ptp_clock's lifetime is controlled by two
    refcounts: kref and cdev.kobj in posix_clock. This is wrong.
    
    Make ptp_clock's sysfs device a parent of cdev with cdev_device_add()
    created especially for such cases. This way the parent device with its
    ptp_clock is not released until all references to the cdev are released.
    This adds a requirement that an initialized but not exposed struct
    device should be provided to posix_clock_register() by a caller instead
    of a simple dev_t.
    
    This approach was adopted from the commit 72139dfa2464 ("watchdog: Fix
    the race between the release of watchdog_core_data and cdev"). See
    details of the implementation in the commit 233ed09d7fda ("chardev: add
    helper function to register char devs with a struct device").
    
    Link: https://lore.kernel.org/linux-fsdevel/20191125125342.6189-1-vdronov@redhat.com/T/#u
    Analyzed-by: Stephen Johnston <sjohnsto@redhat.com>
    Analyzed-by: Vern Lovejoy <vlovejoy@redhat.com>
    Signed-off-by: Vladis Dronov <vdronov@redhat.com>
    Acked-by: Richard Cochran <richardcochran@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b8ae180a2500819f4d19b620f112a1386ef4cd3c
Author: Vladyslav Tarasiuk <vladyslavt@mellanox.com>
Date:   Thu Dec 26 10:41:56 2019 +0200

    net/mlxfw: Fix out-of-memory error in mfa2 flash burning
    
    [ Upstream commit a5bcd72e054aabb93ddc51ed8cde36a5bfc50271 ]
    
    The burning process requires to perform internal allocations of large
    chunks of memory. This memory doesn't need to be contiguous and can be
    safely allocated by vzalloc() instead of kzalloc(). This patch changes
    such allocation to avoid possible out-of-memory failure.
    
    Fixes: 410ed13cae39 ("Add the mlxfw module for Mellanox firmware flash process")
    Signed-off-by: Vladyslav Tarasiuk <vladyslavt@mellanox.com>
    Reviewed-by: Aya Levin <ayal@mellanox.com>
    Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
    Tested-by: Ido Schimmel <idosch@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a6585c5b85341072f861f1b15e6378ddaf3c27e1
Author: Netanel Belgazal <netanel@amazon.com>
Date:   Tue Dec 10 11:27:44 2019 +0000

    net: ena: fix napi handler misbehavior when the napi budget is zero
    
    [ Upstream commit 24dee0c7478d1a1e00abdf5625b7f921467325dc ]
    
    In netpoll the napi handler could be called with budget equal to zero.
    Current ENA napi handler doesn't take that into consideration.
    
    The napi handler handles Rx packets in a do-while loop.
    Currently, the budget check happens only after decrementing the
    budget, therefore the napi handler, in rare cases, could run over
    MAX_INT packets.
    
    In addition to that, this moves all budget related variables to int
    calculation and stop mixing u32 to avoid ambiguity
    
    Fixes: 1738cd3ed342 ("net: ena: Add a driver for Amazon Elastic Network Adapters (ENA)")
    Signed-off-by: Netanel Belgazal <netanel@amazon.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a6d311f2e79847424ded55f81f60fc5af1c1117d
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Tue Nov 19 16:46:41 2019 +0100

    pinctrl: baytrail: Really serialize all register accesses
    
    [ Upstream commit 40ecab551232972a39cdd8b6f17ede54a3fdb296 ]
    
    Commit 39ce8150a079 ("pinctrl: baytrail: Serialize all register access")
    added a spinlock around all register accesses because:
    
    "There is a hardware issue in Intel Baytrail where concurrent GPIO register
     access might result reads of 0xffffffff and writes might get dropped
     completely."
    
    Testing has shown that this does not catch all cases, there are still
    2 problems remaining
    
    1) The original fix uses a spinlock per byt_gpio device / struct,
    additional testing has shown that this is not sufficient concurent
    accesses to 2 different GPIO banks also suffer from the same problem.
    
    This commit fixes this by moving to a single global lock.
    
    2) The original fix did not add a lock around the register accesses in
    the suspend/resume handling.
    
    Since pinctrl-baytrail.c is using normal suspend/resume handlers,
    interrupts are still enabled during suspend/resume handling. Nothing
    should be using the GPIOs when they are being taken down, _but_ the
    GPIOs themselves may still cause interrupts, which are likely to
    use (read) the triggering GPIO. So we need to protect against
    concurrent GPIO register accesses in the suspend/resume handlers too.
    
    This commit fixes this by adding the missing spin_lock / unlock calls.
    
    The 2 fixes together fix the Acer Switch 10 SW5-012 getting completely
    confused after a suspend resume. The DSDT for this device has a bug
    in its _LID method which reprograms the home and power button trigger-
    flags requesting both high and low _level_ interrupts so the IRQs for
    these 2 GPIOs continuously fire. This combined with the saving of
    registers during suspend, triggers concurrent GPIO register accesses
    resulting in saving 0xffffffff as pconf0 value during suspend and then
    when restoring this on resume the pinmux settings get all messed up,
    resulting in various I2C busses being stuck, the wifi no longer working
    and often the tablet simply not coming out of suspend at all.
    
    Cc: stable@vger.kernel.org
    Fixes: 39ce8150a079 ("pinctrl: baytrail: Serialize all register access")
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 52a6ba0b4a6efb04557c64e5c90bcd1b97c1238e
Author: David Engraf <david.engraf@sysgo.com>
Date:   Mon Dec 16 09:54:03 2019 +0100

    tty/serial: atmel: fix out of range clock divider handling
    
    [ Upstream commit cb47b9f8630ae3fa3f5fbd0c7003faba7abdf711 ]
    
    Use MCK_DIV8 when the clock divider is > 65535. Unfortunately the mode
    register was already written thus the clock selection is ignored.
    
    Fix by doing the baud rate calulation before setting the mode.
    
    Fixes: 5bf5635ac170 ("tty/serial: atmel: add fractional baud rate support")
    Signed-off-by: David Engraf <david.engraf@sysgo.com>
    Acked-by: Ludovic Desroches <ludovic.desroches@microchip.com>
    Acked-by: Richard Genoud <richard.genoud@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20191216085403.17050-1-david.engraf@sysgo.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a48be2b29a08531d1dc6b6c51791704312a482c6
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Mon Dec 9 15:27:27 2019 +0000

    spi: fsl: don't map irq during probe
    
    [ Upstream commit 3194d2533efffae8b815d84729ecc58b6a9000ab ]
    
    With lastest kernel, the following warning is observed at startup:
    
    [    1.500609] ------------[ cut here ]------------
    [    1.505225] remove_proc_entry: removing non-empty directory 'irq/22', leaking at least 'fsl_spi'
    [    1.514234] WARNING: CPU: 0 PID: 1 at fs/proc/generic.c:682 remove_proc_entry+0x198/0x1c0
    [    1.522403] CPU: 0 PID: 1 Comm: swapper Not tainted 5.4.0-s3k-dev-02248-g93532430a4ff #2564
    [    1.530724] NIP:  c0197694 LR: c0197694 CTR: c0050d80
    [    1.535762] REGS: df4a5af0 TRAP: 0700   Not tainted  (5.4.0-02248-g93532430a4ff)
    [    1.543818] MSR:  00029032 <EE,ME,IR,DR,RI>  CR: 22028222  XER: 00000000
    [    1.550524]
    [    1.550524] GPR00: c0197694 df4a5ba8 df4a0000 00000054 00000000 00000000 00004a38 00000010
    [    1.550524] GPR08: c07c5a30 00000800 00000000 00001032 22000208 00000000 c0004b14 00000000
    [    1.550524] GPR16: 00000000 00000000 00000000 00000000 00000000 00000000 c0830000 c07fc078
    [    1.550524] GPR24: c08e8ca0 df665d10 df60ea98 c07c9db8 00000001 df5d5ae3 df5d5a80 df43f8e3
    [    1.585327] NIP [c0197694] remove_proc_entry+0x198/0x1c0
    [    1.590628] LR [c0197694] remove_proc_entry+0x198/0x1c0
    [    1.595829] Call Trace:
    [    1.598280] [df4a5ba8] [c0197694] remove_proc_entry+0x198/0x1c0 (unreliable)
    [    1.605321] [df4a5bd8] [c0067acc] unregister_irq_proc+0x5c/0x70
    [    1.611238] [df4a5bf8] [c005fbc4] free_desc+0x3c/0x80
    [    1.616286] [df4a5c18] [c005fe2c] irq_free_descs+0x70/0xa8
    [    1.621778] [df4a5c38] [c033d3fc] of_fsl_spi_probe+0xdc/0x3cc
    [    1.627525] [df4a5c88] [c02f0f64] platform_drv_probe+0x44/0xa4
    [    1.633350] [df4a5c98] [c02eee44] really_probe+0x1ac/0x418
    [    1.638829] [df4a5cc8] [c02ed3e8] bus_for_each_drv+0x64/0xb0
    [    1.644481] [df4a5cf8] [c02ef950] __device_attach+0xd4/0x128
    [    1.650132] [df4a5d28] [c02ed61c] bus_probe_device+0xa0/0xbc
    [    1.655783] [df4a5d48] [c02ebbe8] device_add+0x544/0x74c
    [    1.661096] [df4a5d88] [c0382b78] of_platform_device_create_pdata+0xa4/0x100
    [    1.668131] [df4a5da8] [c0382cf4] of_platform_bus_create+0x120/0x20c
    [    1.674474] [df4a5df8] [c0382d50] of_platform_bus_create+0x17c/0x20c
    [    1.680818] [df4a5e48] [c0382e88] of_platform_bus_probe+0x9c/0xf0
    [    1.686907] [df4a5e68] [c0751404] __machine_initcall_cmpcpro_cmpcpro_declare_of_platform_devices+0x74/0x1a4
    [    1.696629] [df4a5e98] [c072a4cc] do_one_initcall+0x8c/0x1d4
    [    1.702282] [df4a5ef8] [c072a768] kernel_init_freeable+0x154/0x204
    [    1.708455] [df4a5f28] [c0004b2c] kernel_init+0x18/0x110
    [    1.713769] [df4a5f38] [c00122ac] ret_from_kernel_thread+0x14/0x1c
    [    1.719926] Instruction dump:
    [    1.722889] 2c030000 4182004c 3863ffb0 3c80c05f 80e3005c 388436a0 3c60c06d 7fa6eb78
    [    1.730630] 7fe5fb78 38840280 38634178 4be8c611 <0fe00000> 4bffff6c 3c60c071 7fe4fb78
    [    1.738556] ---[ end trace 05d0720bf2e352e2 ]---
    
    The problem comes from the error path which calls
    irq_dispose_mapping() while the IRQ has been requested with
    devm_request_irq().
    
    IRQ doesn't need to be mapped with irq_of_parse_and_map(). The only
    need is to get the IRQ virtual number. For that, use
    of_irq_to_resource() instead of the
    irq_of_parse_and_map()/irq_dispose_mapping() pair.
    
    Fixes: 500a32abaf81 ("spi: fsl: Call irq_dispose_mapping in err path")
    Cc: stable@vger.kernel.org
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Link: https://lore.kernel.org/r/518cfb83347d5372748e7fe72f94e2e9443d0d4a.1575905123.git.christophe.leroy@c-s.fr
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a51afeedc6e9980d83b6a28b25b984dd83ac77f6
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Nov 6 09:48:04 2019 -0800

    hrtimer: Annotate lockless access to timer->state
    
    commit 56144737e67329c9aaed15f942d46a6302e2e3d8 upstream.
    
    syzbot reported various data-race caused by hrtimer_is_queued() reading
    timer->state. A READ_ONCE() is required there to silence the warning.
    
    Also add the corresponding WRITE_ONCE() when timer->state is set.
    
    In remove_hrtimer() the hrtimer_is_queued() helper is open coded to avoid
    loading timer->state twice.
    
    KCSAN reported these cases:
    
    BUG: KCSAN: data-race in __remove_hrtimer / tcp_pacing_check
    
    write to 0xffff8880b2a7d388 of 1 bytes by interrupt on cpu 0:
     __remove_hrtimer+0x52/0x130 kernel/time/hrtimer.c:991
     __run_hrtimer kernel/time/hrtimer.c:1496 [inline]
     __hrtimer_run_queues+0x250/0x600 kernel/time/hrtimer.c:1576
     hrtimer_run_softirq+0x10e/0x150 kernel/time/hrtimer.c:1593
     __do_softirq+0x115/0x33f kernel/softirq.c:292
     run_ksoftirqd+0x46/0x60 kernel/softirq.c:603
     smpboot_thread_fn+0x37d/0x4a0 kernel/smpboot.c:165
     kthread+0x1d4/0x200 drivers/block/aoe/aoecmd.c:1253
     ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:352
    
    read to 0xffff8880b2a7d388 of 1 bytes by task 24652 on cpu 1:
     tcp_pacing_check net/ipv4/tcp_output.c:2235 [inline]
     tcp_pacing_check+0xba/0x130 net/ipv4/tcp_output.c:2225
     tcp_xmit_retransmit_queue+0x32c/0x5a0 net/ipv4/tcp_output.c:3044
     tcp_xmit_recovery+0x7c/0x120 net/ipv4/tcp_input.c:3558
     tcp_ack+0x17b6/0x3170 net/ipv4/tcp_input.c:3717
     tcp_rcv_established+0x37e/0xf50 net/ipv4/tcp_input.c:5696
     tcp_v4_do_rcv+0x381/0x4e0 net/ipv4/tcp_ipv4.c:1561
     sk_backlog_rcv include/net/sock.h:945 [inline]
     __release_sock+0x135/0x1e0 net/core/sock.c:2435
     release_sock+0x61/0x160 net/core/sock.c:2951
     sk_stream_wait_memory+0x3d7/0x7c0 net/core/stream.c:145
     tcp_sendmsg_locked+0xb47/0x1f30 net/ipv4/tcp.c:1393
     tcp_sendmsg+0x39/0x60 net/ipv4/tcp.c:1434
     inet_sendmsg+0x6d/0x90 net/ipv4/af_inet.c:807
     sock_sendmsg_nosec net/socket.c:637 [inline]
     sock_sendmsg+0x9f/0xc0 net/socket.c:657
    
    BUG: KCSAN: data-race in __remove_hrtimer / __tcp_ack_snd_check
    
    write to 0xffff8880a3a65588 of 1 bytes by interrupt on cpu 0:
     __remove_hrtimer+0x52/0x130 kernel/time/hrtimer.c:991
     __run_hrtimer kernel/time/hrtimer.c:1496 [inline]
     __hrtimer_run_queues+0x250/0x600 kernel/time/hrtimer.c:1576
     hrtimer_run_softirq+0x10e/0x150 kernel/time/hrtimer.c:1593
     __do_softirq+0x115/0x33f kernel/softirq.c:292
     invoke_softirq kernel/softirq.c:373 [inline]
     irq_exit+0xbb/0xe0 kernel/softirq.c:413
     exiting_irq arch/x86/include/asm/apic.h:536 [inline]
     smp_apic_timer_interrupt+0xe6/0x280 arch/x86/kernel/apic/apic.c:1137
     apic_timer_interrupt+0xf/0x20 arch/x86/entry/entry_64.S:830
    
    read to 0xffff8880a3a65588 of 1 bytes by task 22891 on cpu 1:
     __tcp_ack_snd_check+0x415/0x4f0 net/ipv4/tcp_input.c:5265
     tcp_ack_snd_check net/ipv4/tcp_input.c:5287 [inline]
     tcp_rcv_established+0x750/0xf50 net/ipv4/tcp_input.c:5708
     tcp_v4_do_rcv+0x381/0x4e0 net/ipv4/tcp_ipv4.c:1561
     sk_backlog_rcv include/net/sock.h:945 [inline]
     __release_sock+0x135/0x1e0 net/core/sock.c:2435
     release_sock+0x61/0x160 net/core/sock.c:2951
     sk_stream_wait_memory+0x3d7/0x7c0 net/core/stream.c:145
     tcp_sendmsg_locked+0xb47/0x1f30 net/ipv4/tcp.c:1393
     tcp_sendmsg+0x39/0x60 net/ipv4/tcp.c:1434
     inet_sendmsg+0x6d/0x90 net/ipv4/af_inet.c:807
     sock_sendmsg_nosec net/socket.c:637 [inline]
     sock_sendmsg+0x9f/0xc0 net/socket.c:657
     __sys_sendto+0x21f/0x320 net/socket.c:1952
     __do_sys_sendto net/socket.c:1964 [inline]
     __se_sys_sendto net/socket.c:1960 [inline]
     __x64_sys_sendto+0x89/0xb0 net/socket.c:1960
     do_syscall_64+0xcc/0x370 arch/x86/entry/common.c:290
    
    Reported by Kernel Concurrency Sanitizer on:
    CPU: 1 PID: 24652 Comm: syz-executor.3 Not tainted 5.4.0-rc3+ #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    
    [ tglx: Added comments ]
    
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Link: https://lkml.kernel.org/r/20191106174804.74723-1-edumazet@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6b307f5c03e298d85c6ed45e91925066ef6fc834
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Nov 8 10:34:47 2019 -0800

    net: icmp: fix data-race in cmp_global_allow()
    
    commit bbab7ef235031f6733b5429ae7877bfa22339712 upstream.
    
    This code reads two global variables without protection
    of a lock. We need READ_ONCE()/WRITE_ONCE() pairs to
    avoid load/store-tearing and better document the intent.
    
    KCSAN reported :
    BUG: KCSAN: data-race in icmp_global_allow / icmp_global_allow
    
    read to 0xffffffff861a8014 of 4 bytes by task 11201 on cpu 0:
     icmp_global_allow+0x36/0x1b0 net/ipv4/icmp.c:254
     icmpv6_global_allow net/ipv6/icmp.c:184 [inline]
     icmpv6_global_allow net/ipv6/icmp.c:179 [inline]
     icmp6_send+0x493/0x1140 net/ipv6/icmp.c:514
     icmpv6_send+0x71/0xb0 net/ipv6/ip6_icmp.c:43
     ip6_link_failure+0x43/0x180 net/ipv6/route.c:2640
     dst_link_failure include/net/dst.h:419 [inline]
     vti_xmit net/ipv4/ip_vti.c:243 [inline]
     vti_tunnel_xmit+0x27f/0xa50 net/ipv4/ip_vti.c:279
     __netdev_start_xmit include/linux/netdevice.h:4420 [inline]
     netdev_start_xmit include/linux/netdevice.h:4434 [inline]
     xmit_one net/core/dev.c:3280 [inline]
     dev_hard_start_xmit+0xef/0x430 net/core/dev.c:3296
     __dev_queue_xmit+0x14c9/0x1b60 net/core/dev.c:3873
     dev_queue_xmit+0x21/0x30 net/core/dev.c:3906
     neigh_direct_output+0x1f/0x30 net/core/neighbour.c:1530
     neigh_output include/net/neighbour.h:511 [inline]
     ip6_finish_output2+0x7a6/0xec0 net/ipv6/ip6_output.c:116
     __ip6_finish_output net/ipv6/ip6_output.c:142 [inline]
     __ip6_finish_output+0x2d7/0x330 net/ipv6/ip6_output.c:127
     ip6_finish_output+0x41/0x160 net/ipv6/ip6_output.c:152
     NF_HOOK_COND include/linux/netfilter.h:294 [inline]
     ip6_output+0xf2/0x280 net/ipv6/ip6_output.c:175
     dst_output include/net/dst.h:436 [inline]
     ip6_local_out+0x74/0x90 net/ipv6/output_core.c:179
    
    write to 0xffffffff861a8014 of 4 bytes by task 11183 on cpu 1:
     icmp_global_allow+0x174/0x1b0 net/ipv4/icmp.c:272
     icmpv6_global_allow net/ipv6/icmp.c:184 [inline]
     icmpv6_global_allow net/ipv6/icmp.c:179 [inline]
     icmp6_send+0x493/0x1140 net/ipv6/icmp.c:514
     icmpv6_send+0x71/0xb0 net/ipv6/ip6_icmp.c:43
     ip6_link_failure+0x43/0x180 net/ipv6/route.c:2640
     dst_link_failure include/net/dst.h:419 [inline]
     vti_xmit net/ipv4/ip_vti.c:243 [inline]
     vti_tunnel_xmit+0x27f/0xa50 net/ipv4/ip_vti.c:279
     __netdev_start_xmit include/linux/netdevice.h:4420 [inline]
     netdev_start_xmit include/linux/netdevice.h:4434 [inline]
     xmit_one net/core/dev.c:3280 [inline]
     dev_hard_start_xmit+0xef/0x430 net/core/dev.c:3296
     __dev_queue_xmit+0x14c9/0x1b60 net/core/dev.c:3873
     dev_queue_xmit+0x21/0x30 net/core/dev.c:3906
     neigh_direct_output+0x1f/0x30 net/core/neighbour.c:1530
     neigh_output include/net/neighbour.h:511 [inline]
     ip6_finish_output2+0x7a6/0xec0 net/ipv6/ip6_output.c:116
     __ip6_finish_output net/ipv6/ip6_output.c:142 [inline]
     __ip6_finish_output+0x2d7/0x330 net/ipv6/ip6_output.c:127
     ip6_finish_output+0x41/0x160 net/ipv6/ip6_output.c:152
     NF_HOOK_COND include/linux/netfilter.h:294 [inline]
     ip6_output+0xf2/0x280 net/ipv6/ip6_output.c:175
    
    Reported by Kernel Concurrency Sanitizer on:
    CPU: 1 PID: 11183 Comm: syz-executor.2 Not tainted 5.4.0-rc3+ #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    
    Fixes: 4cdf507d5452 ("icmp: add a global rate limitation")
    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 80e6b3268f7a74e34c8919defc825d600dd6ae54
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Nov 7 18:49:43 2019 -0800

    net: add a READ_ONCE() in skb_peek_tail()
    
    commit f8cc62ca3e660ae3fdaee533b1d554297cd2ae82 upstream.
    
    skb_peek_tail() can be used without protection of a lock,
    as spotted by KCSAN [1]
    
    In order to avoid load-stearing, add a READ_ONCE()
    
    Note that the corresponding WRITE_ONCE() are already there.
    
    [1]
    BUG: KCSAN: data-race in sk_wait_data / skb_queue_tail
    
    read to 0xffff8880b36a4118 of 8 bytes by task 20426 on cpu 1:
     skb_peek_tail include/linux/skbuff.h:1784 [inline]
     sk_wait_data+0x15b/0x250 net/core/sock.c:2477
     kcm_wait_data+0x112/0x1f0 net/kcm/kcmsock.c:1103
     kcm_recvmsg+0xac/0x320 net/kcm/kcmsock.c:1130
     sock_recvmsg_nosec net/socket.c:871 [inline]
     sock_recvmsg net/socket.c:889 [inline]
     sock_recvmsg+0x92/0xb0 net/socket.c:885
     ___sys_recvmsg+0x1a0/0x3e0 net/socket.c:2480
     do_recvmmsg+0x19a/0x5c0 net/socket.c:2601
     __sys_recvmmsg+0x1ef/0x200 net/socket.c:2680
     __do_sys_recvmmsg net/socket.c:2703 [inline]
     __se_sys_recvmmsg net/socket.c:2696 [inline]
     __x64_sys_recvmmsg+0x89/0xb0 net/socket.c:2696
     do_syscall_64+0xcc/0x370 arch/x86/entry/common.c:290
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    write to 0xffff8880b36a4118 of 8 bytes by task 451 on cpu 0:
     __skb_insert include/linux/skbuff.h:1852 [inline]
     __skb_queue_before include/linux/skbuff.h:1958 [inline]
     __skb_queue_tail include/linux/skbuff.h:1991 [inline]
     skb_queue_tail+0x7e/0xc0 net/core/skbuff.c:3145
     kcm_queue_rcv_skb+0x202/0x310 net/kcm/kcmsock.c:206
     kcm_rcv_strparser+0x74/0x4b0 net/kcm/kcmsock.c:370
     __strp_recv+0x348/0xf50 net/strparser/strparser.c:309
     strp_recv+0x84/0xa0 net/strparser/strparser.c:343
     tcp_read_sock+0x174/0x5c0 net/ipv4/tcp.c:1639
     strp_read_sock+0xd4/0x140 net/strparser/strparser.c:366
     do_strp_work net/strparser/strparser.c:414 [inline]
     strp_work+0x9a/0xe0 net/strparser/strparser.c:423
     process_one_work+0x3d4/0x890 kernel/workqueue.c:2269
     worker_thread+0xa0/0x800 kernel/workqueue.c:2415
     kthread+0x1d4/0x200 drivers/block/aoe/aoecmd.c:1253
     ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:352
    
    Reported by Kernel Concurrency Sanitizer on:
    CPU: 0 PID: 451 Comm: kworker/u4:3 Not tainted 5.4.0-rc3+ #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Workqueue: kstrp strp_work
    
    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 43b6375db5c47b0117d78525cbce4fdc26259bc8
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Nov 7 10:30:42 2019 -0800

    inetpeer: fix data-race in inet_putpeer / inet_putpeer
    
    commit 71685eb4ce80ae9c49eff82ca4dd15acab215de9 upstream.
    
    We need to explicitely forbid read/store tearing in inet_peer_gc()
    and inet_putpeer().
    
    The following syzbot report reminds us about inet_putpeer()
    running without a lock held.
    
    BUG: KCSAN: data-race in inet_putpeer / inet_putpeer
    
    write to 0xffff888121fb2ed0 of 4 bytes by interrupt on cpu 0:
     inet_putpeer+0x37/0xa0 net/ipv4/inetpeer.c:240
     ip4_frag_free+0x3d/0x50 net/ipv4/ip_fragment.c:102
     inet_frag_destroy_rcu+0x58/0x80 net/ipv4/inet_fragment.c:228
     __rcu_reclaim kernel/rcu/rcu.h:222 [inline]
     rcu_do_batch+0x256/0x5b0 kernel/rcu/tree.c:2157
     rcu_core+0x369/0x4d0 kernel/rcu/tree.c:2377
     rcu_core_si+0x12/0x20 kernel/rcu/tree.c:2386
     __do_softirq+0x115/0x33f kernel/softirq.c:292
     invoke_softirq kernel/softirq.c:373 [inline]
     irq_exit+0xbb/0xe0 kernel/softirq.c:413
     exiting_irq arch/x86/include/asm/apic.h:536 [inline]
     smp_apic_timer_interrupt+0xe6/0x280 arch/x86/kernel/apic/apic.c:1137
     apic_timer_interrupt+0xf/0x20 arch/x86/entry/entry_64.S:830
     native_safe_halt+0xe/0x10 arch/x86/kernel/paravirt.c:71
     arch_cpu_idle+0x1f/0x30 arch/x86/kernel/process.c:571
     default_idle_call+0x1e/0x40 kernel/sched/idle.c:94
     cpuidle_idle_call kernel/sched/idle.c:154 [inline]
     do_idle+0x1af/0x280 kernel/sched/idle.c:263
    
    write to 0xffff888121fb2ed0 of 4 bytes by interrupt on cpu 1:
     inet_putpeer+0x37/0xa0 net/ipv4/inetpeer.c:240
     ip4_frag_free+0x3d/0x50 net/ipv4/ip_fragment.c:102
     inet_frag_destroy_rcu+0x58/0x80 net/ipv4/inet_fragment.c:228
     __rcu_reclaim kernel/rcu/rcu.h:222 [inline]
     rcu_do_batch+0x256/0x5b0 kernel/rcu/tree.c:2157
     rcu_core+0x369/0x4d0 kernel/rcu/tree.c:2377
     rcu_core_si+0x12/0x20 kernel/rcu/tree.c:2386
     __do_softirq+0x115/0x33f kernel/softirq.c:292
     run_ksoftirqd+0x46/0x60 kernel/softirq.c:603
     smpboot_thread_fn+0x37d/0x4a0 kernel/smpboot.c:165
     kthread+0x1d4/0x200 drivers/block/aoe/aoecmd.c:1253
     ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:352
    
    Reported by Kernel Concurrency Sanitizer on:
    CPU: 1 PID: 16 Comm: ksoftirqd/1 Not tainted 5.4.0-rc3+ #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    
    Fixes: 4b9d9be839fd ("inetpeer: remove unused list")
    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 ff194a90990e8186e087387c0638ffc4d621cd57
Author: Eric Dumazet <edumazet@google.com>
Date:   Sat Dec 7 14:43:39 2019 -0800

    netfilter: bridge: make sure to pull arp header in br_nf_forward_arp()
    
    commit 5604285839aaedfb23ebe297799c6e558939334d upstream.
    
    syzbot is kind enough to remind us we need to call skb_may_pull()
    
    BUG: KMSAN: uninit-value in br_nf_forward_arp+0xe61/0x1230 net/bridge/br_netfilter_hooks.c:665
    CPU: 1 PID: 11631 Comm: syz-executor.1 Not tainted 5.4.0-rc8-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     <IRQ>
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0x1c9/0x220 lib/dump_stack.c:118
     kmsan_report+0x128/0x220 mm/kmsan/kmsan_report.c:108
     __msan_warning+0x64/0xc0 mm/kmsan/kmsan_instr.c:245
     br_nf_forward_arp+0xe61/0x1230 net/bridge/br_netfilter_hooks.c:665
     nf_hook_entry_hookfn include/linux/netfilter.h:135 [inline]
     nf_hook_slow+0x18b/0x3f0 net/netfilter/core.c:512
     nf_hook include/linux/netfilter.h:260 [inline]
     NF_HOOK include/linux/netfilter.h:303 [inline]
     __br_forward+0x78f/0xe30 net/bridge/br_forward.c:109
     br_flood+0xef0/0xfe0 net/bridge/br_forward.c:234
     br_handle_frame_finish+0x1a77/0x1c20 net/bridge/br_input.c:162
     nf_hook_bridge_pre net/bridge/br_input.c:245 [inline]
     br_handle_frame+0xfb6/0x1eb0 net/bridge/br_input.c:348
     __netif_receive_skb_core+0x20b9/0x51a0 net/core/dev.c:4830
     __netif_receive_skb_one_core net/core/dev.c:4927 [inline]
     __netif_receive_skb net/core/dev.c:5043 [inline]
     process_backlog+0x610/0x13c0 net/core/dev.c:5874
     napi_poll net/core/dev.c:6311 [inline]
     net_rx_action+0x7a6/0x1aa0 net/core/dev.c:6379
     __do_softirq+0x4a1/0x83a kernel/softirq.c:293
     do_softirq_own_stack+0x49/0x80 arch/x86/entry/entry_64.S:1091
     </IRQ>
     do_softirq kernel/softirq.c:338 [inline]
     __local_bh_enable_ip+0x184/0x1d0 kernel/softirq.c:190
     local_bh_enable+0x36/0x40 include/linux/bottom_half.h:32
     rcu_read_unlock_bh include/linux/rcupdate.h:688 [inline]
     __dev_queue_xmit+0x38e8/0x4200 net/core/dev.c:3819
     dev_queue_xmit+0x4b/0x60 net/core/dev.c:3825
     packet_snd net/packet/af_packet.c:2959 [inline]
     packet_sendmsg+0x8234/0x9100 net/packet/af_packet.c:2984
     sock_sendmsg_nosec net/socket.c:637 [inline]
     sock_sendmsg net/socket.c:657 [inline]
     __sys_sendto+0xc44/0xc70 net/socket.c:1952
     __do_sys_sendto net/socket.c:1964 [inline]
     __se_sys_sendto+0x107/0x130 net/socket.c:1960
     __x64_sys_sendto+0x6e/0x90 net/socket.c:1960
     do_syscall_64+0xb6/0x160 arch/x86/entry/common.c:291
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    RIP: 0033:0x45a679
    Code: ad b6 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 b6 fb ff c3 66 2e 0f 1f 84 00 00 00 00
    RSP: 002b:00007f0a3c9e5c78 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
    RAX: ffffffffffffffda RBX: 0000000000000006 RCX: 000000000045a679
    RDX: 000000000000000e RSI: 0000000020000200 RDI: 0000000000000003
    RBP: 000000000075bf20 R08: 00000000200000c0 R09: 0000000000000014
    R10: 0000000000000000 R11: 0000000000000246 R12: 00007f0a3c9e66d4
    R13: 00000000004c8ec1 R14: 00000000004dfe28 R15: 00000000ffffffff
    
    Uninit was created at:
     kmsan_save_stack_with_flags mm/kmsan/kmsan.c:149 [inline]
     kmsan_internal_poison_shadow+0x5c/0x110 mm/kmsan/kmsan.c:132
     kmsan_slab_alloc+0x97/0x100 mm/kmsan/kmsan_hooks.c:86
     slab_alloc_node mm/slub.c:2773 [inline]
     __kmalloc_node_track_caller+0xe27/0x11a0 mm/slub.c:4381
     __kmalloc_reserve net/core/skbuff.c:141 [inline]
     __alloc_skb+0x306/0xa10 net/core/skbuff.c:209
     alloc_skb include/linux/skbuff.h:1049 [inline]
     alloc_skb_with_frags+0x18c/0xa80 net/core/skbuff.c:5662
     sock_alloc_send_pskb+0xafd/0x10a0 net/core/sock.c:2244
     packet_alloc_skb net/packet/af_packet.c:2807 [inline]
     packet_snd net/packet/af_packet.c:2902 [inline]
     packet_sendmsg+0x63a6/0x9100 net/packet/af_packet.c:2984
     sock_sendmsg_nosec net/socket.c:637 [inline]
     sock_sendmsg net/socket.c:657 [inline]
     __sys_sendto+0xc44/0xc70 net/socket.c:1952
     __do_sys_sendto net/socket.c:1964 [inline]
     __se_sys_sendto+0x107/0x130 net/socket.c:1960
     __x64_sys_sendto+0x6e/0x90 net/socket.c:1960
     do_syscall_64+0xb6/0x160 arch/x86/entry/common.c:291
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Fixes: c4e70a87d975 ("netfilter: bridge: rename br_netfilter.c to br_netfilter_hooks.c")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Reviewed-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8b58905f212b4880d94b5b8ae54e5b84e311947d
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Dec 12 10:32:13 2019 -0800

    6pack,mkiss: fix possible deadlock
    
    commit 5c9934b6767b16ba60be22ec3cbd4379ad64170d upstream.
    
    We got another syzbot report [1] that tells us we must use
    write_lock_irq()/write_unlock_irq() to avoid possible deadlock.
    
    [1]
    
    WARNING: inconsistent lock state
    5.5.0-rc1-syzkaller #0 Not tainted
    --------------------------------
    inconsistent {HARDIRQ-ON-W} -> {IN-HARDIRQ-R} usage.
    syz-executor826/9605 [HC1[1]:SC0[0]:HE0:SE1] takes:
    ffffffff8a128718 (disc_data_lock){+-..}, at: sp_get.isra.0+0x1d/0xf0 drivers/net/ppp/ppp_synctty.c:138
    {HARDIRQ-ON-W} state was registered at:
      lock_acquire+0x190/0x410 kernel/locking/lockdep.c:4485
      __raw_write_lock_bh include/linux/rwlock_api_smp.h:203 [inline]
      _raw_write_lock_bh+0x33/0x50 kernel/locking/spinlock.c:319
      sixpack_close+0x1d/0x250 drivers/net/hamradio/6pack.c:657
      tty_ldisc_close.isra.0+0x119/0x1a0 drivers/tty/tty_ldisc.c:489
      tty_set_ldisc+0x230/0x6b0 drivers/tty/tty_ldisc.c:585
      tiocsetd drivers/tty/tty_io.c:2337 [inline]
      tty_ioctl+0xe8d/0x14f0 drivers/tty/tty_io.c:2597
      vfs_ioctl fs/ioctl.c:47 [inline]
      file_ioctl fs/ioctl.c:545 [inline]
      do_vfs_ioctl+0x977/0x14e0 fs/ioctl.c:732
      ksys_ioctl+0xab/0xd0 fs/ioctl.c:749
      __do_sys_ioctl fs/ioctl.c:756 [inline]
      __se_sys_ioctl fs/ioctl.c:754 [inline]
      __x64_sys_ioctl+0x73/0xb0 fs/ioctl.c:754
      do_syscall_64+0xfa/0x790 arch/x86/entry/common.c:294
      entry_SYSCALL_64_after_hwframe+0x49/0xbe
    irq event stamp: 3946
    hardirqs last  enabled at (3945): [<ffffffff87c86e43>] __raw_spin_unlock_irq include/linux/spinlock_api_smp.h:168 [inline]
    hardirqs last  enabled at (3945): [<ffffffff87c86e43>] _raw_spin_unlock_irq+0x23/0x80 kernel/locking/spinlock.c:199
    hardirqs last disabled at (3946): [<ffffffff8100675f>] trace_hardirqs_off_thunk+0x1a/0x1c arch/x86/entry/thunk_64.S:42
    softirqs last  enabled at (2658): [<ffffffff86a8b4df>] spin_unlock_bh include/linux/spinlock.h:383 [inline]
    softirqs last  enabled at (2658): [<ffffffff86a8b4df>] clusterip_netdev_event+0x46f/0x670 net/ipv4/netfilter/ipt_CLUSTERIP.c:222
    softirqs last disabled at (2656): [<ffffffff86a8b22b>] spin_lock_bh include/linux/spinlock.h:343 [inline]
    softirqs last disabled at (2656): [<ffffffff86a8b22b>] clusterip_netdev_event+0x1bb/0x670 net/ipv4/netfilter/ipt_CLUSTERIP.c:196
    
    other info that might help us debug this:
     Possible unsafe locking scenario:
    
           CPU0
           ----
      lock(disc_data_lock);
      <Interrupt>
        lock(disc_data_lock);
    
     *** DEADLOCK ***
    
    5 locks held by syz-executor826/9605:
     #0: ffff8880a905e198 (&tty->legacy_mutex){+.+.}, at: tty_lock+0xc7/0x130 drivers/tty/tty_mutex.c:19
     #1: ffffffff899a56c0 (rcu_read_lock){....}, at: mutex_spin_on_owner+0x0/0x330 kernel/locking/mutex.c:413
     #2: ffff8880a496a2b0 (&(&i->lock)->rlock){-.-.}, at: spin_lock include/linux/spinlock.h:338 [inline]
     #2: ffff8880a496a2b0 (&(&i->lock)->rlock){-.-.}, at: serial8250_interrupt+0x2d/0x1a0 drivers/tty/serial/8250/8250_core.c:116
     #3: ffffffff8c104048 (&port_lock_key){-.-.}, at: serial8250_handle_irq.part.0+0x24/0x330 drivers/tty/serial/8250/8250_port.c:1823
     #4: ffff8880a905e090 (&tty->ldisc_sem){++++}, at: tty_ldisc_ref+0x22/0x90 drivers/tty/tty_ldisc.c:288
    
    stack backtrace:
    CPU: 1 PID: 9605 Comm: syz-executor826 Not tainted 5.5.0-rc1-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     <IRQ>
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0x197/0x210 lib/dump_stack.c:118
     print_usage_bug.cold+0x327/0x378 kernel/locking/lockdep.c:3101
     valid_state kernel/locking/lockdep.c:3112 [inline]
     mark_lock_irq kernel/locking/lockdep.c:3309 [inline]
     mark_lock+0xbb4/0x1220 kernel/locking/lockdep.c:3666
     mark_usage kernel/locking/lockdep.c:3554 [inline]
     __lock_acquire+0x1e55/0x4a00 kernel/locking/lockdep.c:3909
     lock_acquire+0x190/0x410 kernel/locking/lockdep.c:4485
     __raw_read_lock include/linux/rwlock_api_smp.h:149 [inline]
     _raw_read_lock+0x32/0x50 kernel/locking/spinlock.c:223
     sp_get.isra.0+0x1d/0xf0 drivers/net/ppp/ppp_synctty.c:138
     sixpack_write_wakeup+0x25/0x340 drivers/net/hamradio/6pack.c:402
     tty_wakeup+0xe9/0x120 drivers/tty/tty_io.c:536
     tty_port_default_wakeup+0x2b/0x40 drivers/tty/tty_port.c:50
     tty_port_tty_wakeup+0x57/0x70 drivers/tty/tty_port.c:387
     uart_write_wakeup+0x46/0x70 drivers/tty/serial/serial_core.c:104
     serial8250_tx_chars+0x495/0xaf0 drivers/tty/serial/8250/8250_port.c:1761
     serial8250_handle_irq.part.0+0x2a2/0x330 drivers/tty/serial/8250/8250_port.c:1834
     serial8250_handle_irq drivers/tty/serial/8250/8250_port.c:1820 [inline]
     serial8250_default_handle_irq+0xc0/0x150 drivers/tty/serial/8250/8250_port.c:1850
     serial8250_interrupt+0xf1/0x1a0 drivers/tty/serial/8250/8250_core.c:126
     __handle_irq_event_percpu+0x15d/0x970 kernel/irq/handle.c:149
     handle_irq_event_percpu+0x74/0x160 kernel/irq/handle.c:189
     handle_irq_event+0xa7/0x134 kernel/irq/handle.c:206
     handle_edge_irq+0x25e/0x8d0 kernel/irq/chip.c:830
     generic_handle_irq_desc include/linux/irqdesc.h:156 [inline]
     do_IRQ+0xde/0x280 arch/x86/kernel/irq.c:250
     common_interrupt+0xf/0xf arch/x86/entry/entry_64.S:607
     </IRQ>
    RIP: 0010:cpu_relax arch/x86/include/asm/processor.h:685 [inline]
    RIP: 0010:mutex_spin_on_owner+0x247/0x330 kernel/locking/mutex.c:579
    Code: c3 be 08 00 00 00 4c 89 e7 e8 e5 06 59 00 4c 89 e0 48 c1 e8 03 42 80 3c 38 00 0f 85 e1 00 00 00 49 8b 04 24 a8 01 75 96 f3 90 <e9> 2f fe ff ff 0f 0b e8 0d 19 09 00 84 c0 0f 85 ff fd ff ff 48 c7
    RSP: 0018:ffffc90001eafa20 EFLAGS: 00000246 ORIG_RAX: ffffffffffffffd7
    RAX: 0000000000000000 RBX: ffff88809fd9e0c0 RCX: 1ffffffff13266dd
    RDX: 0000000000000000 RSI: 0000000000000008 RDI: 0000000000000000
    RBP: ffffc90001eafa60 R08: 1ffff11013d22898 R09: ffffed1013d22899
    R10: ffffed1013d22898 R11: ffff88809e9144c7 R12: ffff8880a905e138
    R13: ffff88809e9144c0 R14: 0000000000000000 R15: dffffc0000000000
     mutex_optimistic_spin kernel/locking/mutex.c:673 [inline]
     __mutex_lock_common kernel/locking/mutex.c:962 [inline]
     __mutex_lock+0x32b/0x13c0 kernel/locking/mutex.c:1106
     mutex_lock_nested+0x16/0x20 kernel/locking/mutex.c:1121
     tty_lock+0xc7/0x130 drivers/tty/tty_mutex.c:19
     tty_release+0xb5/0xe90 drivers/tty/tty_io.c:1665
     __fput+0x2ff/0x890 fs/file_table.c:280
     ____fput+0x16/0x20 fs/file_table.c:313
     task_work_run+0x145/0x1c0 kernel/task_work.c:113
     exit_task_work include/linux/task_work.h:22 [inline]
     do_exit+0x8e7/0x2ef0 kernel/exit.c:797
     do_group_exit+0x135/0x360 kernel/exit.c:895
     __do_sys_exit_group kernel/exit.c:906 [inline]
     __se_sys_exit_group kernel/exit.c:904 [inline]
     __x64_sys_exit_group+0x44/0x50 kernel/exit.c:904
     do_syscall_64+0xfa/0x790 arch/x86/entry/common.c:294
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    RIP: 0033:0x43fef8
    Code: Bad RIP value.
    RSP: 002b:00007ffdb07d2338 EFLAGS: 00000246 ORIG_RAX: 00000000000000e7
    RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 000000000043fef8
    RDX: 0000000000000000 RSI: 000000000000003c RDI: 0000000000000000
    RBP: 00000000004bf730 R08: 00000000000000e7 R09: ffffffffffffffd0
    R10: 00000000004002c8 R11: 0000000000000246 R12: 0000000000000001
    R13: 00000000006d1180 R14: 0000000000000000 R15: 0000000000000000
    
    Fixes: 6e4e2f811bad ("6pack,mkiss: fix lock inconsistency")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 69bb99133686bf9b8c7b5143c0bc2ae23d6cd63b
Author: Florian Westphal <fw@strlen.de>
Date:   Sun Dec 15 03:49:25 2019 +0100

    netfilter: ebtables: compat: reject all padding in matches/watchers
    
    commit e608f631f0ba5f1fc5ee2e260a3a35d13107cbfe upstream.
    
    syzbot reported following splat:
    
    BUG: KASAN: vmalloc-out-of-bounds in size_entry_mwt net/bridge/netfilter/ebtables.c:2063 [inline]
    BUG: KASAN: vmalloc-out-of-bounds in compat_copy_entries+0x128b/0x1380 net/bridge/netfilter/ebtables.c:2155
    Read of size 4 at addr ffffc900004461f4 by task syz-executor267/7937
    
    CPU: 1 PID: 7937 Comm: syz-executor267 Not tainted 5.5.0-rc1-syzkaller #0
     size_entry_mwt net/bridge/netfilter/ebtables.c:2063 [inline]
     compat_copy_entries+0x128b/0x1380 net/bridge/netfilter/ebtables.c:2155
     compat_do_replace+0x344/0x720 net/bridge/netfilter/ebtables.c:2249
     compat_do_ebt_set_ctl+0x22f/0x27e net/bridge/netfilter/ebtables.c:2333
     [..]
    
    Because padding isn't considered during computation of ->buf_user_offset,
    "total" is decremented by fewer bytes than it should.
    
    Therefore, the first part of
    
    if (*total < sizeof(*entry) || entry->next_offset < sizeof(*entry))
    
    will pass, -- it should not have.  This causes oob access:
    entry->next_offset is past the vmalloced size.
    
    Reject padding and check that computed user offset (sum of ebt_entry
    structure plus all individual matches/watchers/targets) is same
    value that userspace gave us as the offset of the next entry.
    
    Reported-by: syzbot+f68108fed972453a0ad4@syzkaller.appspotmail.com
    Fixes: 81e675c227ec ("netfilter: ebtables: add CONFIG_COMPAT support")
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9c0ffae88f7507078c7e6db73eda3b60478628eb
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Fri Oct 18 18:41:16 2019 -0400

    filldir[64]: remove WARN_ON_ONCE() for bad directory entries
    
    commit b9959c7a347d6adbb558fba7e36e9fef3cba3b07 upstream.
    
    This was always meant to be a temporary thing, just for testing and to
    see if it actually ever triggered.
    
    The only thing that reported it was syzbot doing disk image fuzzing, and
    then that warning is expected.  So let's just remove it before -rc4,
    because the extra sanity testing should probably go to -stable, but we
    don't want the warning to do so.
    
    Reported-by: syzbot+3031f712c7ad5dd4d926@syzkaller.appspotmail.com
    Fixes: 8a23eb804ca4 ("Make filldir[64]() verify the directory entry filename is valid")
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Siddharth Chandrasekaran <csiddharth@vmware.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 26b363149dd53a36bbd61901df5ac16bde39badb
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Sat Oct 5 11:32:52 2019 -0700

    Make filldir[64]() verify the directory entry filename is valid
    
    commit 8a23eb804ca4f2be909e372cf5a9e7b30ae476cd upstream.
    
    This has been discussed several times, and now filesystem people are
    talking about doing it individually at the filesystem layer, so head
    that off at the pass and just do it in getdents{64}().
    
    This is partially based on a patch by Jann Horn, but checks for NUL
    bytes as well, and somewhat simplified.
    
    There's also commentary about how it might be better if invalid names
    due to filesystem corruption don't cause an immediate failure, but only
    an error at the end of the readdir(), so that people can still see the
    filenames that are ok.
    
    There's also been discussion about just how much POSIX strictly speaking
    requires this since it's about filesystem corruption.  It's really more
    "protect user space from bad behavior" as pointed out by Jann.  But
    since Eric Biederman looked up the POSIX wording, here it is for context:
    
     "From readdir:
    
       The readdir() function shall return a pointer to a structure
       representing the directory entry at the current position in the
       directory stream specified by the argument dirp, and position the
       directory stream at the next entry. It shall return a null pointer
       upon reaching the end of the directory stream. The structure dirent
       defined in the <dirent.h> header describes a directory entry.
    
      From definitions:
    
       3.129 Directory Entry (or Link)
    
       An object that associates a filename with a file. Several directory
       entries can associate names with the same file.
    
      ...
    
       3.169 Filename
    
       A name consisting of 1 to {NAME_MAX} bytes used to name a file. The
       characters composing the name may be selected from the set of all
       character values excluding the slash character and the null byte. The
       filenames dot and dot-dot have special meaning. A filename is
       sometimes referred to as a 'pathname component'."
    
    Note that I didn't bother adding the checks to any legacy interfaces
    that nobody uses.
    
    Also note that if this ends up being noticeable as a performance
    regression, we can fix that to do a much more optimized model that
    checks for both NUL and '/' at the same time one word at a time.
    
    We haven't really tended to optimize 'memchr()', and it only checks for
    one pattern at a time anyway, and we really _should_ check for NUL too
    (but see the comment about "soft errors" in the code about why it
    currently only checks for '/')
    
    See the CONFIG_DCACHE_WORD_ACCESS case of hash_name() for how the name
    lookup code looks for pathname terminating characters in parallel.
    
    Link: https://lore.kernel.org/lkml/20190118161440.220134-2-jannh@google.com/
    Cc: Alexander Viro <viro@zeniv.linux.org.uk>
    Cc: Jann Horn <jannh@google.com>
    Cc: Eric W. Biederman <ebiederm@xmission.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Siddharth Chandrasekaran <csiddharth@vmware.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 29061e0875f853c3bed1d486ccf5ce476cc51afc
Author: Mattias Jacobsson <2pi@mok.nu>
Date:   Sat Dec 29 15:17:50 2018 +0100

    perf strbuf: Remove redundant va_end() in strbuf_addv()
    
    commit 099be748865eece21362aee416c350c0b1ae34df upstream.
    
    Each call to va_copy() should have one, and only one, corresponding call
    to va_end(). In strbuf_addv() some code paths result in va_end() getting
    called multiple times. Remove the superfluous va_end().
    
    Signed-off-by: Mattias Jacobsson <2pi@mok.nu>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Sanskriti Sharma <sansharm@redhat.com>
    Link: http://lkml.kernel.org/r/20181229141750.16945-1-2pi@mok.nu
    Fixes: ce49d8436cff ("perf strbuf: Match va_{add,copy} with va_end")
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 75e18a6ee17be533a335f6e47527b648116a2f39
Author: Mahesh Bandewar <maheshb@google.com>
Date:   Fri Dec 6 15:44:55 2019 -0800

    bonding: fix active-backup transition after link failure
    
    [ Upstream commit 5d485ed88d48f8101a2067348e267c0aaf4ed486 ]
    
    After the recent fix in commit 1899bb325149 ("bonding: fix state
    transition issue in link monitoring"), the active-backup mode with
    miimon initially come-up fine but after a link-failure, both members
    transition into backup state.
    
    Following steps to reproduce the scenario (eth1 and eth2 are the
    slaves of the bond):
    
        ip link set eth1 up
        ip link set eth2 down
        sleep 1
        ip link set eth2 up
        ip link set eth1 down
        cat /sys/class/net/eth1/bonding_slave/state
        cat /sys/class/net/eth2/bonding_slave/state
    
    Fixes: 1899bb325149 ("bonding: fix state transition issue in link monitoring")
    CC: Jay Vosburgh <jay.vosburgh@canonical.com>
    Signed-off-by: Mahesh Bandewar <maheshb@google.com>
    Acked-by: Jay Vosburgh <jay.vosburgh@canonical.com>
    Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ac9d7d7de1db06bd382aa2628d5025fc02dfae87
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Dec 16 16:12:24 2019 +0100

    ALSA: hda - Downgrade error message for single-cmd fallback
    
    [ Upstream commit 475feec0c41ad71cb7d02f0310e56256606b57c5 ]
    
    We made the error message for the CORB/RIRB communication clearer by
    upgrading to dev_WARN() so that user can notice better.  But this
    struck us like a boomerang: now it caught syzbot and reported back as
    a fatal issue although it's not really any too serious bug that worth
    for stopping the whole system.
    
    OK, OK, let's be softy, downgrade it to the standard dev_err() again.
    
    Fixes: dd65f7e19c69 ("ALSA: hda - Show the fatal CORB/RIRB error more clearly")
    Reported-by: syzbot+b3028ac3933f5c466389@syzkaller.appspotmail.com
    Link: https://lore.kernel.org/r/20191216151224.30013-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b2823ed5cb58ed54b7ae1e4b270291d84d5a2b10
Author: Marco Oliverio <marco.oliverio@tanaza.com>
Date:   Mon Dec 2 19:54:30 2019 +0100

    netfilter: nf_queue: enqueue skbs with NULL dst
    
    [ Upstream commit 0b9173f4688dfa7c5d723426be1d979c24ce3d51 ]
    
    Bridge packets that are forwarded have skb->dst == NULL and get
    dropped by the check introduced by
    b60a77386b1d4868f72f6353d35dabe5fbe981f2 (net: make skb_dst_force
    return true when dst is refcounted).
    
    To fix this we check skb_dst() before skb_dst_force(), so we don't
    drop skb packet with dst == NULL. This holds also for skb at the
    PRE_ROUTING hook so we remove the second check.
    
    Fixes: b60a77386b1d ("net: make skb_dst_force return true when dst is refcounted")
    Signed-off-by: Marco Oliverio <marco.oliverio@tanaza.com>
    Signed-off-by: Rocco Folino <rocco.folino@tanaza.com>
    Acked-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit daf8f15c068fcd5f3f1a20199aeecaa01c708518
Author: Alexander Lobakin <alobakin@dlink.ru>
Date:   Wed Dec 18 12:18:21 2019 +0300

    net, sysctl: Fix compiler warning when only cBPF is present
    
    [ Upstream commit 1148f9adbe71415836a18a36c1b4ece999ab0973 ]
    
    proc_dointvec_minmax_bpf_restricted() has been firstly introduced
    in commit 2e4a30983b0f ("bpf: restrict access to core bpf sysctls")
    under CONFIG_HAVE_EBPF_JIT. Then, this ifdef has been removed in
    ede95a63b5e8 ("bpf: add bpf_jit_limit knob to restrict unpriv
    allocations"), because a new sysctl, bpf_jit_limit, made use of it.
    Finally, this parameter has become long instead of integer with
    fdadd04931c2 ("bpf: fix bpf_jit_limit knob for PAGE_SIZE >= 64K")
    and thus, a new proc_dolongvec_minmax_bpf_restricted() has been
    added.
    
    With this last change, we got back to that
    proc_dointvec_minmax_bpf_restricted() is used only under
    CONFIG_HAVE_EBPF_JIT, but the corresponding ifdef has not been
    brought back.
    
    So, in configurations like CONFIG_BPF_JIT=y && CONFIG_HAVE_EBPF_JIT=n
    since v4.20 we have:
    
      CC      net/core/sysctl_net_core.o
    net/core/sysctl_net_core.c:292:1: warning: ‘proc_dointvec_minmax_bpf_restricted’ defined but not used [-Wunused-function]
      292 | proc_dointvec_minmax_bpf_restricted(struct ctl_table *table, int write,
          | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    Suppress this by guarding it with CONFIG_HAVE_EBPF_JIT again.
    
    Fixes: fdadd04931c2 ("bpf: fix bpf_jit_limit knob for PAGE_SIZE >= 64K")
    Signed-off-by: Alexander Lobakin <alobakin@dlink.ru>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Link: https://lore.kernel.org/bpf/20191218091821.7080-1-alobakin@dlink.ru
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b6829d2608ff945547eaaa22e76487db0c0b53f8
Author: Jan H. Schönherr <jschoenh@amazon.de>
Date:   Tue Dec 10 01:07:30 2019 +0100

    x86/mce: Fix possibly incorrect severity calculation on AMD
    
    [ Upstream commit a3a57ddad061acc90bef39635caf2b2330ce8f21 ]
    
    The function mce_severity_amd_smca() requires m->bank to be initialized
    for correct operation. Fix the one case, where mce_severity() is called
    without doing so.
    
    Fixes: 6bda529ec42e ("x86/mce: Grade uncorrected errors for SMCA-enabled systems")
    Fixes: d28af26faa0b ("x86/MCE: Initialize mce.bank in the case of a fatal error in mce_no_way_out()")
    Signed-off-by: Jan H. Schönherr <jschoenh@amazon.de>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Reviewed-by: Tony Luck <tony.luck@intel.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: linux-edac <linux-edac@vger.kernel.org>
    Cc: <stable@vger.kernel.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: x86-ml <x86@kernel.org>
    Cc: Yazen Ghannam <Yazen.Ghannam@amd.com>
    Link: https://lkml.kernel.org/r/20191210000733.17979-4-jschoenh@amazon.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 36d503a7b0311d989affef48b910d90cbae41057
Author: Mike Rapoport <rppt@linux.ibm.com>
Date:   Sat Nov 30 17:58:01 2019 -0800

    userfaultfd: require CAP_SYS_PTRACE for UFFD_FEATURE_EVENT_FORK
    
    [ Upstream commit 3c1c24d91ffd536de0a64688a9df7f49e58fadbc ]
    
    A while ago Andy noticed
    (http://lkml.kernel.org/r/CALCETrWY+5ynDct7eU_nDUqx=okQvjm=Y5wJvA4ahBja=CQXGw@mail.gmail.com)
    that UFFD_FEATURE_EVENT_FORK used by an unprivileged user may have
    security implications.
    
    As the first step of the solution the following patch limits the availably
    of UFFD_FEATURE_EVENT_FORK only for those having CAP_SYS_PTRACE.
    
    The usage of CAP_SYS_PTRACE ensures compatibility with CRIU.
    
    Yet, if there are other users of non-cooperative userfaultfd that run
    without CAP_SYS_PTRACE, they would be broken :(
    
    Current implementation of UFFD_FEATURE_EVENT_FORK modifies the file
    descriptor table from the read() implementation of uffd, which may have
    security implications for unprivileged use of the userfaultfd.
    
    Limit availability of UFFD_FEATURE_EVENT_FORK only for callers that have
    CAP_SYS_PTRACE.
    
    Link: http://lkml.kernel.org/r/1572967777-8812-2-git-send-email-rppt@linux.ibm.com
    Signed-off-by: Mike Rapoport <rppt@linux.ibm.com>
    Reviewed-by: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Daniel Colascione <dancol@google.com>
    Cc: Jann Horn <jannh@google.com>
    Cc: Lokesh Gidra <lokeshgidra@google.com>
    Cc: Nick Kralevich <nnk@google.com>
    Cc: Nosh Minwalla <nosh@google.com>
    Cc: Pavel Emelyanov <ovzxemul@gmail.com>
    Cc: Tim Murray <timmurray@google.com>
    Cc: Aleksa Sarai <cyphar@cyphar.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5dc89b665d7278a50997a081ae546115029b2282
Author: Johannes Weiner <hannes@cmpxchg.org>
Date:   Sat Nov 30 17:56:08 2019 -0800

    kernel: sysctl: make drop_caches write-only
    
    [ Upstream commit 204cb79ad42f015312a5bbd7012d09c93d9b46fb ]
    
    Currently, the drop_caches proc file and sysctl read back the last value
    written, suggesting this is somehow a stateful setting instead of a
    one-time command.  Make it write-only, like e.g.  compact_memory.
    
    While mitigating a VM problem at scale in our fleet, there was confusion
    about whether writing to this file will permanently switch the kernel into
    a non-caching mode.  This influences the decision making in a tense
    situation, where tens of people are trying to fix tens of thousands of
    affected machines: Do we need a rollback strategy?  What are the
    performance implications of operating in a non-caching state for several
    days?  It also caused confusion when the kernel team said we may need to
    write the file several times to make sure it's effective ("But it already
    reads back 3?").
    
    Link: http://lkml.kernel.org/r/20191031221602.9375-1-hannes@cmpxchg.org
    Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
    Acked-by: Chris Down <chris@chrisdown.name>
    Acked-by: Vlastimil Babka <vbabka@suse.cz>
    Acked-by: David Hildenbrand <david@redhat.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Acked-by: Alexey Dobriyan <adobriyan@gmail.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9c2f6b5e695f78dfc8dde991c2a23276f5b7041d
Author: Ding Xiang <dingxiang@cmss.chinamobile.com>
Date:   Sat Nov 30 17:49:12 2019 -0800

    ocfs2: fix passing zero to 'PTR_ERR' warning
    
    [ Upstream commit 188c523e1c271d537f3c9f55b6b65bf4476de32f ]
    
    Fix a static code checker warning:
    fs/ocfs2/acl.c:331
            ocfs2_acl_chmod() warn: passing zero to 'PTR_ERR'
    
    Link: http://lkml.kernel.org/r/1dee278b-6c96-eec2-ce76-fe6e07c6e20f@linux.alibaba.com
    Fixes: 5ee0fbd50fd ("ocfs2: revert using ocfs2_acl_chmod to avoid inode cluster lock hang")
    Signed-off-by: Ding Xiang <dingxiang@cmss.chinamobile.com>
    Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.com>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Changwei Ge <gechangwei@live.cn>
    Cc: Gang He <ghe@suse.com>
    Cc: Jun Piao <piaojun@huawei.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 03a8e61bab3355ec9c4ded3df6b63dd1868aaae9
Author: Thomas Richter <tmricht@linux.ibm.com>
Date:   Fri Nov 22 16:43:15 2019 +0100

    s390/cpum_sf: Check for SDBT and SDB consistency
    
    [ Upstream commit 247f265fa502e7b17a0cb0cc330e055a36aafce4 ]
    
    Each SBDT is located at a 4KB page and contains 512 entries.
    Each entry of a SDBT points to a SDB, a 4KB page containing
    sampled data. The last entry is a link to another SDBT page.
    
    When an event is created the function sequence executed is:
    
      __hw_perf_event_init()
      +--> allocate_buffers()
           +--> realloc_sampling_buffers()
                +---> alloc_sample_data_block()
    
    Both functions realloc_sampling_buffers() and
    alloc_sample_data_block() allocate pages and the allocation
    can fail. This is handled correctly and all allocated
    pages are freed and error -ENOMEM is returned to the
    top calling function. Finally the event is not created.
    
    Once the event has been created, the amount of initially
    allocated SDBT and SDB can be too low. This is detected
    during measurement interrupt handling, where the amount
    of lost samples is calculated. If the number of lost samples
    is too high considering sampling frequency and already allocated
    SBDs, the number of SDBs is enlarged during the next execution
    of cpumsf_pmu_enable().
    
    If more SBDs need to be allocated, functions
    
           realloc_sampling_buffers()
           +---> alloc-sample_data_block()
    
    are called to allocate more pages. Page allocation may fail
    and the returned error is ignored. A SDBT and SDB setup
    already exists.
    
    However the modified SDBTs and SDBs might end up in a situation
    where the first entry of an SDBT does not point to an SDB,
    but another SDBT, basicly an SBDT without payload.
    This can not be handled by the interrupt handler, where an SDBT
    must have at least one entry pointing to an SBD.
    
    Add a check to avoid SDBTs with out payload (SDBs) when enlarging
    the buffer setup.
    
    Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 916950d23ed457cfcf7b7107d08830c06212c337
Author: Masahiro Yamada <yamada.masahiro@socionext.com>
Date:   Wed Nov 13 16:12:02 2019 +0900

    libfdt: define INT32_MAX and UINT32_MAX in libfdt_env.h
    
    [ Upstream commit a8de1304b7df30e3a14f2a8b9709bb4ff31a0385 ]
    
    The DTC v1.5.1 added references to (U)INT32_MAX.
    
    This is no problem for user-space programs since <stdint.h> defines
    (U)INT32_MAX along with (u)int32_t.
    
    For the kernel space, libfdt_env.h needs to be adjusted before we
    pull in the changes.
    
    In the kernel, we usually use s/u32 instead of (u)int32_t for the
    fixed-width types.
    
    Accordingly, we already have S/U32_MAX for their max values.
    So, we should not add (U)INT32_MAX to <linux/limits.h> any more.
    
    Instead, add them to the in-kernel libfdt_env.h to compile the
    latest libfdt.
    
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6d7101aa1d5232a888f9fc98348974b9df04584d
Author: Harald Freudenberger <freude@linux.ibm.com>
Date:   Wed Nov 20 11:44:31 2019 +0100

    s390/zcrypt: handle new reply code FILTERED_BY_HYPERVISOR
    
    [ Upstream commit 6733775a92eacd612ac88afa0fd922e4ffeb2bc7 ]
    
    This patch introduces support for a new architectured reply
    code 0x8B indicating that a hypervisor layer (if any) has
    rejected an ap message.
    
    Linux may run as a guest on top of a hypervisor like zVM
    or KVM. So the crypto hardware seen by the ap bus may be
    restricted by the hypervisor for example only a subset like
    only clear key crypto requests may be supported. Other
    requests will be filtered out - rejected by the hypervisor.
    The new reply code 0x8B will appear in such cases and needs
    to get recognized by the ap bus and zcrypt device driver zoo.
    
    Signed-off-by: Harald Freudenberger <freude@linux.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9edc3a3ddb65d6291e5143c1c39e9b554597141a
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Wed Nov 27 10:13:34 2019 -0300

    perf regs: Make perf_reg_name() return "unknown" instead of NULL
    
    [ Upstream commit 5b596e0ff0e1852197d4c82d3314db5e43126bf7 ]
    
    To avoid breaking the build on arches where this is not wired up, at
    least all the other features should be made available and when using
    this specific routine, the "unknown" should point the user/developer to
    the need to wire this up on this particular hardware architecture.
    
    Detected in a container mipsel debian cross build environment, where it
    shows up as:
    
      In file included from /usr/mipsel-linux-gnu/include/stdio.h:867,
                       from /git/linux/tools/perf/lib/include/perf/cpumap.h:6,
                       from util/session.c:13:
      In function 'printf',
          inlined from 'regs_dump__printf' at util/session.c:1103:3,
          inlined from 'regs__printf' at util/session.c:1131:2:
      /usr/mipsel-linux-gnu/include/bits/stdio2.h:107:10: error: '%-5s' directive argument is null [-Werror=format-overflow=]
        107 |   return __printf_chk (__USE_FORTIFY_LEVEL - 1, __fmt, __va_arg_pack ());
            |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    cross compiler details:
    
      mipsel-linux-gnu-gcc (Debian 9.2.1-8) 9.2.1 20190909
    
    Also on mips64:
    
      In file included from /usr/mips64-linux-gnuabi64/include/stdio.h:867,
                       from /git/linux/tools/perf/lib/include/perf/cpumap.h:6,
                       from util/session.c:13:
      In function 'printf',
          inlined from 'regs_dump__printf' at util/session.c:1103:3,
          inlined from 'regs__printf' at util/session.c:1131:2,
          inlined from 'regs_user__printf' at util/session.c:1139:3,
          inlined from 'dump_sample' at util/session.c:1246:3,
          inlined from 'machines__deliver_event' at util/session.c:1421:3:
      /usr/mips64-linux-gnuabi64/include/bits/stdio2.h:107:10: error: '%-5s' directive argument is null [-Werror=format-overflow=]
        107 |   return __printf_chk (__USE_FORTIFY_LEVEL - 1, __fmt, __va_arg_pack ());
            |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      In function 'printf',
          inlined from 'regs_dump__printf' at util/session.c:1103:3,
          inlined from 'regs__printf' at util/session.c:1131:2,
          inlined from 'regs_intr__printf' at util/session.c:1147:3,
          inlined from 'dump_sample' at util/session.c:1249:3,
          inlined from 'machines__deliver_event' at util/session.c:1421:3:
      /usr/mips64-linux-gnuabi64/include/bits/stdio2.h:107:10: error: '%-5s' directive argument is null [-Werror=format-overflow=]
        107 |   return __printf_chk (__USE_FORTIFY_LEVEL - 1, __fmt, __va_arg_pack ());
            |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    cross compiler details:
    
      mips64-linux-gnuabi64-gcc (Debian 9.2.1-8) 9.2.1 20190909
    
    Fixes: 2bcd355b71da ("perf tools: Add interface to arch registers sets")
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Link: https://lkml.kernel.org/n/tip-95wjyv4o65nuaeweq31t7l1s@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3bda1b2036e954075bd29b28626052de3d09676e
Author: Adrian Hunter <adrian.hunter@intel.com>
Date:   Wed Nov 27 11:53:21 2019 +0200

    perf script: Fix brstackinsn for AUXTRACE
    
    [ Upstream commit 0cd032d3b5fcebf5454315400ab310746a81ca53 ]
    
    brstackinsn must be allowed to be set by the user when AUX area data has
    been captured because, in that case, the branch stack might be
    synthesized on the fly. This fixes the following error:
    
    Before:
    
      $ perf record -e '{intel_pt//,cpu/mem_inst_retired.all_loads,aux-sample-size=8192/pp}:u' grep -rqs jhgjhg /boot
      [ perf record: Woken up 19 times to write data ]
      [ perf record: Captured and wrote 2.274 MB perf.data ]
      $ perf script -F +brstackinsn --xed --itrace=i1usl100 | head
      Display of branch stack assembler requested, but non all-branch filter set
      Hint: run 'perf record -b ...'
    
    After:
    
      $ perf record -e '{intel_pt//,cpu/mem_inst_retired.all_loads,aux-sample-size=8192/pp}:u' grep -rqs jhgjhg /boot
      [ perf record: Woken up 19 times to write data ]
      [ perf record: Captured and wrote 2.274 MB perf.data ]
      $ perf script -F +brstackinsn --xed --itrace=i1usl100 | head
                grep 13759 [002]  8091.310257:       1862                                        instructions:uH:      5641d58069eb bmexec+0x86b (/bin/grep)
            bmexec+2485:
            00005641d5806b35                        jnz 0x5641d5806bd0              # MISPRED
            00005641d5806bd0                        movzxb  (%r13,%rdx,1), %eax
            00005641d5806bd6                        add %rdi, %rax
            00005641d5806bd9                        movzxb  -0x1(%rax), %edx
            00005641d5806bdd                        cmp %rax, %r14
            00005641d5806be0                        jnb 0x5641d58069c0              # MISPRED
            mismatch of LBR data and executable
            00005641d58069c0                        movzxb  (%r13,%rdx,1), %edi
    
    Fixes: 48d02a1d5c13 ("perf script: Add 'brstackinsn' for branch stacks")
    Reported-by: Andi Kleen <ak@linux.intel.com>
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Link: http://lore.kernel.org/lkml/20191127095322.15417-1-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8ee2f89ed3bf58e43347d9ee47638676c03dd976
Author: Diego Elio Pettenò <flameeyes@flameeyes.com>
Date:   Tue Nov 19 21:37:08 2019 +0000

    cdrom: respect device capabilities during opening action
    
    [ Upstream commit 366ba7c71ef77c08d06b18ad61b26e2df7352338 ]
    
    Reading the TOC only works if the device can play audio, otherwise
    these commands fail (and possibly bring the device to an unhealthy
    state.)
    
    Similarly, cdrom_mmc3_profile() should only be called if the device
    supports generic packet commands.
    
    To: Jens Axboe <axboe@kernel.dk>
    Cc: linux-kernel@vger.kernel.org
    Cc: linux-scsi@vger.kernel.org
    Signed-off-by: Diego Elio Pettenò <flameeyes@flameeyes.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a06d07dd52932800258d079a156eafd3d5dcc5b2
Author: Masahiro Yamada <yamada.masahiro@socionext.com>
Date:   Sun Nov 24 01:04:30 2019 +0900

    scripts/kallsyms: fix definitely-lost memory leak
    
    [ Upstream commit 21915eca088dc271c970e8351290e83d938114ac ]
    
    build_initial_tok_table() overwrites unused sym_entry to shrink the
    table size. Before the entry is overwritten, table[i].sym must be freed
    since it is malloc'ed data.
    
    This fixes the 'definitely lost' report from valgrind. I ran valgrind
    against x86_64_defconfig of v5.4-rc8 kernel, and here is the summary:
    
    [Before the fix]
    
      LEAK SUMMARY:
         definitely lost: 53,184 bytes in 2,874 blocks
    
    [After the fix]
    
      LEAK SUMMARY:
         definitely lost: 0 bytes in 0 blocks
    
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 04db2eb6686a0de1ff934656791d4225d201a6d2
Author: Colin Ian King <colin.king@canonical.com>
Date:   Thu Jun 27 14:09:04 2019 +0100

    apparmor: fix unsigned len comparison with less than zero
    
    [ Upstream commit 00e0590dbaec6f1bcaa36a85467d7e3497ced522 ]
    
    The sanity check in macro update_for_len checks to see if len
    is less than zero, however, len is a size_t so it can never be
    less than zero, so this sanity check is a no-op.  Fix this by
    making len a ssize_t so the comparison will work and add ulen
    that is a size_t copy of len so that the min() macro won't
    throw warnings about comparing different types.
    
    Addresses-Coverity: ("Macro compares unsigned to 0")
    Fixes: f1bd904175e8 ("apparmor: add the base fns() for domain labels")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: John Johansen <john.johansen@canonical.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d5342c26646107b126ab2f1e0aa410006559c561
Author: Vladimir Oltean <vladimir.oltean@nxp.com>
Date:   Fri Nov 15 14:55:51 2019 +0200

    gpio: mpc8xxx: Don't overwrite default irq_set_type callback
    
    [ Upstream commit 4e50573f39229d5e9c985fa3b4923a8b29619ade ]
    
    The per-SoC devtype structures can contain their own callbacks that
    overwrite mpc8xxx_gpio_devtype_default.
    
    The clear intention is that mpc8xxx_irq_set_type is used in case the SoC
    does not specify a more specific callback. But what happens is that if
    the SoC doesn't specify one, its .irq_set_type is de-facto NULL, and
    this overwrites mpc8xxx_irq_set_type to a no-op. This means that the
    following SoCs are affected:
    
    - fsl,mpc8572-gpio
    - fsl,ls1028a-gpio
    - fsl,ls1088a-gpio
    
    On these boards, the irq_set_type does exactly nothing, and the GPIO
    controller keeps its GPICR register in the hardware-default state. On
    the LS1028A, that is ACTIVE_BOTH, which means 2 interrupts are raised
    even if the IRQ client requests LEVEL_HIGH. Another implication is that
    the IRQs are not checked (e.g. level-triggered interrupts are not
    rejected, although they are not supported).
    
    Fixes: 82e39b0d8566 ("gpio: mpc8xxx: handle differences between incarnations at a single place")
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Link: https://lore.kernel.org/r/20191115125551.31061-1-olteanv@gmail.com
    Tested-by: Michael Walle <michael@walle.cc>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6772ac25b19c355a1af381f1e505c266c6977199
Author: Bart Van Assche <bvanassche@acm.org>
Date:   Wed Nov 13 14:05:08 2019 -0800

    scsi: target: iscsi: Wait for all commands to finish before freeing a session
    
    [ Upstream commit e9d3009cb936bd0faf0719f68d98ad8afb1e613b ]
    
    The iSCSI target driver is the only target driver that does not wait for
    ongoing commands to finish before freeing a session. Make the iSCSI target
    driver wait for ongoing commands to finish before freeing a session. This
    patch fixes the following KASAN complaint:
    
    BUG: KASAN: use-after-free in __lock_acquire+0xb1a/0x2710
    Read of size 8 at addr ffff8881154eca70 by task kworker/0:2/247
    
    CPU: 0 PID: 247 Comm: kworker/0:2 Not tainted 5.4.0-rc1-dbg+ #6
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.12.0-1 04/01/2014
    Workqueue: target_completion target_complete_ok_work [target_core_mod]
    Call Trace:
     dump_stack+0x8a/0xd6
     print_address_description.constprop.0+0x40/0x60
     __kasan_report.cold+0x1b/0x33
     kasan_report+0x16/0x20
     __asan_load8+0x58/0x90
     __lock_acquire+0xb1a/0x2710
     lock_acquire+0xd3/0x200
     _raw_spin_lock_irqsave+0x43/0x60
     target_release_cmd_kref+0x162/0x7f0 [target_core_mod]
     target_put_sess_cmd+0x2e/0x40 [target_core_mod]
     lio_check_stop_free+0x12/0x20 [iscsi_target_mod]
     transport_cmd_check_stop_to_fabric+0xd8/0xe0 [target_core_mod]
     target_complete_ok_work+0x1b0/0x790 [target_core_mod]
     process_one_work+0x549/0xa40
     worker_thread+0x7a/0x5d0
     kthread+0x1bc/0x210
     ret_from_fork+0x24/0x30
    
    Allocated by task 889:
     save_stack+0x23/0x90
     __kasan_kmalloc.constprop.0+0xcf/0xe0
     kasan_slab_alloc+0x12/0x20
     kmem_cache_alloc+0xf6/0x360
     transport_alloc_session+0x29/0x80 [target_core_mod]
     iscsi_target_login_thread+0xcd6/0x18f0 [iscsi_target_mod]
     kthread+0x1bc/0x210
     ret_from_fork+0x24/0x30
    
    Freed by task 1025:
     save_stack+0x23/0x90
     __kasan_slab_free+0x13a/0x190
     kasan_slab_free+0x12/0x20
     kmem_cache_free+0x146/0x400
     transport_free_session+0x179/0x2f0 [target_core_mod]
     transport_deregister_session+0x130/0x180 [target_core_mod]
     iscsit_close_session+0x12c/0x350 [iscsi_target_mod]
     iscsit_logout_post_handler+0x136/0x380 [iscsi_target_mod]
     iscsit_response_queue+0x8de/0xbe0 [iscsi_target_mod]
     iscsi_target_tx_thread+0x27f/0x370 [iscsi_target_mod]
     kthread+0x1bc/0x210
     ret_from_fork+0x24/0x30
    
    The buggy address belongs to the object at ffff8881154ec9c0
     which belongs to the cache se_sess_cache of size 352
    The buggy address is located 176 bytes inside of
     352-byte region [ffff8881154ec9c0, ffff8881154ecb20)
    The buggy address belongs to the page:
    page:ffffea0004553b00 refcount:1 mapcount:0 mapping:ffff888101755400 index:0x0 compound_mapcount: 0
    flags: 0x2fff000000010200(slab|head)
    raw: 2fff000000010200 dead000000000100 dead000000000122 ffff888101755400
    raw: 0000000000000000 0000000080130013 00000001ffffffff 0000000000000000
    page dumped because: kasan: bad access detected
    
    Memory state around the buggy address:
     ffff8881154ec900: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
     ffff8881154ec980: fc fc fc fc fc fc fc fc fb fb fb fb fb fb fb fb
    >ffff8881154eca00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                                                                 ^
     ffff8881154eca80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
     ffff8881154ecb00: fb fb fb fb fc fc fc fc fc fc fc fc fc fc fc fc
    
    Cc: Mike Christie <mchristi@redhat.com>
    Link: https://lore.kernel.org/r/20191113220508.198257-3-bvanassche@acm.org
    Reviewed-by: Roman Bolshakov <r.bolshakov@yadro.com>
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5a6decd4bcccf23bd1fe45cf1eff1f130d240c16
Author: Anatol Pomazau <anatol@google.com>
Date:   Fri Nov 15 19:47:35 2019 -0500

    scsi: iscsi: Don't send data to unbound connection
    
    [ Upstream commit 238191d65d7217982d69e21c1d623616da34b281 ]
    
    If a faulty initiator fails to bind the socket to the iSCSI connection
    before emitting a command, for instance, a subsequent send_pdu, it will
    crash the kernel due to a null pointer dereference in sock_sendmsg(), as
    shown in the log below.  This patch makes sure the bind succeeded before
    trying to use the socket.
    
    BUG: kernel NULL pointer dereference, address: 0000000000000018
     #PF: supervisor read access in kernel mode
     #PF: error_code(0x0000) - not-present page
    PGD 0 P4D 0
    Oops: 0000 [#1] SMP PTI
    CPU: 3 PID: 7 Comm: kworker/u8:0 Not tainted 5.4.0-rc2.iscsi+ #13
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.12.0-1 04/01/2014
    [   24.158246] Workqueue: iscsi_q_0 iscsi_xmitworker
    [   24.158883] RIP: 0010:apparmor_socket_sendmsg+0x5/0x20
    [...]
    [   24.161739] RSP: 0018:ffffab6440043ca0 EFLAGS: 00010282
    [   24.162400] RAX: ffffffff891c1c00 RBX: ffffffff89d53968 RCX: 0000000000000001
    [   24.163253] RDX: 0000000000000030 RSI: ffffab6440043d00 RDI: 0000000000000000
    [   24.164104] RBP: 0000000000000030 R08: 0000000000000030 R09: 0000000000000030
    [   24.165166] R10: ffffffff893e66a0 R11: 0000000000000018 R12: ffffab6440043d00
    [   24.166038] R13: 0000000000000000 R14: 0000000000000000 R15: ffff9d5575a62e90
    [   24.166919] FS:  0000000000000000(0000) GS:ffff9d557db80000(0000) knlGS:0000000000000000
    [   24.167890] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   24.168587] CR2: 0000000000000018 CR3: 000000007a838000 CR4: 00000000000006e0
    [   24.169451] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [   24.170320] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [   24.171214] Call Trace:
    [   24.171537]  security_socket_sendmsg+0x3a/0x50
    [   24.172079]  sock_sendmsg+0x16/0x60
    [   24.172506]  iscsi_sw_tcp_xmit_segment+0x77/0x120
    [   24.173076]  iscsi_sw_tcp_pdu_xmit+0x58/0x170
    [   24.173604]  ? iscsi_dbg_trace+0x63/0x80
    [   24.174087]  iscsi_tcp_task_xmit+0x101/0x280
    [   24.174666]  iscsi_xmit_task+0x83/0x110
    [   24.175206]  iscsi_xmitworker+0x57/0x380
    [   24.175757]  ? __schedule+0x2a2/0x700
    [   24.176273]  process_one_work+0x1b5/0x360
    [   24.176837]  worker_thread+0x50/0x3c0
    [   24.177353]  kthread+0xf9/0x130
    [   24.177799]  ? process_one_work+0x360/0x360
    [   24.178401]  ? kthread_park+0x90/0x90
    [   24.178915]  ret_from_fork+0x35/0x40
    [   24.179421] Modules linked in:
    [   24.179856] CR2: 0000000000000018
    [   24.180327] ---[ end trace b4b7674b6df5f480 ]---
    
    Signed-off-by: Anatol Pomazau <anatol@google.com>
    Co-developed-by: Frank Mayhar <fmayhar@google.com>
    Signed-off-by: Frank Mayhar <fmayhar@google.com>
    Co-developed-by: Bharath Ravi <rbharath@google.com>
    Signed-off-by: Bharath Ravi <rbharath@google.com>
    Co-developed-by: Khazhimsel Kumykov <khazhy@google.com>
    Signed-off-by: Khazhimsel Kumykov <khazhy@google.com>
    Co-developed-by: Gabriel Krisman Bertazi <krisman@collabora.com>
    Signed-off-by: Gabriel Krisman Bertazi <krisman@collabora.com>
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3e7ebe5b2b3f9e54aecd5512a50943019a7880af
Author: Finn Thain <fthain@telegraphics.com.au>
Date:   Sat Nov 16 14:36:57 2019 +1100

    scsi: NCR5380: Add disconnect_mask module parameter
    
    [ Upstream commit 0b7a223552d455bcfba6fb9cfc5eef2b5fce1491 ]
    
    Add a module parameter to inhibit disconnect/reselect for individual
    targets. This gains compatibility with Aztec PowerMonster SCSI/SATA
    adapters with buggy firmware. (No fix is available from the vendor.)
    
    Apparently these adapters pass-through the product/vendor of the attached
    SATA device. Since they can't be identified from the response to an INQUIRY
    command, a device blacklist flag won't work.
    
    Cc: Michael Schmitz <schmitzmic@gmail.com>
    Link: https://lore.kernel.org/r/993b17545990f31f9fa5a98202b51102a68e7594.1573875417.git.fthain@telegraphics.com.au
    Reviewed-and-tested-by: Michael Schmitz <schmitzmic@gmail.com>
    Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 360153b100f892a3e3ad97dc634237333ec693e7
Author: Maurizio Lombardi <mlombard@redhat.com>
Date:   Fri Nov 15 17:37:27 2019 +0100

    scsi: scsi_debug: num_tgts must be >= 0
    
    [ Upstream commit aa5334c4f3014940f11bf876e919c956abef4089 ]
    
    Passing the parameter "num_tgts=-1" will start an infinite loop that
    exhausts the system memory
    
    Link: https://lore.kernel.org/r/20191115163727.24626-1-mlombard@redhat.com
    Signed-off-by: Maurizio Lombardi <mlombard@redhat.com>
    Acked-by: Douglas Gilbert <dgilbert@interlog.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8f000d767e32ae0c91592c94d2b908e13c607adb
Author: Subhash Jadavani <subhashj@codeaurora.org>
Date:   Thu Nov 14 22:09:30 2019 -0800

    scsi: ufs: Fix error handing during hibern8 enter
    
    [ Upstream commit 6d303e4b19d694cdbebf76bcdb51ada664ee953d ]
    
    During clock gating (ufshcd_gate_work()), we first put the link hibern8 by
    calling ufshcd_uic_hibern8_enter() and if ufshcd_uic_hibern8_enter()
    returns success (0) then we gate all the clocks.  Now let’s zoom in to what
    ufshcd_uic_hibern8_enter() does internally: It calls
    __ufshcd_uic_hibern8_enter() and if failure is encountered, link recovery
    shall put the link back to the highest HS gear and returns success (0) to
    ufshcd_uic_hibern8_enter() which is the issue as link is still in active
    state due to recovery!  Now ufshcd_uic_hibern8_enter() returns success to
    ufshcd_gate_work() and hence it goes ahead with gating the UFS clock while
    link is still in active state hence I believe controller would raise UIC
    error interrupts. But when we service the interrupt, clocks might have
    already been disabled!
    
    This change fixes for this by returning failure from
    __ufshcd_uic_hibern8_enter() if recovery succeeds as link is still not in
    hibern8, upon receiving the error ufshcd_hibern8_enter() would initiate
    retry to put the link state back into hibern8.
    
    Link: https://lore.kernel.org/r/1573798172-20534-8-git-send-email-cang@codeaurora.org
    Reviewed-by: Avri Altman <avri.altman@wdc.com>
    Reviewed-by: Bean Huo <beanhuo@micron.com>
    Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
    Signed-off-by: Can Guo <cang@codeaurora.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 369d36324d33085feba90a4236a82b2c34a0f049
Author: peter chang <dpf@google.com>
Date:   Thu Nov 14 15:38:58 2019 +0530

    scsi: pm80xx: Fix for SATA device discovery
    
    [ Upstream commit ce21c63ee995b7a8b7b81245f2cee521f8c3c220 ]
    
    Driver was missing complete() call in mpi_sata_completion which result in
    SATA abort error handling timing out. That causes the device to be left in
    the in_recovery state so subsequent commands sent to the device fail and
    the OS removes access to it.
    
    Link: https://lore.kernel.org/r/20191114100910.6153-2-deepak.ukey@microchip.com
    Acked-by: Jack Wang <jinpu.wang@cloud.ionos.com>
    Signed-off-by: peter chang <dpf@google.com>
    Signed-off-by: Deepak Ukey <deepak.ukey@microchip.com>
    Signed-off-by: Viswas G <Viswas.G@microchip.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 356218185edbec9e6d7c1a9c00929be53bc8775e
Author: Blaž Hrastnik <blaz@mxxn.io>
Date:   Wed Nov 6 20:02:46 2019 +0900

    HID: Improve Windows Precision Touchpad detection.
    
    [ Upstream commit 2dbc6f113acd74c66b04bf49fb027efd830b1c5a ]
    
    Per Microsoft spec, usage 0xC5 (page 0xFF) returns a blob containing
    data used to verify the touchpad as a Windows Precision Touchpad.
    
       0x85, REPORTID_PTPHQA,    //    REPORT_ID (PTPHQA)
        0x09, 0xC5,              //    USAGE (Vendor Usage 0xC5)
        0x15, 0x00,              //    LOGICAL_MINIMUM (0)
        0x26, 0xff, 0x00,        //    LOGICAL_MAXIMUM (0xff)
        0x75, 0x08,              //    REPORT_SIZE (8)
        0x96, 0x00, 0x01,        //    REPORT_COUNT (0x100 (256))
        0xb1, 0x02,              //    FEATURE (Data,Var,Abs)
    
    However, some devices, namely Microsoft's Surface line of products
    instead implement a "segmented device certification report" (usage 0xC6)
    which returns the same report, but in smaller chunks.
    
        0x06, 0x00, 0xff,        //     USAGE_PAGE (Vendor Defined)
        0x85, REPORTID_PTPHQA,   //     REPORT_ID (PTPHQA)
        0x09, 0xC6,              //     USAGE (Vendor usage for segment #)
        0x25, 0x08,              //     LOGICAL_MAXIMUM (8)
        0x75, 0x08,              //     REPORT_SIZE (8)
        0x95, 0x01,              //     REPORT_COUNT (1)
        0xb1, 0x02,              //     FEATURE (Data,Var,Abs)
        0x09, 0xC7,              //     USAGE (Vendor Usage)
        0x26, 0xff, 0x00,        //     LOGICAL_MAXIMUM (0xff)
        0x95, 0x20,              //     REPORT_COUNT (32)
        0xb1, 0x02,              //     FEATURE (Data,Var,Abs)
    
    By expanding Win8 touchpad detection to also look for the segmented
    report, all Surface touchpads are now properly recognized by
    hid-multitouch.
    
    Signed-off-by: Blaž Hrastnik <blaz@mxxn.io>
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7ceb69670c2a885bc7a2f52f19bc5a87b4522538
Author: Qian Cai <cai@lca.pw>
Date:   Thu Oct 31 10:05:19 2019 -0400

    libnvdimm/btt: fix variable 'rc' set but not used
    
    [ Upstream commit 4e24e37d5313edca8b4ab86f240c046c731e28d6 ]
    
    drivers/nvdimm/btt.c: In function 'btt_read_pg':
    drivers/nvdimm/btt.c:1264:8: warning: variable 'rc' set but not used
    [-Wunused-but-set-variable]
        int rc;
            ^~
    
    Add a ratelimited message in case a storm of errors is encountered.
    
    Fixes: d9b83c756953 ("libnvdimm, btt: rework error clearing")
    Signed-off-by: Qian Cai <cai@lca.pw>
    Reviewed-by: Vishal Verma <vishal.l.verma@intel.com>
    Link: https://lore.kernel.org/r/1572530719-32161-1-git-send-email-cai@lca.pw
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f7aff3b9282651be45e4b8cceb1386b3cc89ffb1
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Thu Nov 14 15:30:46 2019 +0100

    HID: logitech-hidpp: Silence intermittent get_battery_capacity errors
    
    [ Upstream commit 61005d65b6c7dcf61c19516e6ebe5acc02d2cdda ]
    
    My Logitech M185 (PID:4038) 2.4 GHz wireless HID++ mouse is causing
    intermittent errors like these in the log:
    
    [11091.034857] logitech-hidpp-device 0003:046D:4038.0006: hidpp20_batterylevel_get_battery_capacity: received protocol error 0x09
    [12388.031260] logitech-hidpp-device 0003:046D:4038.0006: hidpp20_batterylevel_get_battery_capacity: received protocol error 0x09
    [16613.718543] logitech-hidpp-device 0003:046D:4038.0006: hidpp20_batterylevel_get_battery_capacity: received protocol error 0x09
    [23529.938728] logitech-hidpp-device 0003:046D:4038.0006: hidpp20_batterylevel_get_battery_capacity: received protocol error 0x09
    
    We are already silencing error-code 0x09 (HIDPP_ERROR_RESOURCE_ERROR)
    errors in other places, lets do the same in
    hidpp20_batterylevel_get_battery_capacity to remove these harmless,
    but scary looking errors from the dmesg output.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 90cfabd5f3945bf1df327e78940e364af7bb6f82
Author: Coly Li <colyli@suse.de>
Date:   Wed Nov 13 16:03:24 2019 +0800

    bcache: at least try to shrink 1 node in bch_mca_scan()
    
    [ Upstream commit 9fcc34b1a6dd4b8e5337e2b6ef45e428897eca6b ]
    
    In bch_mca_scan(), the number of shrinking btree node is calculated
    by code like this,
            unsigned long nr = sc->nr_to_scan;
    
            nr /= c->btree_pages;
            nr = min_t(unsigned long, nr, mca_can_free(c));
    variable sc->nr_to_scan is number of objects (here is bcache B+tree
    nodes' number) to shrink, and pointer variable sc is sent from memory
    management code as parametr of a callback.
    
    If sc->nr_to_scan is smaller than c->btree_pages, after the above
    calculation, variable 'nr' will be 0 and nothing will be shrunk. It is
    frequeently observed that only 1 or 2 is set to sc->nr_to_scan and make
    nr to be zero. Then bch_mca_scan() will do nothing more then acquiring
    and releasing mutex c->bucket_lock.
    
    This patch checkes whether nr is 0 after the above calculation, if 0
    is the result then set 1 to variable 'n'. Then at least bch_mca_scan()
    will try to shrink a single B+tree node.
    
    Signed-off-by: Coly Li <colyli@suse.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0884d8df84d51592016e36d5e351a9ee5666b80f
Author: Robert Jarzmik <robert.jarzmik@free.fr>
Date:   Sat Oct 26 21:44:20 2019 +0200

    clk: pxa: fix one of the pxa RTC clocks
    
    [ Upstream commit 46acbcb4849b2ca2e6e975e7c8130c1d61c8fd0c ]
    
    The pxa27x platforms have a single IP with 2 drivers, sa1100-rtc and
    rtc-pxa drivers.
    
    A previous patch fixed the sa1100-rtc case, but the pxa-rtc wasn't
    fixed. This patch completes the previous one.
    
    Fixes: 8b6d10345e16 ("clk: pxa: add missing pxa27x clocks for Irda and sa1100-rtc")
    Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr>
    Link: https://lkml.kernel.org/r/20191026194420.11918-1-robert.jarzmik@free.fr
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 43b8d08c1b09b4e0810247bf6cf0da0034c0b8e8
Author: Finn Thain <fthain@telegraphics.com.au>
Date:   Sat Nov 2 12:06:54 2019 +1100

    scsi: atari_scsi: sun3_scsi: Set sg_tablesize to 1 instead of SG_NONE
    
    [ Upstream commit 79172ab20bfd8437b277254028efdb68484e2c21 ]
    
    Since the scsi subsystem adopted the blk-mq API, a host with zero
    sg_tablesize crashes with a NULL pointer dereference.
    
    blk_queue_max_segments: set to minimum 1
    scsi 0:0:0:0: Direct-Access     QEMU     QEMU HARDDISK    2.5+ PQ: 0 ANSI: 5
    scsi target0:0:0: Beginning Domain Validation
    scsi target0:0:0: Domain Validation skipping write tests
    scsi target0:0:0: Ending Domain Validation
    blk_queue_max_segments: set to minimum 1
    scsi 0:0:1:0: Direct-Access     QEMU     QEMU HARDDISK    2.5+ PQ: 0 ANSI: 5
    scsi target0:0:1: Beginning Domain Validation
    scsi target0:0:1: Domain Validation skipping write tests
    scsi target0:0:1: Ending Domain Validation
    blk_queue_max_segments: set to minimum 1
    scsi 0:0:2:0: CD-ROM            QEMU     QEMU CD-ROM      2.5+ PQ: 0 ANSI: 5
    scsi target0:0:2: Beginning Domain Validation
    scsi target0:0:2: Domain Validation skipping write tests
    scsi target0:0:2: Ending Domain Validation
    blk_queue_max_segments: set to minimum 1
    blk_queue_max_segments: set to minimum 1
    blk_queue_max_segments: set to minimum 1
    blk_queue_max_segments: set to minimum 1
    sr 0:0:2:0: Power-on or device reset occurred
    sd 0:0:0:0: Power-on or device reset occurred
    sd 0:0:1:0: Power-on or device reset occurred
    sd 0:0:0:0: [sda] 10485762 512-byte logical blocks: (5.37 GB/5.00 GiB)
    sd 0:0:0:0: [sda] Write Protect is off
    sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
    Unable to handle kernel NULL pointer dereference at virtual address (ptrval)
    Oops: 00000000
    Modules linked in:
    PC: [<001cd874>] blk_mq_free_request+0x66/0xe2
    SR: 2004  SP: (ptrval)  a2: 00874520
    d0: 00000000    d1: 00000000    d2: 009ba800    d3: 00000000
    d4: 00000000    d5: 08000002    a0: 0087be68    a1: 009a81e0
    Process kworker/u2:2 (pid: 15, task=(ptrval))
    Frame format=7 eff addr=0000007a ssw=0505 faddr=0000007a
    wb 1 stat/addr/data: 0000 00000000 00000000
    wb 2 stat/addr/data: 0000 00000000 00000000
    wb 3 stat/addr/data: 0000 0000007a 00000000
    push data: 00000000 00000000 00000000 00000000
    Stack from 0087bd98:
            00000002 00000000 0087be72 009a7820 0087bdb4 001c4f6c 009a7820 0087bdd4
            0024d200 009a7820 0024d0dc 0087be72 009baa00 0087be68 009a5000 0087be7c
            00265d10 009a5000 0087be72 00000003 00000000 00000000 00000000 0087be68
            00000bb8 00000005 00000000 00000000 00000000 00000000 00265c56 00000000
            009ba60c 0036ddf4 00000002 ffffffff 009baa00 009ba600 009a50d6 0087be74
            00227ba0 009baa08 00000001 009baa08 009ba60c 0036ddf4 00000000 00000000
    Call Trace: [<001c4f6c>] blk_put_request+0xe/0x14
     [<0024d200>] __scsi_execute+0x124/0x174
     [<0024d0dc>] __scsi_execute+0x0/0x174
     [<00265d10>] sd_revalidate_disk+0xba/0x1f02
     [<00265c56>] sd_revalidate_disk+0x0/0x1f02
     [<0036ddf4>] strlen+0x0/0x22
     [<00227ba0>] device_add+0x3da/0x604
     [<0036ddf4>] strlen+0x0/0x22
     [<00267e64>] sd_probe+0x30c/0x4b4
     [<0002da44>] process_one_work+0x0/0x402
     [<0022b978>] really_probe+0x226/0x354
     [<0022bc34>] driver_probe_device+0xa4/0xf0
     [<0002da44>] process_one_work+0x0/0x402
     [<0022bcd0>] __driver_attach_async_helper+0x50/0x70
     [<00035dae>] async_run_entry_fn+0x36/0x130
     [<0002db88>] process_one_work+0x144/0x402
     [<0002e1aa>] worker_thread+0x0/0x570
     [<0002e29a>] worker_thread+0xf0/0x570
     [<0002e1aa>] worker_thread+0x0/0x570
     [<003768d8>] schedule+0x0/0xb8
     [<0003f58c>] __init_waitqueue_head+0x0/0x12
     [<00033e92>] kthread+0xc2/0xf6
     [<000331e8>] kthread_parkme+0x0/0x4e
     [<003768d8>] schedule+0x0/0xb8
     [<00033dd0>] kthread+0x0/0xf6
     [<00002c10>] ret_from_kernel_thread+0xc/0x14
    Code: 0280 0006 0800 56c0 4400 0280 0000 00ff <52b4> 0c3a 082b 0006 0013 6706 2042 53a8 00c4 4ab9 0047 3374 6640 202d 000c 670c
    Disabling lock debugging due to kernel taint
    
    Avoid this by setting sg_tablesize = 1.
    
    Link: https://lore.kernel.org/r/4567bcae94523b47d6f3b77450ba305823bca479.1572656814.git.fthain@telegraphics.com.au
    Reported-and-tested-by: Michael Schmitz <schmitzmic@gmail.com>
    Reviewed-by: Michael Schmitz <schmitzmic@gmail.com>
    References: commit 68ab2d76e4be ("scsi: cxlflash: Set sg_tablesize to 1 instead of SG_NONE")
    Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d17d0199fb0730bba30859c11d1f894b3fab94ba
Author: Gustavo L. F. Walbon <gwalbon@linux.ibm.com>
Date:   Thu May 2 18:09:07 2019 -0300

    powerpc/security: Fix wrong message when RFI Flush is disable
    
    [ Upstream commit 4e706af3cd8e1d0503c25332b30cad33c97ed442 ]
    
    The issue was showing "Mitigation" message via sysfs whatever the
    state of "RFI Flush", but it should show "Vulnerable" when it is
    disabled.
    
    If you have "L1D private" feature enabled and not "RFI Flush" you are
    vulnerable to meltdown attacks.
    
    "RFI Flush" is the key feature to mitigate the meltdown whatever the
    "L1D private" state.
    
    SEC_FTR_L1D_THREAD_PRIV is a feature for Power9 only.
    
    So the message should be as the truth table shows:
    
      CPU | L1D private | RFI Flush |                sysfs
      ----|-------------|-----------|-------------------------------------
       P9 |    False    |   False   | Vulnerable
       P9 |    False    |   True    | Mitigation: RFI Flush
       P9 |    True     |   False   | Vulnerable: L1D private per thread
       P9 |    True     |   True    | Mitigation: RFI Flush, L1D private per thread
       P8 |    False    |   False   | Vulnerable
       P8 |    False    |   True    | Mitigation: RFI Flush
    
    Output before this fix:
      # cat /sys/devices/system/cpu/vulnerabilities/meltdown
      Mitigation: RFI Flush, L1D private per thread
      # echo 0 > /sys/kernel/debug/powerpc/rfi_flush
      # cat /sys/devices/system/cpu/vulnerabilities/meltdown
      Mitigation: L1D private per thread
    
    Output after fix:
      # cat /sys/devices/system/cpu/vulnerabilities/meltdown
      Mitigation: RFI Flush, L1D private per thread
      # echo 0 > /sys/kernel/debug/powerpc/rfi_flush
      # cat /sys/devices/system/cpu/vulnerabilities/meltdown
      Vulnerable: L1D private per thread
    
    Signed-off-by: Gustavo L. F. Walbon <gwalbon@linux.ibm.com>
    Signed-off-by: Mauro S. M. Rodrigues <maurosr@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20190502210907.42375-1-gwalbon@linux.ibm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e2b1506f69cb1600aa8338643b6f888ba1a3e9b3
Author: David Hildenbrand <david@redhat.com>
Date:   Thu Oct 31 15:29:22 2019 +0100

    powerpc/pseries/cmm: Implement release() function for sysfs device
    
    [ Upstream commit 7d8212747435c534c8d564fbef4541a463c976ff ]
    
    When unloading the module, one gets
      ------------[ cut here ]------------
      Device 'cmm0' does not have a release() function, it is broken and must be fixed. See Documentation/kobject.txt.
      WARNING: CPU: 0 PID: 19308 at drivers/base/core.c:1244 .device_release+0xcc/0xf0
      ...
    
    We only have one static fake device. There is nothing to do when
    releasing the device (via cmm_exit()).
    
    Signed-off-by: David Hildenbrand <david@redhat.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20191031142933.10779-2-david@redhat.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1d75a2d82dbe59e8f17f68b8eb3d697232f8b0d6
Author: Bean Huo <beanhuo@micron.com>
Date:   Tue Nov 12 23:34:36 2019 +0100

    scsi: ufs: fix potential bug which ends in system hang
    
    [ Upstream commit cfcbae3895b86c390ede57b2a8f601dd5972b47b ]
    
    In function __ufshcd_query_descriptor(), in the event of an error
    happening, we directly goto out_unlock and forget to invaliate
    hba->dev_cmd.query.descriptor pointer. This results in this pointer still
    valid in ufshcd_copy_query_response() for other query requests which go
    through ufshcd_exec_raw_upiu_cmd(). This will cause __memcpy() crash and
    system hangs. Log as shown below:
    
    Unable to handle kernel paging request at virtual address
    ffff000012233c40
    Mem abort info:
       ESR = 0x96000047
       Exception class = DABT (current EL), IL = 32 bits
       SET = 0, FnV = 0
       EA = 0, S1PTW = 0
    Data abort info:
       ISV = 0, ISS = 0x00000047
       CM = 0, WnR = 1
    swapper pgtable: 4k pages, 48-bit VAs, pgdp = 0000000028cc735c
    [ffff000012233c40] pgd=00000000bffff003, pud=00000000bfffe003,
    pmd=00000000ba8b8003, pte=0000000000000000
     Internal error: Oops: 96000047 [#2] PREEMPT SMP
     ...
     Call trace:
      __memcpy+0x74/0x180
      ufshcd_issue_devman_upiu_cmd+0x250/0x3c0
      ufshcd_exec_raw_upiu_cmd+0xfc/0x1a8
      ufs_bsg_request+0x178/0x3b0
      bsg_queue_rq+0xc0/0x118
      blk_mq_dispatch_rq_list+0xb0/0x538
      blk_mq_sched_dispatch_requests+0x18c/0x1d8
      __blk_mq_run_hw_queue+0xb4/0x118
      blk_mq_run_work_fn+0x28/0x38
      process_one_work+0x1ec/0x470
      worker_thread+0x48/0x458
      kthread+0x130/0x138
      ret_from_fork+0x10/0x1c
     Code: 540000ab a8c12027 a88120c7 a8c12027 (a88120c7)
     ---[ end trace 793e1eb5dff69f2d ]---
     note: kworker/0:2H[2054] exited with preempt_count 1
    
    This patch is to move "descriptor = NULL" down to below the label
    "out_unlock".
    
    Fixes: d44a5f98bb49b2(ufs: query descriptor API)
    Link: https://lore.kernel.org/r/20191112223436.27449-3-huobean@gmail.com
    Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com>
    Reviewed-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Bean Huo <beanhuo@micron.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 72b0b49aba0e465b7e673a302d3cb5267f14dedc
Author: James Smart <jsmart2021@gmail.com>
Date:   Mon Nov 11 15:03:57 2019 -0800

    scsi: lpfc: fix: Coverity: lpfc_cmpl_els_rsp(): Null pointer dereferences
    
    [ Upstream commit 6c6d59e0fe5b86cf273d6d744a6a9768c4ecc756 ]
    
    Coverity reported the following:
    
    *** CID 101747:  Null pointer dereferences  (FORWARD_NULL)
    /drivers/scsi/lpfc/lpfc_els.c: 4439 in lpfc_cmpl_els_rsp()
    4433                            kfree(mp);
    4434                    }
    4435                    mempool_free(mbox, phba->mbox_mem_pool);
    4436            }
    4437     out:
    4438            if (ndlp && NLP_CHK_NODE_ACT(ndlp)) {
    vvv     CID 101747:  Null pointer dereferences  (FORWARD_NULL)
    vvv     Dereferencing null pointer "shost".
    4439                    spin_lock_irq(shost->host_lock);
    4440                    ndlp->nlp_flag &= ~(NLP_ACC_REGLOGIN | NLP_RM_DFLT_RPI);
    4441                    spin_unlock_irq(shost->host_lock);
    4442
    4443                    /* If the node is not being used by another discovery thread,
    4444                     * and we are sending a reject, we are done with it.
    
    Fix by adding a check for non-null shost in line 4438.
    The scenario when shost is set to null is when ndlp is null.
    As such, the ndlp check present was sufficient. But better safe
    than sorry so add the shost check.
    
    Reported-by: coverity-bot <keescook+coverity-bot@chromium.org>
    Addresses-Coverity-ID: 101747 ("Null pointer dereferences")
    Fixes: 2e0fef85e098 ("[SCSI] lpfc: NPIV: split ports")
    
    CC: James Bottomley <James.Bottomley@SteelEye.com>
    CC: "Gustavo A. R. Silva" <gustavo@embeddedor.com>
    CC: linux-next@vger.kernel.org
    Link: https://lore.kernel.org/r/20191111230401.12958-3-jsmart2021@gmail.com
    Reviewed-by: Ewan D. Milne <emilne@redhat.com>
    Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
    Signed-off-by: James Smart <jsmart2021@gmail.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c90b82fe7f9ac6149bf5d6e454b16af81d7e4034
Author: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
Date:   Sun Nov 10 12:49:06 2019 +0300

    fs/quota: handle overflows of sysctl fs.quota.* and report as unsigned long
    
    [ Upstream commit 6fcbcec9cfc7b3c6a2c1f1a23ebacedff7073e0a ]
    
    Quota statistics counted as 64-bit per-cpu counter. Reading sums per-cpu
    fractions as signed 64-bit int, filters negative values and then reports
    lower half as signed 32-bit int.
    
    Result may looks like:
    
    fs.quota.allocated_dquots = 22327
    fs.quota.cache_hits = -489852115
    fs.quota.drops = -487288718
    fs.quota.free_dquots = 22083
    fs.quota.lookups = -486883485
    fs.quota.reads = 22327
    fs.quota.syncs = 335064
    fs.quota.writes = 3088689
    
    Values bigger than 2^31-1 reported as negative.
    
    All counters except "allocated_dquots" and "free_dquots" are monotonic,
    thus they should be reported as is without filtering negative values.
    
    Kernel doesn't have generic helper for 64-bit sysctl yet,
    let's use at least unsigned long.
    
    Link: https://lore.kernel.org/r/157337934693.2078.9842146413181153727.stgit@buzz
    Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 54c4eeaacbaf491e4e196d9307748c1eac40dccd
Author: Paul Cercueil <paul@crapouillou.net>
Date:   Wed Oct 2 19:25:22 2019 +0800

    irqchip: ingenic: Error out if IRQ domain creation failed
    
    [ Upstream commit 52ecc87642f273a599c9913b29fd179c13de457b ]
    
    If we cannot create the IRQ domain, the driver should fail to probe
    instead of succeeding with just a warning message.
    
    Signed-off-by: Paul Cercueil <paul@crapouillou.net>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/1570015525-27018-3-git-send-email-zhouyanjie@zoho.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 40d9eed1f44a53d86d4811c9ceacd898e9e8838f
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Thu Oct 24 13:14:13 2019 -0700

    irqchip/irq-bcm7038-l1: Enable parent IRQ if necessary
    
    [ Upstream commit 27eebb60357ed5aa6659442f92907c0f7368d6ae ]
    
    If the 'brcm,irq-can-wake' property is specified, make sure we also
    enable the corresponding parent interrupt we are attached to.
    
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20191024201415.23454-4-f.fainelli@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1fecec01675780f80f5fe3496cd9ab956caf51ec
Author: Jeffrey Hugo <jeffrey.l.hugo@gmail.com>
Date:   Thu Oct 31 11:57:15 2019 -0700

    clk: qcom: Allow constant ratio freq tables for rcg
    
    [ Upstream commit efd164b5520afd6fb2883b68e0d408a7de29c491 ]
    
    Some RCGs (the gfx_3d_src_clk in msm8998 for example) are basically just
    some constant ratio from the input across the entire frequency range.  It
    would be great if we could specify the frequency table as a single entry
    constant ratio instead of a long list, ie:
    
            { .src = P_GPUPLL0_OUT_EVEN, .pre_div = 3 },
            { }
    
    So, lets support that.
    
    We need to fix a corner case in qcom_find_freq() where if the freq table
    is non-null, but has no frequencies, we end up returning an "entry" before
    the table array, which is bad.  Then, we need ignore the freq from the
    table, and instead base everything on the requested freq.
    
    Suggested-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Jeffrey Hugo <jeffrey.l.hugo@gmail.com>
    Link: https://lkml.kernel.org/r/20191031185715.15504-1-jeffrey.l.hugo@gmail.com
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4ff52ab7c72cacbcc4dcebd0cd04d293c709b729
Author: Chao Yu <chao@kernel.org>
Date:   Thu Nov 7 14:12:05 2019 +0800

    f2fs: fix to update dir's i_pino during cross_rename
    
    [ Upstream commit 2a60637f06ac94869b2e630eaf837110d39bf291 ]
    
    As Eric reported:
    
    RENAME_EXCHANGE support was just added to fsstress in xfstests:
    
            commit 65dfd40a97b6bbbd2a22538977bab355c5bc0f06
            Author: kaixuxia <xiakaixu1987@gmail.com>
            Date:   Thu Oct 31 14:41:48 2019 +0800
    
                fsstress: add EXCHANGE renameat2 support
    
    This is causing xfstest generic/579 to fail due to fsck.f2fs reporting errors.
    I'm not sure what the problem is, but it still happens even with all the
    fs-verity stuff in the test commented out, so that the test just runs fsstress.
    
    generic/579 23s ...     [10:02:25]
    [    7.745370] run fstests generic/579 at 2019-11-04 10:02:25
    _check_generic_filesystem: filesystem on /dev/vdc is inconsistent
    (see /results/f2fs/results-default/generic/579.full for details)
     [10:02:47]
    Ran: generic/579
    Failures: generic/579
    Failed 1 of 1 tests
    Xunit report: /results/f2fs/results-default/result.xml
    
    Here's the contents of 579.full:
    
    _check_generic_filesystem: filesystem on /dev/vdc is inconsistent
    *** fsck.f2fs output ***
    [ASSERT] (__chk_dots_dentries:1378)  --> Bad inode number[0x24] for '..', parent parent ino is [0xd10]
    
    The root cause is that we forgot to update directory's i_pino during
    cross_rename, fix it.
    
    Fixes: 32f9bc25cbda0 ("f2fs: support ->rename2()")
    Signed-off-by: Chao Yu <yuchao0@huawei.com>
    Tested-by: Eric Biggers <ebiggers@kernel.org>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 58a80d83db75e0e940c3c97b1f295af212b4b10c
Author: James Smart <jsmart2021@gmail.com>
Date:   Mon Nov 4 16:56:58 2019 -0800

    scsi: lpfc: Fix duplicate unreg_rpi error in port offline flow
    
    [ Upstream commit 7cfd5639d99bec0d27af089d0c8c114330e43a72 ]
    
    If the driver receives a login that is later then LOGO'd by the remote port
    (aka ndlp), the driver, upon the completion of the LOGO ACC transmission,
    will logout the node and unregister the rpi that is being used for the
    node.  As part of the unreg, the node's rpi value is replaced by the
    LPFC_RPI_ALLOC_ERROR value.  If the port is subsequently offlined, the
    offline walks the nodes and ensures they are logged out, which possibly
    entails unreg'ing their rpi values.  This path does not validate the node's
    rpi value, thus doesn't detect that it has been unreg'd already.  The
    replaced rpi value is then used when accessing the rpi bitmask array which
    tracks active rpi values.  As the LPFC_RPI_ALLOC_ERROR value is not a valid
    index for the bitmask, it may fault the system.
    
    Revise the rpi release code to detect when the rpi value is the replaced
    RPI_ALLOC_ERROR value and ignore further release steps.
    
    Link: https://lore.kernel.org/r/20191105005708.7399-2-jsmart2021@gmail.com
    Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
    Signed-off-by: James Smart <jsmart2021@gmail.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8bded9c5d3285ce32fe700222d22c099a51526e7
Author: Bart Van Assche <bvanassche@acm.org>
Date:   Tue Nov 5 13:55:53 2019 -0800

    scsi: tracing: Fix handling of TRANSFER LENGTH == 0 for READ(6) and WRITE(6)
    
    [ Upstream commit f6b8540f40201bff91062dd64db8e29e4ddaaa9d ]
    
    According to SBC-2 a TRANSFER LENGTH field of zero means that 256 logical
    blocks must be transferred. Make the SCSI tracing code follow SBC-2.
    
    Fixes: bf8162354233 ("[SCSI] add scsi trace core functions and put trace points")
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Hannes Reinecke <hare@suse.com>
    Cc: Douglas Gilbert <dgilbert@interlog.com>
    Link: https://lore.kernel.org/r/20191105215553.185018-1-bvanassche@acm.org
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 18250c784845c377699fea22492e2bd19fc4b7eb
Author: Jan Kara <jack@suse.cz>
Date:   Tue Nov 5 17:44:19 2019 +0100

    jbd2: Fix statistics for the number of logged blocks
    
    [ Upstream commit 015c6033068208d6227612c878877919f3fcf6b6 ]
    
    jbd2 statistics counting number of blocks logged in a transaction was
    wrong. It didn't count the commit block and more importantly it didn't
    count revoke descriptor blocks. Make sure these get properly counted.
    
    Reviewed-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Link: https://lore.kernel.org/r/20191105164437.32602-13-jack@suse.cz
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 47acc10500224436b3ea4c02b13550130ed4af33
Author: Matthew Bobrowski <mbobrowski@mbobrowski.org>
Date:   Tue Nov 5 22:59:22 2019 +1100

    ext4: update direct I/O read lock pattern for IOCB_NOWAIT
    
    [ Upstream commit 548feebec7e93e58b647dba70b3303dcb569c914 ]
    
    This patch updates the lock pattern in ext4_direct_IO_read() to not
    block on inode lock in cases of IOCB_NOWAIT direct I/O reads. The
    locking condition implemented here is similar to that of 942491c9e6d6
    ("xfs: fix AIM7 regression").
    
    Fixes: 16c54688592c ("ext4: Allow parallel DIO reads")
    Signed-off-by: Matthew Bobrowski <mbobrowski@mbobrowski.org>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Reviewed-by: Ritesh Harjani <riteshh@linux.ibm.com>
    Link: https://lore.kernel.org/r/c5d5e759f91747359fbd2c6f9a36240cf75ad79f.1572949325.git.mbobrowski@mbobrowski.org
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bcac8a188673a811eeb0dbbc5cce22340e4507ce
Author: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Date:   Tue Oct 1 14:16:56 2019 +0530

    powerpc/book3s64/hash: Add cond_resched to avoid soft lockup warning
    
    [ Upstream commit 16f6b67cf03cb43db7104acb2ca877bdc2606c92 ]
    
    With large memory (8TB and more) hotplug, we can get soft lockup
    warnings as below. These were caused by a long loop without any
    explicit cond_resched which is a problem for !PREEMPT kernels.
    
    Avoid this using cond_resched() while inserting hash page table
    entries. We already do similar cond_resched() in __add_pages(), see
    commit f64ac5e6e306 ("mm, memory_hotplug: add scheduling point to
    __add_pages").
    
      rcu:     3-....: (24002 ticks this GP) idle=13e/1/0x4000000000000002 softirq=722/722 fqs=12001
       (t=24003 jiffies g=4285 q=2002)
      NMI backtrace for cpu 3
      CPU: 3 PID: 3870 Comm: ndctl Not tainted 5.3.0-197.18-default+ #2
      Call Trace:
        dump_stack+0xb0/0xf4 (unreliable)
        nmi_cpu_backtrace+0x124/0x130
        nmi_trigger_cpumask_backtrace+0x1ac/0x1f0
        arch_trigger_cpumask_backtrace+0x28/0x3c
        rcu_dump_cpu_stacks+0xf8/0x154
        rcu_sched_clock_irq+0x878/0xb40
        update_process_times+0x48/0x90
        tick_sched_handle.isra.16+0x4c/0x80
        tick_sched_timer+0x68/0xe0
        __hrtimer_run_queues+0x180/0x430
        hrtimer_interrupt+0x110/0x300
        timer_interrupt+0x108/0x2f0
        decrementer_common+0x114/0x120
      --- interrupt: 901 at arch_add_memory+0xc0/0x130
          LR = arch_add_memory+0x74/0x130
        memremap_pages+0x494/0x650
        devm_memremap_pages+0x3c/0xa0
        pmem_attach_disk+0x188/0x750
        nvdimm_bus_probe+0xac/0x2c0
        really_probe+0x148/0x570
        driver_probe_device+0x19c/0x1d0
        device_driver_attach+0xcc/0x100
        bind_store+0x134/0x1c0
        drv_attr_store+0x44/0x60
        sysfs_kf_write+0x64/0x90
        kernfs_fop_write+0x1a0/0x270
        __vfs_write+0x3c/0x70
        vfs_write+0xd0/0x260
        ksys_write+0xdc/0x130
        system_call+0x5c/0x68
    
    Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20191001084656.31277-1-aneesh.kumar@linux.ibm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a9b68a316bed2ff6c729d423c97bfefa3e046cdf
Author: Anthony Steinhauser <asteinhauser@google.com>
Date:   Tue Oct 29 12:07:59 2019 -0700

    powerpc/security/book3s64: Report L1TF status in sysfs
    
    [ Upstream commit 8e6b6da91ac9b9ec5a925b6cb13f287a54bd547d ]
    
    Some PowerPC CPUs are vulnerable to L1TF to the same extent as to
    Meltdown. It is also mitigated by flushing the L1D on privilege
    transition.
    
    Currently the sysfs gives a false negative on L1TF on CPUs that I
    verified to be vulnerable, a Power9 Talos II Boston 004e 1202, PowerNV
    T2P9D01.
    
    Signed-off-by: Anthony Steinhauser <asteinhauser@google.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    [mpe: Just have cpu_show_l1tf() call cpu_show_meltdown() directly]
    Link: https://lore.kernel.org/r/20191029190759.84821-1-asteinhauser@google.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6017fdd186e7d11a8990ae3827c69efee4185848
Author: Chuhong Yuan <hslester96@gmail.com>
Date:   Wed Oct 16 20:43:30 2019 +0800

    clocksource/drivers/asm9260: Add a check for of_clk_get
    
    [ Upstream commit 6e001f6a4cc73cd06fc7b8c633bc4906c33dd8ad ]
    
    asm9260_timer_init misses a check for of_clk_get.
    Add a check for it and print errors like other clocksource drivers.
    
    Signed-off-by: Chuhong Yuan <hslester96@gmail.com>
    Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
    Link: https://lore.kernel.org/r/20191016124330.22211-1-hslester96@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5b81bbad05fd95d3e59ffd993198154dbe7aa1c1
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Oct 28 14:56:46 2019 -0700

    dma-debug: add a schedule point in debug_dma_dump_mappings()
    
    [ Upstream commit 9ff6aa027dbb98755f0265695354f2dd07c0d1ce ]
    
    debug_dma_dump_mappings() can take a lot of cpu cycles :
    
    lpk43:/# time wc -l /sys/kernel/debug/dma-api/dump
    163435 /sys/kernel/debug/dma-api/dump
    
    real    0m0.463s
    user    0m0.003s
    sys     0m0.459s
    
    Let's add a cond_resched() to avoid holding cpu for too long.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Corentin Labbe <clabbe@baylibre.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Marek Szyprowski <m.szyprowski@samsung.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 186e23c66a17fcb4b900c6496122a2ca67fa2b5d
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Thu Oct 24 11:47:30 2019 +1100

    powerpc/tools: Don't quote $objdump in scripts
    
    [ Upstream commit e44ff9ea8f4c8a90c82f7b85bd4f5e497c841960 ]
    
    Some of our scripts are passed $objdump and then call it as
    "$objdump". This doesn't work if it contains spaces because we're
    using ccache, for example you get errors such as:
    
      ./arch/powerpc/tools/relocs_check.sh: line 48: ccache ppc64le-objdump: No such file or directory
      ./arch/powerpc/tools/unrel_branch_check.sh: line 26: ccache ppc64le-objdump: No such file or directory
    
    Fix it by not quoting the string when we expand it, allowing the shell
    to do the right thing for us.
    
    Fixes: a71aa05e1416 ("powerpc: Convert relocs_check to a shell script using grep")
    Fixes: 4ea80652dc75 ("powerpc/64s: Tool to flag direct branches from unrelocated interrupt vectors")
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20191024004730.32135-1-mpe@ellerman.id.au
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 68672ccb81448ceaf91912fc6c69216823d6abb1
Author: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Date:   Thu Oct 24 15:05:41 2019 +0530

    powerpc/pseries: Don't fail hash page table insert for bolted mapping
    
    [ Upstream commit 75838a3290cd4ebbd1f567f310ba04b6ef017ce4 ]
    
    If the hypervisor returned H_PTEG_FULL for H_ENTER hcall, retry a hash page table
    insert by removing a random entry from the group.
    
    After some runtime, it is very well possible to find all the 8 hash page table
    entry slot in the hpte group used for mapping. Don't fail a bolted entry insert
    in that case. With Storage class memory a user can find this error easily since
    a namespace enable/disable is equivalent to memory add/remove.
    
    This results in failures as reported below:
    
    $ ndctl create-namespace -r region1 -t pmem -m devdax -a 65536 -s 100M
    libndctl: ndctl_dax_enable: dax1.3: failed to enable
      Error: namespace1.2: failed to enable
    
    failed to create namespace: No such device or address
    
    In kernel log we find the details as below:
    
    Unable to create mapping for hot added memory 0xc000042006000000..0xc00004200d000000: -1
    dax_pmem: probe of dax1.3 failed with error -14
    
    This indicates that we failed to create a bolted hash table entry for direct-map
    address backing the namespace.
    
    We also observe failures such that not all namespaces will be enabled with
    ndctl enable-namespace all command.
    
    Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20191024093542.29777-2-aneesh.kumar@linux.ibm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ee0c6265500faf6937fcd3bfc1f85a439e7a3994
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Sun Oct 13 21:23:51 2019 +1100

    powerpc/pseries: Mark accumulate_stolen_time() as notrace
    
    [ Upstream commit eb8e20f89093b64f48975c74ccb114e6775cee22 ]
    
    accumulate_stolen_time() is called prior to interrupt state being
    reconciled, which can trip the warning in arch_local_irq_restore():
    
      WARNING: CPU: 5 PID: 1017 at arch/powerpc/kernel/irq.c:258 .arch_local_irq_restore+0x9c/0x130
      ...
      NIP .arch_local_irq_restore+0x9c/0x130
      LR  .rb_start_commit+0x38/0x80
      Call Trace:
        .ring_buffer_lock_reserve+0xe4/0x620
        .trace_function+0x44/0x210
        .function_trace_call+0x148/0x170
        .ftrace_ops_no_ops+0x180/0x1d0
        ftrace_call+0x4/0x8
        .accumulate_stolen_time+0x1c/0xb0
        decrementer_common+0x124/0x160
    
    For now just mark it as notrace. We may change the ordering to call it
    after interrupt state has been reconciled, but that is a larger
    change.
    
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20191024055932.27940-1-mpe@ellerman.id.au
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b0183bc00dac582b31260eaeca6819411db979a3
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Sat Oct 19 11:59:13 2019 +0300

    scsi: csiostor: Don't enable IRQs too early
    
    [ Upstream commit d6c9b31ac3064fbedf8961f120a4c117daa59932 ]
    
    These are called with IRQs disabled from csio_mgmt_tmo_handler() so we
    can't call spin_unlock_irq() or it will enable IRQs prematurely.
    
    Fixes: a3667aaed569 ("[SCSI] csiostor: Chelsio FCoE offload driver")
    Link: https://lore.kernel.org/r/20191019085913.GA14245@mwanda
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 781f73d867961d81dbb2519dfe6f0fbdc7d20b59
Author: James Smart <jsmart2021@gmail.com>
Date:   Fri Oct 18 14:18:20 2019 -0700

    scsi: lpfc: Fix SLI3 hba in loop mode not discovering devices
    
    [ Upstream commit feff8b3d84d3d9570f893b4d83e5eab6693d6a52 ]
    
    When operating in private loop mode, PLOGI exchanges are racing and the
    driver tries to abort it's PLOGI. But the PLOGI abort ends up terminating
    the login with the other end causing the other end to abort its PLOGI as
    well. Discovery never fully completes.
    
    Fix by disabling the PLOGI abort when private loop and letting the state
    machine play out.
    
    Link: https://lore.kernel.org/r/20191018211832.7917-5-jsmart2021@gmail.com
    Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
    Signed-off-by: James Smart <jsmart2021@gmail.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 05ee8b43f8e90561dc96ca5caa3219817f77b5d6
Author: David Disseldorp <ddiss@suse.de>
Date:   Thu Sep 12 11:55:45 2019 +0200

    scsi: target: compare full CHAP_A Algorithm strings
    
    [ Upstream commit 9cef2a7955f2754257a7cddedec16edae7b587d0 ]
    
    RFC 2307 states:
    
      For CHAP [RFC1994], in the first step, the initiator MUST send:
    
          CHAP_A=<A1,A2...>
    
       Where A1,A2... are proposed algorithms, in order of preference.
    ...
       For the Algorithm, as stated in [RFC1994], one value is required to
       be implemented:
    
           5     (CHAP with MD5)
    
    LIO currently checks for this value by only comparing a single byte in
    the tokenized Algorithm string, which means that any value starting with
    a '5' (e.g. "55") is interpreted as "CHAP with MD5". Fix this by
    comparing the entire tokenized string.
    
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Reviewed-by: Mike Christie <mchristi@redhat.com>
    Signed-off-by: David Disseldorp <ddiss@suse.de>
    Link: https://lore.kernel.org/r/20190912095547.22427-2-ddiss@suse.de
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 788e280d798b09e2bfbe70fff3103d240dfe4982
Author: Thierry Reding <treding@nvidia.com>
Date:   Wed Oct 16 13:50:26 2019 +0200

    iommu/tegra-smmu: Fix page tables in > 4 GiB memory
    
    [ Upstream commit 96d3ab802e4930a29a33934373157d6dff1b2c7e ]
    
    Page tables that reside in physical memory beyond the 4 GiB boundary are
    currently not working properly. The reason is that when the physical
    address for page directory entries is read, it gets truncated at 32 bits
    and can cause crashes when passing that address to the DMA API.
    
    Fix this by first casting the PDE value to a dma_addr_t and then using
    the page frame number mask for the SMMU instance to mask out the invalid
    bits, which are typically used for mapping attributes, etc.
    
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4ad39f44123afdaa94e1af8c2cc5c70013f863f0
Author: Evan Green <evgreen@chromium.org>
Date:   Wed Oct 2 14:00:21 2019 -0700

    Input: atmel_mxt_ts - disable IRQ across suspend
    
    [ Upstream commit 463fa44eec2fef50d111ed0199cf593235065c04 ]
    
    Across suspend and resume, we are seeing error messages like the following:
    
    atmel_mxt_ts i2c-PRP0001:00: __mxt_read_reg: i2c transfer failed (-121)
    atmel_mxt_ts i2c-PRP0001:00: Failed to read T44 and T5 (-121)
    
    This occurs because the driver leaves its IRQ enabled. Upon resume, there
    is an IRQ pending, but the interrupt is serviced before both the driver and
    the underlying I2C bus have been resumed. This causes EREMOTEIO errors.
    
    Disable the IRQ in suspend, and re-enable it on resume. If there are cases
    where the driver enters suspend with interrupts disabled, that's a bug we
    should fix separately.
    
    Signed-off-by: Evan Green <evgreen@chromium.org>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c6ac111b46aa2b90e0f56af85fcb499d86f39177
Author: James Smart <jsmart2021@gmail.com>
Date:   Sat Sep 21 20:58:53 2019 -0700

    scsi: lpfc: Fix locking on mailbox command completion
    
    [ Upstream commit 07b8582430370097238b589f4e24da7613ca6dd3 ]
    
    Symptoms were seen of the driver not having valid data for mailbox
    commands. After debugging, the following sequence was found:
    
    The driver maintains a port-wide pointer of the mailbox command that is
    currently in execution. Once finished, the port-wide pointer is cleared
    (done in lpfc_sli4_mq_release()). The next mailbox command issued will set
    the next pointer and so on.
    
    The mailbox response data is only copied if there is a valid port-wide
    pointer.
    
    In the failing case, it was seen that a new mailbox command was being
    attempted in parallel with the completion.  The parallel path was seeing
    the mailbox no long in use (flag check under lock) and thus set the port
    pointer.  The completion path had cleared the active flag under lock, but
    had not touched the port pointer.  The port pointer is cleared after the
    lock is released. In this case, the completion path cleared the just-set
    value by the parallel path.
    
    Fix by making the calls that clear mbox state/port pointer while under
    lock.  Also slightly cleaned up the error path.
    
    Link: https://lore.kernel.org/r/20190922035906.10977-8-jsmart2021@gmail.com
    Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
    Signed-off-by: James Smart <jsmart2021@gmail.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fd9e15382953d6c18aaef4b8ab7f366a27980618
Author: Sreekanth Reddy <sreekanth.reddy@broadcom.com>
Date:   Fri Sep 13 09:04:40 2019 -0400

    scsi: mpt3sas: Fix clear pending bit in ioctl status
    
    [ Upstream commit 782b281883caf70289ba6a186af29441a117d23e ]
    
    When user issues diag register command from application with required size,
    and if driver unable to allocate the memory, then it will fail the register
    command. While failing the register command, driver is not currently
    clearing MPT3_CMD_PENDING bit in ctl_cmds.status variable which was set
    before trying to allocate the memory. As this bit is set, subsequent
    register command will be failed with BUSY status even when user wants to
    register the trace buffer will less memory.
    
    Clear MPT3_CMD_PENDING bit in ctl_cmds.status before returning the diag
    register command with no memory status.
    
    Link: https://lore.kernel.org/r/1568379890-18347-4-git-send-email-sreekanth.reddy@broadcom.com
    Signed-off-by: Sreekanth Reddy <sreekanth.reddy@broadcom.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 77880d107ed1c67b065e1609a5233422939fcd72
Author: James Smart <jsmart2021@gmail.com>
Date:   Sat Sep 21 20:58:55 2019 -0700

    scsi: lpfc: Fix discovery failures when target device connectivity bounces
    
    [ Upstream commit 3f97aed6117c7677eb16756c4ec8b86000fd5822 ]
    
    An issue was seen discovering all SCSI Luns when a target device undergoes
    link bounce.
    
    The driver currently does not qualify the FC4 support on the target.
    Therefore it will send a SCSI PRLI and an NVMe PRLI. The expectation is
    that the target will reject the PRLI if it is not supported. If a PRLI
    times out, the driver will retry. The driver will not proceed with the
    device until both SCSI and NVMe PRLIs are resolved.  In the failure case,
    the device is FCP only and does not respond to the NVMe PRLI, thus
    initiating the wait/retry loop in the driver.  During that time, a RSCN is
    received (device bounced) causing the driver to issue a GID_FT.  The GID_FT
    response comes back before the PRLI mess is resolved and it prematurely
    cancels the PRLI retry logic and leaves the device in a STE_PRLI_ISSUE
    state. Discovery with the target never completes or resets.
    
    Fix by resetting the node state back to STE_NPR_NODE when GID_FT completes,
    thereby restarting the discovery process for the node.
    
    Link: https://lore.kernel.org/r/20190922035906.10977-10-jsmart2021@gmail.com
    Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
    Signed-off-by: James Smart <jsmart2021@gmail.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>