commit 7b90d57b09fa3513a31e6f05f07a5f1f19438e15
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Aug 4 12:27:40 2021 +0200

    Linux 5.4.138
    
    Link: https://lore.kernel.org/r/20210802134335.408294521@linuxfoundation.org
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7eef18c0479ba5d9f54fba30cd77c233ebca3eb1
Author: Oleksij Rempel <linux@rempel-privat.de>
Date:   Wed Jul 14 13:16:02 2021 +0200

    can: j1939: j1939_session_deactivate(): clarify lifetime of session object
    
    commit 0c71437dd50dd687c15d8ca80b3b68f10bb21d63 upstream.
    
    The j1939_session_deactivate() is decrementing the session ref-count and
    potentially can free() the session. This would cause use-after-free
    situation.
    
    However, the code calling j1939_session_deactivate() does always hold
    another reference to the session, so that it would not be free()ed in
    this code path.
    
    This patch adds a comment to make this clear and a WARN_ON, to ensure
    that future changes will not violate this requirement. Further this
    patch avoids dereferencing the session pointer as a precaution to avoid
    use-after-free if the session is actually free()ed.
    
    Fixes: 9d71dd0c7009 ("can: add support of SAE J1939 protocol")
    Link: https://lore.kernel.org/r/20210714111602.24021-1-o.rempel@pengutronix.de
    Reported-by: Xiaochen Zou <xzou017@ucr.edu>
    Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 18b536de3b976a4602616864a7ac5a1241e2e5e5
Author: Lukasz Cieplicki <lukaszx.cieplicki@intel.com>
Date:   Mon May 31 16:55:49 2021 +0000

    i40e: Add additional info to PHY type error
    
    commit dc614c46178b0b89bde86ac54fc687a28580d2b7 upstream.
    
    In case of PHY type error occurs, the message was too generic.
    Add additional info to PHY type error indicating that it can be
    wrong cable connected.
    
    Fixes: 124ed15bf126 ("i40e: Add dual speed module support")
    Signed-off-by: Lukasz Cieplicki <lukaszx.cieplicki@intel.com>
    Signed-off-by: Michal Maloszewski <michal.maloszewski@intel.com>
    Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d21eb931109ab4a1a77f5396a916fdf89db7dcca
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Fri Jul 30 18:26:22 2021 -0300

    Revert "perf map: Fix dso->nsinfo refcounting"
    
    commit 9bac1bd6e6d36459087a728a968e79e37ebcea1a upstream.
    
    This makes 'perf top' abort in some cases, and the right fix will
    involve surgery that is too much to do at this stage, so revert for now
    and fix it in the next merge window.
    
    This reverts commit 2d6b74baa7147251c30a46c4996e8cc224aa2dc5.
    
    Cc: Riccardo Mancini <rickyman7@gmail.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Krister Johansen <kjlx@templeofstupid.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 16447b2f5c66b160b731ba3e521f846d03c030d0
Author: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
Date:   Thu Jul 29 11:34:49 2021 +0530

    powerpc/pseries: Fix regression while building external modules
    
    commit 333cf507465fbebb3727f5b53e77538467df312a upstream.
    
    With commit c9f3401313a5 ("powerpc: Always enable queued spinlocks for
    64s, disable for others") CONFIG_PPC_QUEUED_SPINLOCKS is always
    enabled on ppc64le, external modules that use spinlock APIs are
    failing.
    
      ERROR: modpost: GPL-incompatible module XXX.ko uses GPL-only symbol 'shared_processor'
    
    Before the above commit, modules were able to build without any
    issues. Also this problem is not seen on other architectures. This
    problem can be workaround if CONFIG_UNINLINE_SPIN_UNLOCK is enabled in
    the config. However CONFIG_UNINLINE_SPIN_UNLOCK is not enabled by
    default and only enabled in certain conditions like
    CONFIG_DEBUG_SPINLOCKS is set in the kernel config.
    
      #include <linux/module.h>
      spinlock_t spLock;
    
      static int __init spinlock_test_init(void)
      {
              spin_lock_init(&spLock);
              spin_lock(&spLock);
              spin_unlock(&spLock);
              return 0;
      }
    
      static void __exit spinlock_test_exit(void)
      {
            printk("spinlock_test unloaded\n");
      }
      module_init(spinlock_test_init);
      module_exit(spinlock_test_exit);
    
      MODULE_DESCRIPTION ("spinlock_test");
      MODULE_LICENSE ("non-GPL");
      MODULE_AUTHOR ("Srikar Dronamraju");
    
    Given that spin locks are one of the basic facilities for module code,
    this effectively makes it impossible to build/load almost any non GPL
    modules on ppc64le.
    
    This was first reported at https://github.com/openzfs/zfs/issues/11172
    
    Currently shared_processor is exported as GPL only symbol.
    Fix this for parity with other architectures by exposing
    shared_processor to non-GPL modules too.
    
    Fixes: 14c73bd344da ("powerpc/vcpu: Assume dedicated processors as non-preempt")
    Cc: stable@vger.kernel.org # v5.5+
    Reported-by: marc.c.dionne@gmail.com
    Signed-off-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20210729060449.292780-1-srikar@linux.vnet.ibm.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 265883d1d839656f27aaec5604607b62d63cf27d
Author: Shmuel Hazan <sh@tkos.co.il>
Date:   Tue Jun 23 09:03:35 2020 +0300

    PCI: mvebu: Setup BAR0 in order to fix MSI
    
    commit 216f8e95aacc8e9690d8e2286c472671b65f4128 upstream.
    
    According to the Armada XP datasheet, section 10.2.6: "in order for
    the device to do a write to the MSI doorbell address, it needs to write
    to a register in the internal registers space".
    
    As a result of the requirement above, without this patch, MSI won't
    function and therefore some devices won't operate properly without
    pci=nomsi.
    
    This requirement was not present at the time of writing this driver
    since the vendor u-boot always initializes all PCIe controllers
    (incl. BAR0 initialization) and for some time, the vendor u-boot was
    the only available bootloader for this driver's SoCs (e.g. A38x,A37x,
    etc).
    
    Tested on an Armada 385 board on mainline u-boot (2020.4), without
    u-boot PCI initialization and the following PCIe devices:
            - Wilocity Wil6200 rev 2 (wil6210)
            - Qualcomm Atheros QCA6174 (ath10k_pci)
    
    Both failed to get a response from the device after loading the
    firmware and seem to operate properly with this patch.
    
    Link: https://lore.kernel.org/r/20200623060334.108444-1-sh@tkos.co.il
    Signed-off-by: Shmuel Hazan <sh@tkos.co.il>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Acked-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
    Cc: Baruch Siach <baruch@tkos.co.il>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 21734a31c9a0ce33070bd50d8c59cffc335e8435
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Thu Jul 29 17:12:46 2021 +0300

    can: hi311x: fix a signedness bug in hi3110_cmd()
    
    [ Upstream commit f6b3c7848e66e9046c8a79a5b88fd03461cc252b ]
    
    The hi3110_cmd() is supposed to return zero on success and negative
    error codes on failure, but it was accidentally declared as a u8 when
    it needs to be an int type.
    
    Fixes: 57e83fb9b746 ("can: hi311x: Add Holt HI-311x CAN driver")
    Link: https://lore.kernel.org/r/20210729141246.GA1267@kili
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f4fa45b0f91e48ac42bb3aaf090d1c4f41d62648
Author: Wang Hai <wanghai38@huawei.com>
Date:   Wed Jul 28 20:11:07 2021 +0800

    sis900: Fix missing pci_disable_device() in probe and remove
    
    [ Upstream commit 89fb62fde3b226f99b7015280cf132e2a7438edf ]
    
    Replace pci_enable_device() with pcim_enable_device(),
    pci_disable_device() and pci_release_regions() will be
    called in release automatically.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Wang Hai <wanghai38@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dff00ce448915eb866c73816aa3942f9efd56ec5
Author: Wang Hai <wanghai38@huawei.com>
Date:   Wed Jul 28 15:43:13 2021 +0800

    tulip: windbond-840: Fix missing pci_disable_device() in probe and remove
    
    [ Upstream commit 76a16be07b209a3f507c72abe823bd3af1c8661a ]
    
    Replace pci_enable_device() with pcim_enable_device(),
    pci_disable_device() and pci_release_regions() will be
    called in release automatically.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Wang Hai <wanghai38@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e0310bbeaaa283e14b39c9d669679be19c4ce94c
Author: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Date:   Tue Jul 27 23:40:54 2021 -0300

    sctp: fix return value check in __sctp_rcv_asconf_lookup
    
    [ Upstream commit 557fb5862c9272ad9b21407afe1da8acfd9b53eb ]
    
    As Ben Hutchings noticed, this check should have been inverted: the call
    returns true in case of success.
    
    Reported-by: Ben Hutchings <ben@decadent.org.uk>
    Fixes: 0c5dc070ff3d ("sctp: validate from_addr_param return")
    Signed-off-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Reviewed-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 408614108abd50820fe961430529c3dc7ebe4fd1
Author: Dima Chumak <dchumak@nvidia.com>
Date:   Mon Apr 26 15:16:26 2021 +0300

    net/mlx5e: Fix nullptr in mlx5e_hairpin_get_mdev()
    
    [ Upstream commit b1c2f6312c5005c928a72e668bf305a589d828d4 ]
    
    The result of __dev_get_by_index() is not checked for NULL and then gets
    dereferenced immediately.
    
    Also, __dev_get_by_index() must be called while holding either RTNL lock
    or @dev_base_lock, which isn't satisfied by mlx5e_hairpin_get_mdev() or
    its callers. This makes the underlying hlist_for_each_entry() loop not
    safe, and can have adverse effects in itself.
    
    Fix by using dev_get_by_index() and handling nullptr return value when
    ifindex device is not found. Update mlx5e_hairpin_get_mdev() callers to
    check for possible PTR_ERR() result.
    
    Fixes: 77ab67b7f0f9 ("net/mlx5e: Basic setup of hairpin object")
    Addresses-Coverity: ("Dereference null return value")
    Signed-off-by: Dima Chumak <dchumak@nvidia.com>
    Reviewed-by: Vlad Buslov <vladbu@nvidia.com>
    Reviewed-by: Roi Dayan <roid@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ac49832306168cb25a54286be4d4bea1d9a5c2da
Author: Maor Gottlieb <maorg@nvidia.com>
Date:   Mon Jul 26 09:20:14 2021 +0300

    net/mlx5: Fix flow table chaining
    
    [ Upstream commit 8b54874ef1617185048029a3083d510569e93751 ]
    
    Fix a bug when flow table is created in priority that already
    has other flow tables as shown in the below diagram.
    If the new flow table (FT-B) has the lowest level in the priority,
    we need to connect the flow tables from the previous priority (p0)
    to this new table. In addition when this flow table is destroyed
    (FT-B), we need to connect the flow tables from the previous
    priority (p0) to the next level flow table (FT-C) in the same
    priority of the destroyed table (if exists).
    
                           ---------
                           |root_ns|
                           ---------
                                |
                --------------------------------
                |               |              |
           ----------      ----------      ---------
           |p(prio)-x|     |   p-y  |      |   p-n |
           ----------      ----------      ---------
                |               |
         ----------------  ------------------
         |ns(e.g bypass)|  |ns(e.g. kernel) |
         ----------------  ------------------
                |            |           |
            -------        ------       ----
            |  p0 |        | p1 |       |p2|
            -------        ------       ----
               |             |    \
            --------       ------- ------
            | FT-A |       |FT-B | |FT-C|
            --------       ------- ------
    
    Fixes: f90edfd279f3 ("net/mlx5_core: Connect flow tables")
    Signed-off-by: Maor Gottlieb <maorg@nvidia.com>
    Reviewed-by: Mark Bloch <mbloch@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 527feae56fe6063180dfbe96a77325766201730d
Author: Pavel Skripkin <paskripkin@gmail.com>
Date:   Sun Jul 25 00:11:59 2021 +0300

    net: llc: fix skb_over_panic
    
    [ Upstream commit c7c9d2102c9c098916ab9e0ab248006107d00d6c ]
    
    Syzbot reported skb_over_panic() in llc_pdu_init_as_xid_cmd(). The
    problem was in wrong LCC header manipulations.
    
    Syzbot's reproducer tries to send XID packet. llc_ui_sendmsg() is
    doing following steps:
    
            1. skb allocation with size = len + header size
                    len is passed from userpace and header size
                    is 3 since addr->sllc_xid is set.
    
            2. skb_reserve() for header_len = 3
            3. filling all other space with memcpy_from_msg()
    
    Ok, at this moment we have fully loaded skb, only headers needs to be
    filled.
    
    Then code comes to llc_sap_action_send_xid_c(). This function pushes 3
    bytes for LLC PDU header and initializes it. Then comes
    llc_pdu_init_as_xid_cmd(). It initalizes next 3 bytes *AFTER* LLC PDU
    header and call skb_push(skb, 3). This looks wrong for 2 reasons:
    
            1. Bytes rigth after LLC header are user data, so this function
               was overwriting payload.
    
            2. skb_push(skb, 3) call can cause skb_over_panic() since
               all free space was filled in llc_ui_sendmsg(). (This can
               happen is user passed 686 len: 686 + 14 (eth header) + 3 (LLC
               header) = 703. SKB_DATA_ALIGN(703) = 704)
    
    So, in this patch I added 2 new private constansts: LLC_PDU_TYPE_U_XID
    and LLC_PDU_LEN_U_XID. LLC_PDU_LEN_U_XID is used to correctly reserve
    header size to handle LLC + XID case. LLC_PDU_TYPE_U_XID is used by
    llc_pdu_header_init() function to push 6 bytes instead of 3. And finally
    I removed skb_push() call from llc_pdu_init_as_xid_cmd().
    
    This changes should not affect other parts of LLC, since after
    all steps we just transmit buffer.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-and-tested-by: syzbot+5e5a981ad7cc54c4b2b4@syzkaller.appspotmail.com
    Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ede4c93860e6bebcf0f6356bd3a24ac037e71ce9
Author: Jiapeng Chong <jiapeng.chong@linux.alibaba.com>
Date:   Fri Jul 23 18:36:09 2021 +0800

    mlx4: Fix missing error code in mlx4_load_one()
    
    [ Upstream commit 7e4960b3d66d7248b23de3251118147812b42da2 ]
    
    The error code is missing in this code scenario, add the error code
    '-EINVAL' to the return value 'err'.
    
    Eliminate the follow smatch warning:
    
    drivers/net/ethernet/mellanox/mlx4/main.c:3538 mlx4_load_one() warn:
    missing error code 'err'.
    
    Reported-by: Abaci Robot <abaci@linux.alibaba.com>
    Fixes: 7ae0e400cd93 ("net/mlx4_core: Flexible (asymmetric) allocation of EQs and MSI-X vectors for PF/VFs")
    Signed-off-by: Jiapeng Chong <jiapeng.chong@linux.alibaba.com>
    Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit acb97d4b2d0e7a4e0abf84b04ebd53aac6e8d407
Author: Gilad Naaman <gnaaman@drivenets.com>
Date:   Thu Jul 22 20:01:28 2021 +0300

    net: Set true network header for ECN decapsulation
    
    [ Upstream commit 227adfb2b1dfbc53dfc53b9dd7a93a6298ff7c56 ]
    
    In cases where the header straight after the tunnel header was
    another ethernet header (TEB), instead of the network header,
    the ECN decapsulation code would treat the ethernet header as if
    it was an IP header, resulting in mishandling and possible
    wrong drops or corruption of the IP header.
    
    In this case, ECT(1) is sent, so IP_ECN_decapsulate tries to copy it to the
    inner IPv4 header, and correct its checksum.
    
    The offset of the ECT bits in an IPv4 header corresponds to the
    lower 2 bits of the second octet of the destination MAC address
    in the ethernet header.
    The IPv4 checksum corresponds to end of the source address.
    
    In order to reproduce:
    
        $ ip netns add A
        $ ip netns add B
        $ ip -n A link add _v0 type veth peer name _v1 netns B
        $ ip -n A link set _v0 up
        $ ip -n A addr add dev _v0 10.254.3.1/24
        $ ip -n A route add default dev _v0 scope global
        $ ip -n B link set _v1 up
        $ ip -n B addr add dev _v1 10.254.1.6/24
        $ ip -n B route add default dev _v1 scope global
        $ ip -n B link add gre1 type gretap local 10.254.1.6 remote 10.254.3.1 key 0x49000000
        $ ip -n B link set gre1 up
    
        # Now send an IPv4/GRE/Eth/IPv4 frame where the outer header has ECT(1),
        # and the inner header has no ECT bits set:
    
        $ cat send_pkt.py
            #!/usr/bin/env python3
            from scapy.all import *
    
            pkt = IP(b'E\x01\x00\xa7\x00\x00\x00\x00@/`%\n\xfe\x03\x01\n\xfe\x01\x06 \x00eXI\x00'
                     b'\x00\x00\x18\xbe\x92\xa0\xee&\x18\xb0\x92\xa0l&\x08\x00E\x00\x00}\x8b\x85'
                     b'@\x00\x01\x01\xe4\xf2\x82\x82\x82\x01\x82\x82\x82\x02\x08\x00d\x11\xa6\xeb'
                     b'3\x1e\x1e\\xf3\\xf7`\x00\x00\x00\x00ZN\x00\x00\x00\x00\x00\x00\x10\x11\x12'
                     b'\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./01234'
                     b'56789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ')
    
            send(pkt)
        $ sudo ip netns exec B tcpdump -neqlllvi gre1 icmp & ; sleep 1
        $ sudo ip netns exec A python3 send_pkt.py
    
    In the original packet, the source/destinatio MAC addresses are
    dst=18:be:92:a0:ee:26 src=18:b0:92:a0:6c:26
    
    In the received packet, they are
    dst=18:bd:92:a0:ee:26 src=18:b0:92:a0:6c:27
    
    Thanks to Lahav Schlesinger <lschlesinger@drivenets.com> and Isaac Garzon <isaac@speed.io>
    for helping me pinpoint the origin.
    
    Fixes: b723748750ec ("tunnel: Propagate ECT(1) when decapsulating as recommended by RFC6040")
    Cc: David S. Miller <davem@davemloft.net>
    Cc: Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>
    Cc: David Ahern <dsahern@kernel.org>
    Cc: Jakub Kicinski <kuba@kernel.org>
    Cc: Toke Høiland-Jørgensen <toke@redhat.com>
    Signed-off-by: Gilad Naaman <gnaaman@drivenets.com>
    Acked-by: Toke Høiland-Jørgensen <toke@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 851946a681362d2e5a4df122909c85ec3eb93e97
Author: Hoang Le <hoang.h.le@dektech.com.au>
Date:   Fri Jul 23 09:25:34 2021 +0700

    tipc: fix sleeping in tipc accept routine
    
    [ Upstream commit d237a7f11719ff9320721be5818352e48071aab6 ]
    
    The release_sock() is blocking function, it would change the state
    after sleeping. In order to evaluate the stated condition outside
    the socket lock context, switch to use wait_woken() instead.
    
    Fixes: 6398e23cdb1d8 ("tipc: standardize accept routine")
    Acked-by: Jon Maloy <jmaloy@redhat.com>
    Signed-off-by: Hoang Le <hoang.h.le@dektech.com.au>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 194b71d28b26042160b6139b22c9f58d12ee60ee
Author: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
Date:   Fri Jun 18 08:49:49 2021 +0000

    i40e: Fix log TC creation failure when max num of queues is exceeded
    
    [ Upstream commit ea52faae1d17cd3048681d86d2e8641f44de484d ]
    
    Fix missing failed message if driver does not have enough queues to
    complete TC command. Without this fix no message is displayed in dmesg.
    
    Fixes: a9ce82f744dc ("i40e: Enable 'channel' mode in mqprio for TC configs")
    Signed-off-by: Grzegorz Szczurek <grzegorzx.szczurek@intel.com>
    Signed-off-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
    Tested-by: Imam Hassan Reza Biswas <imam.hassan.reza.biswas@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 834af62212c78d868a2dd3ab97f1f4100452a0ad
Author: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
Date:   Wed Jun 2 00:47:03 2021 +0000

    i40e: Fix queue-to-TC mapping on Tx
    
    [ Upstream commit 89ec1f0886c127c7e41ac61a6b6d539f4fb2510b ]
    
    In SW DCB mode the packets sent receive incorrect UP tags. They are
    constructed correctly and put into tx_ring, but UP is later remapped by
    HW on the basis of TCTUPR register contents according to Tx queue
    selected, and BW used is consistent with the new UP values. This is
    caused by Tx queue selection in kernel not taking into account DCB
    configuration. This patch fixes the issue by implementing the
    ndo_select_queue NDO callback.
    
    Fixes: fd0a05ce74ef ("i40e: transmit, receive, and NAPI")
    Signed-off-by: Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
    Signed-off-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
    Tested-by: Imam Hassan Reza Biswas <imam.hassan.reza.biswas@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 74aea4b7159a4374ddaafcc87d4ded7cac42204e
Author: Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
Date:   Fri May 21 18:41:26 2021 +0200

    i40e: Fix firmware LLDP agent related warning
    
    [ Upstream commit 71d6fdba4b2d82fdd883fec31dee77fbcf59773a ]
    
    Make warning meaningful for the user.
    
    Previously the trace:
    "Starting FW LLDP agent failed: error: I40E_ERR_ADMIN_QUEUE_ERROR, I40E_AQ_RC_EAGAIN"
    was produced when user tried to start Firmware LLDP agent,
    just after it was stopped with sequence:
    ethtool --set-priv-flags <dev> disable-fw-lldp on
    ethtool --set-priv-flags <dev> disable-fw-lldp off
    (without any delay between the commands)
    At that point the firmware is still processing stop command, the behavior
    is expected.
    
    Fixes: c1041d070437 ("i40e: Missing response checks in driver when starting/stopping FW LLDP")
    Signed-off-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
    Signed-off-by: Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
    Tested-by: Imam Hassan Reza Biswas <imam.hassan.reza.biswas@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b2ab34e862eb4d1a82f539df1c6f1e3d3e7e80f5
Author: Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
Date:   Thu Apr 29 19:49:47 2021 +0200

    i40e: Fix logic of disabling queues
    
    [ Upstream commit 65662a8dcdd01342b71ee44234bcfd0162e195af ]
    
    Correct the message flow between driver and firmware when disabling
    queues.
    
    Previously in case of PF reset (due to required reinit after reconfig),
    the error like: "VSI seid 397 Tx ring 60 disable timeout" could show up
    occasionally. The error was not a real issue of hardware or firmware,
    it was caused by wrong sequence of messages invoked by the driver.
    
    Fixes: 41c445ff0f48 ("i40e: main driver core")
    Signed-off-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
    Signed-off-by: Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
    Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 519582e44e6a8ed4a7524d0558e7d1bcd5ad88ed
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Tue Jul 20 18:22:50 2021 +0200

    netfilter: nft_nat: allow to specify layer 4 protocol NAT only
    
    [ Upstream commit a33f387ecd5aafae514095c2c4a8c24f7aea7e8b ]
    
    nft_nat reports a bogus EAFNOSUPPORT if no layer 3 information is specified.
    
    Fixes: d07db9884a5f ("netfilter: nf_tables: introduce nft_validate_register_load()")
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3a7a4cee7bec00aa625d2db9369612ecc8c9a010
Author: Florian Westphal <fw@strlen.de>
Date:   Sun Jul 18 18:36:00 2021 +0200

    netfilter: conntrack: adjust stop timestamp to real expiry value
    
    [ Upstream commit 30a56a2b881821625f79837d4d968c679852444e ]
    
    In case the entry is evicted via garbage collection there is
    delay between the timeout value and the eviction event.
    
    This adjusts the stop value based on how much time has passed.
    
    Fixes: b87a2f9199ea82 ("netfilter: conntrack: add gc worker to remove timed-out entries")
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1c043783403c33a8da610f54c7a1a99da0b77f22
Author: Nguyen Dinh Phi <phind.uet@gmail.com>
Date:   Mon Jun 28 21:23:34 2021 +0800

    cfg80211: Fix possible memory leak in function cfg80211_bss_update
    
    commit f9a5c358c8d26fed0cc45f2afc64633d4ba21dff upstream.
    
    When we exceed the limit of BSS entries, this function will free the
    new entry, however, at this time, it is the last door to access the
    inputed ies, so these ies will be unreferenced objects and cause memory
    leak.
    Therefore we should free its ies before deallocating the new entry, beside
    of dropping it from hidden_list.
    
    Signed-off-by: Nguyen Dinh Phi <phind.uet@gmail.com>
    Link: https://lore.kernel.org/r/20210628132334.851095-1-phind.uet@gmail.com
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6cf2abea101866c45c2092aa607b4434b573cdc7
Author: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
Date:   Wed Jul 28 08:49:09 2021 +0200

    nfc: nfcsim: fix use after free during module unload
    
    commit 5e7b30d24a5b8cb691c173b45b50e3ca0191be19 upstream.
    
    There is a use after free memory corruption during module exit:
     - nfcsim_exit()
      - nfcsim_device_free(dev0)
        - nfc_digital_unregister_device()
          This iterates over command queue and frees all commands,
        - dev->up = false
        - nfcsim_link_shutdown()
          - nfcsim_link_recv_wake()
            This wakes the sleeping thread nfcsim_link_recv_skb().
    
     - nfcsim_link_recv_skb()
       Wake from wait_event_interruptible_timeout(),
       call directly the deb->cb callback even though (dev->up == false),
       - digital_send_cmd_complete()
         Dereference of "struct digital_cmd" cmd which was freed earlier by
         nfc_digital_unregister_device().
    
    This causes memory corruption shortly after (with unrelated stack
    trace):
    
      nfc nfc0: NFC: nfcsim_recv_wq: Device is down
      llcp: nfc_llcp_recv: err -19
      nfc nfc1: NFC: nfcsim_recv_wq: Device is down
      BUG: unable to handle page fault for address: ffffffffffffffed
      Call Trace:
       fsnotify+0x54b/0x5c0
       __fsnotify_parent+0x1fe/0x300
       ? vfs_write+0x27c/0x390
       vfs_write+0x27c/0x390
       ksys_write+0x63/0xe0
       do_syscall_64+0x3b/0x90
       entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    KASAN report:
    
      BUG: KASAN: use-after-free in digital_send_cmd_complete+0x16/0x50
      Write of size 8 at addr ffff88800a05f720 by task kworker/0:2/71
      Workqueue: events nfcsim_recv_wq [nfcsim]
      Call Trace:
       dump_stack_lvl+0x45/0x59
       print_address_description.constprop.0+0x21/0x140
       ? digital_send_cmd_complete+0x16/0x50
       ? digital_send_cmd_complete+0x16/0x50
       kasan_report.cold+0x7f/0x11b
       ? digital_send_cmd_complete+0x16/0x50
       ? digital_dep_link_down+0x60/0x60
       digital_send_cmd_complete+0x16/0x50
       nfcsim_recv_wq+0x38f/0x3d5 [nfcsim]
       ? nfcsim_in_send_cmd+0x4a/0x4a [nfcsim]
       ? lock_is_held_type+0x98/0x110
       ? finish_wait+0x110/0x110
       ? rcu_read_lock_sched_held+0x9c/0xd0
       ? rcu_read_lock_bh_held+0xb0/0xb0
       ? lockdep_hardirqs_on_prepare+0x12e/0x1f0
    
    This flow of calling digital_send_cmd_complete() callback on driver exit
    is specific to nfcsim which implements reading and sending work queues.
    Since the NFC digital device was unregistered, the callback should not
    be called.
    
    Fixes: 204bddcb508f ("NFC: nfcsim: Make use of the Digital layer")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6b313d0ffa7150c5b570290a7bfad6bb98a0205f
Author: Paul Jakma <paul@jakma.org>
Date:   Fri Jul 23 16:13:04 2021 +0100

    NIU: fix incorrect error return, missed in previous revert
    
    commit 15bbf8bb4d4ab87108ecf5f4155ec8ffa3c141d6 upstream.
    
    Commit 7930742d6, reverting 26fd962, missed out on reverting an incorrect
    change to a return value.  The niu_pci_vpd_scan_props(..) == 1 case appears
    to be a normal path - treating it as an error and return -EINVAL was
    breaking VPD_SCAN and causing the driver to fail to load.
    
    Fix, so my Neptune card works again.
    
    Cc: Kangjie Lu <kjlu@umn.edu>
    Cc: Shannon Nelson <shannon.lee.nelson@gmail.com>
    Cc: David S. Miller <davem@davemloft.net>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: stable <stable@vger.kernel.org>
    Fixes: 7930742d ('Revert "niu: fix missing checks of niu_pci_eeprom_read"')
    Signed-off-by: Paul Jakma <paul@jakma.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c4663c162778265c588381b6fb53cd9126dcbc96
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Mon Jul 19 13:55:28 2021 -0700

    HID: wacom: Re-enable touch by default for Cintiq 24HDT / 27QHDT
    
    commit 6ca2350e11f09d5d3e53777d1eff8ff6d300ed93 upstream.
    
    Commit 670e90924bfe ("HID: wacom: support named keys on older devices")
    added support for sending named events from the soft buttons on the
    24HDT and 27QHDT. In the process, however, it inadvertantly disabled the
    touchscreen of the 24HDT and 27QHDT by default. The
    `wacom_set_shared_values` function would normally enable touch by default
    but because it checks the state of the non-shared `has_mute_touch_switch`
    flag and `wacom_setup_touch_input_capabilities` sets the state of the
    /shared/ version, touch ends up being disabled by default.
    
    This patch sets the non-shared flag, letting `wacom_set_shared_values`
    take care of copying the value over to the shared version and setting
    the default touch state to "on".
    
    Fixes: 670e90924bfe ("HID: wacom: support named keys on older devices")
    CC: stable@vger.kernel.org # 5.4+
    Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
    Reviewed-by: Ping Cheng <ping.cheng@wacom.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e9e2ce00aeda74fd210248c0b46ef446a73a9d4e
Author: Pavel Skripkin <paskripkin@gmail.com>
Date:   Tue Jul 27 20:00:46 2021 +0300

    can: esd_usb2: fix memory leak
    
    commit 928150fad41ba16df7fcc9f7f945747d0f56cbb6 upstream.
    
    In esd_usb2_setup_rx_urbs() MAX_RX_URBS coherent buffers are allocated
    and there is nothing, that frees them:
    
    1) In callback function the urb is resubmitted and that's all
    2) In disconnect function urbs are simply killed, but URB_FREE_BUFFER
       is not set (see esd_usb2_setup_rx_urbs) and this flag cannot be used
       with coherent buffers.
    
    So, all allocated buffers should be freed with usb_free_coherent()
    explicitly.
    
    Side note: This code looks like a copy-paste of other can drivers. The
    same patch was applied to mcba_usb driver and it works nice with real
    hardware. There is no change in functionality, only clean-up code for
    coherent buffers.
    
    Fixes: 96d8e90382dc ("can: Add driver for esd CAN-USB/2 device")
    Link: https://lore.kernel.org/r/b31b096926dcb35998ad0271aac4b51770ca7cc8.1627404470.git.paskripkin@gmail.com
    Cc: linux-stable <stable@vger.kernel.org>
    Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 43726620b2f689698249fba0ca8372362933b1aa
Author: Pavel Skripkin <paskripkin@gmail.com>
Date:   Tue Jul 27 20:00:33 2021 +0300

    can: ems_usb: fix memory leak
    
    commit 9969e3c5f40c166e3396acc36c34f9de502929f6 upstream.
    
    In ems_usb_start() MAX_RX_URBS coherent buffers are allocated and
    there is nothing, that frees them:
    
    1) In callback function the urb is resubmitted and that's all
    2) In disconnect function urbs are simply killed, but URB_FREE_BUFFER
       is not set (see ems_usb_start) and this flag cannot be used with
       coherent buffers.
    
    So, all allocated buffers should be freed with usb_free_coherent()
    explicitly.
    
    Side note: This code looks like a copy-paste of other can drivers. The
    same patch was applied to mcba_usb driver and it works nice with real
    hardware. There is no change in functionality, only clean-up code for
    coherent buffers.
    
    Fixes: 702171adeed3 ("ems_usb: Added support for EMS CPC-USB/ARM7 CAN/USB interface")
    Link: https://lore.kernel.org/r/59aa9fbc9a8cbf9af2bbd2f61a659c480b415800.1627404470.git.paskripkin@gmail.com
    Cc: linux-stable <stable@vger.kernel.org>
    Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8198673892761358cfe21a6b3cbf0a84640db2e4
Author: Pavel Skripkin <paskripkin@gmail.com>
Date:   Tue Jul 27 19:59:57 2021 +0300

    can: usb_8dev: fix memory leak
    
    commit 0e865f0c31928d6a313269ef624907eec55287c4 upstream.
    
    In usb_8dev_start() MAX_RX_URBS coherent buffers are allocated and
    there is nothing, that frees them:
    
    1) In callback function the urb is resubmitted and that's all
    2) In disconnect function urbs are simply killed, but URB_FREE_BUFFER
       is not set (see usb_8dev_start) and this flag cannot be used with
       coherent buffers.
    
    So, all allocated buffers should be freed with usb_free_coherent()
    explicitly.
    
    Side note: This code looks like a copy-paste of other can drivers. The
    same patch was applied to mcba_usb driver and it works nice with real
    hardware. There is no change in functionality, only clean-up code for
    coherent buffers.
    
    Fixes: 0024d8ad1639 ("can: usb_8dev: Add support for USB2CAN interface from 8 devices")
    Link: https://lore.kernel.org/r/d39b458cd425a1cf7f512f340224e6e9563b07bd.1627404470.git.paskripkin@gmail.com
    Cc: linux-stable <stable@vger.kernel.org>
    Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a051dbd17b5b519ff15269f6c8d80f8d376667a2
Author: Pavel Skripkin <paskripkin@gmail.com>
Date:   Sun Jul 25 13:36:30 2021 +0300

    can: mcba_usb_start(): add missing urb->transfer_dma initialization
    
    commit fc43fb69a7af92839551f99c1a96a37b77b3ae7a upstream.
    
    Yasushi reported, that his Microchip CAN Analyzer stopped working
    since commit 91c02557174b ("can: mcba_usb: fix memory leak in
    mcba_usb"). The problem was in missing urb->transfer_dma
    initialization.
    
    In my previous patch to this driver I refactored mcba_usb_start() code
    to avoid leaking usb coherent buffers. To archive it, I passed local
    stack variable to usb_alloc_coherent() and then saved it to private
    array to correctly free all coherent buffers on ->close() call. But I
    forgot to initialize urb->transfer_dma with variable passed to
    usb_alloc_coherent().
    
    All of this was causing device to not work, since dma addr 0 is not
    valid and following log can be found on bug report page, which points
    exactly to problem described above.
    
    | DMAR: [DMA Write] Request device [00:14.0] PASID ffffffff fault addr 0 [fault reason 05] PTE Write access is not set
    
    Fixes: 91c02557174b ("can: mcba_usb: fix memory leak in mcba_usb")
    Link: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=990850
    Link: https://lore.kernel.org/r/20210725103630.23864-1-paskripkin@gmail.com
    Cc: linux-stable <stable@vger.kernel.org>
    Reported-by: Yasushi SHOJI <yasushi.shoji@gmail.com>
    Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
    Tested-by: Yasushi SHOJI <yashi@spacecubics.com>
    [mkl: fixed typos in commit message - thanks Yasushi SHOJI]
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 793581441b5c21cba30512085ed0967fa7dac81d
Author: Ziyang Xuan <william.xuanziyang@huawei.com>
Date:   Thu Jul 22 15:08:19 2021 +0800

    can: raw: raw_setsockopt(): fix raw_rcv panic for sock UAF
    
    commit 54f93336d000229f72c26d8a3f69dd256b744528 upstream.
    
    We get a bug during ltp can_filter test as following.
    
    ===========================================
    [60919.264984] BUG: unable to handle kernel NULL pointer dereference at 0000000000000010
    [60919.265223] PGD 8000003dda726067 P4D 8000003dda726067 PUD 3dda727067 PMD 0
    [60919.265443] Oops: 0000 [#1] SMP PTI
    [60919.265550] CPU: 30 PID: 3638365 Comm: can_filter Kdump: loaded Tainted: G        W         4.19.90+ #1
    [60919.266068] RIP: 0010:selinux_socket_sock_rcv_skb+0x3e/0x200
    [60919.293289] RSP: 0018:ffff8d53bfc03cf8 EFLAGS: 00010246
    [60919.307140] RAX: 0000000000000000 RBX: 000000000000001d RCX: 0000000000000007
    [60919.320756] RDX: 0000000000000001 RSI: ffff8d5104a8ed00 RDI: ffff8d53bfc03d30
    [60919.334319] RBP: ffff8d9338056800 R08: ffff8d53bfc29d80 R09: 0000000000000001
    [60919.347969] R10: ffff8d53bfc03ec0 R11: ffffb8526ef47c98 R12: ffff8d53bfc03d30
    [60919.350320] perf: interrupt took too long (3063 > 2500), lowering kernel.perf_event_max_sample_rate to 65000
    [60919.361148] R13: 0000000000000001 R14: ffff8d53bcf90000 R15: 0000000000000000
    [60919.361151] FS:  00007fb78b6b3600(0000) GS:ffff8d53bfc00000(0000) knlGS:0000000000000000
    [60919.400812] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [60919.413730] CR2: 0000000000000010 CR3: 0000003e3f784006 CR4: 00000000007606e0
    [60919.426479] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [60919.439339] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [60919.451608] PKRU: 55555554
    [60919.463622] Call Trace:
    [60919.475617]  <IRQ>
    [60919.487122]  ? update_load_avg+0x89/0x5d0
    [60919.498478]  ? update_load_avg+0x89/0x5d0
    [60919.509822]  ? account_entity_enqueue+0xc5/0xf0
    [60919.520709]  security_sock_rcv_skb+0x2a/0x40
    [60919.531413]  sk_filter_trim_cap+0x47/0x1b0
    [60919.542178]  ? kmem_cache_alloc+0x38/0x1b0
    [60919.552444]  sock_queue_rcv_skb+0x17/0x30
    [60919.562477]  raw_rcv+0x110/0x190 [can_raw]
    [60919.572539]  can_rcv_filter+0xbc/0x1b0 [can]
    [60919.582173]  can_receive+0x6b/0xb0 [can]
    [60919.591595]  can_rcv+0x31/0x70 [can]
    [60919.600783]  __netif_receive_skb_one_core+0x5a/0x80
    [60919.609864]  process_backlog+0x9b/0x150
    [60919.618691]  net_rx_action+0x156/0x400
    [60919.627310]  ? sched_clock_cpu+0xc/0xa0
    [60919.635714]  __do_softirq+0xe8/0x2e9
    [60919.644161]  do_softirq_own_stack+0x2a/0x40
    [60919.652154]  </IRQ>
    [60919.659899]  do_softirq.part.17+0x4f/0x60
    [60919.667475]  __local_bh_enable_ip+0x60/0x70
    [60919.675089]  __dev_queue_xmit+0x539/0x920
    [60919.682267]  ? finish_wait+0x80/0x80
    [60919.689218]  ? finish_wait+0x80/0x80
    [60919.695886]  ? sock_alloc_send_pskb+0x211/0x230
    [60919.702395]  ? can_send+0xe5/0x1f0 [can]
    [60919.708882]  can_send+0xe5/0x1f0 [can]
    [60919.715037]  raw_sendmsg+0x16d/0x268 [can_raw]
    
    It's because raw_setsockopt() concurrently with
    unregister_netdevice_many(). Concurrent scenario as following.
    
            cpu0                                            cpu1
    raw_bind
    raw_setsockopt                                  unregister_netdevice_many
                                                    unlist_netdevice
    dev_get_by_index                                raw_notifier
    raw_enable_filters                              ......
    can_rx_register
    can_rcv_list_find(..., net->can.rx_alldev_list)
    
    ......
    
    sock_close
    raw_release(sock_a)
    
    ......
    
    can_receive
    can_rcv_filter(net->can.rx_alldev_list, ...)
    raw_rcv(skb, sock_a)
    BUG
    
    After unlist_netdevice(), dev_get_by_index() return NULL in
    raw_setsockopt(). Function raw_enable_filters() will add sock
    and can_filter to net->can.rx_alldev_list. Then the sock is closed.
    Followed by, we sock_sendmsg() to a new vcan device use the same
    can_filter. Protocol stack match the old receiver whose sock has
    been released on net->can.rx_alldev_list in can_rcv_filter().
    Function raw_rcv() uses the freed sock. UAF BUG is triggered.
    
    We can find that the key issue is that net_device has not been
    protected in raw_setsockopt(). Use rtnl_lock to protect net_device
    in raw_setsockopt().
    
    Fixes: c18ce101f2e4 ("[CAN]: Add raw protocol")
    Link: https://lore.kernel.org/r/20210722070819.1048263-1-william.xuanziyang@huawei.com
    Cc: linux-stable <stable@vger.kernel.org>
    Signed-off-by: Ziyang Xuan <william.xuanziyang@huawei.com>
    Acked-by: Oliver Hartkopp <socketcan@hartkopp.net>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c621638d0e6d0ba3a45cb8f250803fb6200793a5
Author: Zhang Changzhong <zhangchangzhong@huawei.com>
Date:   Tue Jul 6 19:00:08 2021 +0800

    can: j1939: j1939_xtp_rx_dat_one(): fix rxtimer value between consecutive TP.DT to 750ms
    
    commit c6eea1c8bda56737752465a298dc6ce07d6b8ce3 upstream.
    
    For receive side, the max time interval between two consecutive TP.DT
    should be 750ms.
    
    Fixes: 9d71dd0c7009 ("can: add support of SAE J1939 protocol")
    Link: https://lore.kernel.org/r/1625569210-47506-1-git-send-email-zhangchangzhong@huawei.com
    Cc: linux-stable <stable@vger.kernel.org>
    Signed-off-by: Zhang Changzhong <zhangchangzhong@huawei.com>
    Acked-by: Oleksij Rempel <o.rempel@pengutronix.de>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a24d87b429a9c0ed47b31498d147fe384ae4616a
Author: Junxiao Bi <junxiao.bi@oracle.com>
Date:   Thu Jul 29 14:53:41 2021 -0700

    ocfs2: issue zeroout to EOF blocks
    
    commit 9449ad33be8480f538b11a593e2dda2fb33ca06d upstream.
    
    For punch holes in EOF blocks, fallocate used buffer write to zero the
    EOF blocks in last cluster.  But since ->writepage will ignore EOF
    pages, those zeros will not be flushed.
    
    This "looks" ok as commit 6bba4471f0cc ("ocfs2: fix data corruption by
    fallocate") will zero the EOF blocks when extend the file size, but it
    isn't.  The problem happened on those EOF pages, before writeback, those
    pages had DIRTY flag set and all buffer_head in them also had DIRTY flag
    set, when writeback run by write_cache_pages(), DIRTY flag on the page
    was cleared, but DIRTY flag on the buffer_head not.
    
    When next write happened to those EOF pages, since buffer_head already
    had DIRTY flag set, it would not mark page DIRTY again.  That made
    writeback ignore them forever.  That will cause data corruption.  Even
    directio write can't work because it will fail when trying to drop pages
    caches before direct io, as it found the buffer_head for those pages
    still had DIRTY flag set, then it will fall back to buffer io mode.
    
    To make a summary of the issue, as writeback ingores EOF pages, once any
    EOF page is generated, any write to it will only go to the page cache,
    it will never be flushed to disk even file size extends and that page is
    not EOF page any more.  The fix is to avoid zero EOF blocks with buffer
    write.
    
    The following code snippet from qemu-img could trigger the corruption.
    
      656   open("6b3711ae-3306-4bdd-823c-cf1c0060a095.conv.2", O_RDWR|O_DIRECT|O_CLOEXEC) = 11
      ...
      660   fallocate(11, FALLOC_FL_KEEP_SIZE|FALLOC_FL_PUNCH_HOLE, 2275868672, 327680 <unfinished ...>
      660   fallocate(11, 0, 2275868672, 327680) = 0
      658   pwrite64(11, "
    
    Link: https://lkml.kernel.org/r/20210722054923.24389-2-junxiao.bi@oracle.com
    Signed-off-by: Junxiao Bi <junxiao.bi@oracle.com>
    Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.com>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Changwei Ge <gechangwei@live.cn>
    Cc: Gang He <ghe@suse.com>
    Cc: Jun Piao <piaojun@huawei.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eaaa4284e2881f83dac05702a8be2a00645f7be3
Author: Junxiao Bi <junxiao.bi@oracle.com>
Date:   Thu Jul 29 14:53:38 2021 -0700

    ocfs2: fix zero out valid data
    
    commit f267aeb6dea5e468793e5b8eb6a9c72c0020d418 upstream.
    
    If append-dio feature is enabled, direct-io write and fallocate could
    run in parallel to extend file size, fallocate used "orig_isize" to
    record i_size before taking "ip_alloc_sem", when
    ocfs2_zeroout_partial_cluster() zeroout EOF blocks, i_size maybe already
    extended by ocfs2_dio_end_io_write(), that will cause valid data zeroed
    out.
    
    Link: https://lkml.kernel.org/r/20210722054923.24389-1-junxiao.bi@oracle.com
    Fixes: 6bba4471f0cc ("ocfs2: fix data corruption by fallocate")
    Signed-off-by: Junxiao Bi <junxiao.bi@oracle.com>
    Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.com>
    Cc: Changwei Ge <gechangwei@live.cn>
    Cc: Gang He <ghe@suse.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Jun Piao <piaojun@huawei.com>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9bd1092148b579b3a5b82633ad68fca887becc08
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Tue Jul 27 08:43:10 2021 -0400

    KVM: add missing compat KVM_CLEAR_DIRTY_LOG
    
    commit 8750f9bbda115f3f79bfe43be85551ee5e12b6ff upstream.
    
    The arguments to the KVM_CLEAR_DIRTY_LOG ioctl include a pointer,
    therefore it needs a compat ioctl implementation.  Otherwise,
    32-bit userspace fails to invoke it on 64-bit kernels; for x86
    it might work fine by chance if the padding is zero, but not
    on big-endian architectures.
    
    Reported-by: Thomas Sattler
    Cc: stable@vger.kernel.org
    Fixes: 2a31b9db1535 ("kvm: introduce manual dirty log reprotect")
    Reviewed-by: Peter Xu <peterx@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7a94dfe5e2a0e3dfe85d4cc93bc4b6424575e8b4
Author: Juergen Gross <jgross@suse.com>
Date:   Thu Jul 1 17:41:00 2021 +0200

    x86/kvm: fix vcpu-id indexed array sizes
    
    commit 76b4f357d0e7d8f6f0013c733e6cba1773c266d3 upstream.
    
    KVM_MAX_VCPU_ID is the maximum vcpu-id of a guest, and not the number
    of vcpu-ids. Fix array indexed by vcpu-id to have KVM_MAX_VCPU_ID+1
    elements.
    
    Note that this is currently no real problem, as KVM_MAX_VCPU_ID is
    an odd number, resulting in always enough padding being available at
    the end of those arrays.
    
    Nevertheless this should be fixed in order to avoid rare problems in
    case someone is using an even number for KVM_MAX_VCPU_ID.
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Message-Id: <20210701154105.23215-2-jgross@suse.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2dc291582cce5713c0f0713122286394f0cb119e
Author: Hui Wang <hui.wang@canonical.com>
Date:   Wed Jul 28 23:19:58 2021 +0800

    Revert "ACPI: resources: Add checks for ACPI IRQ override"
    
    commit e0eef3690dc66b3ecc6e0f1267f332403eb22bea upstream.
    
    The commit 0ec4e55e9f57 ("ACPI: resources: Add checks for ACPI IRQ
    override") introduces regression on some platforms, at least it makes
    the UART can't get correct irq setting on two different platforms,
    and it makes the kernel can't bootup on these two platforms.
    
    This reverts commit 0ec4e55e9f571f08970ed115ec0addc691eda613.
    
    Regression-discuss: https://bugzilla.kernel.org/show_bug.cgi?id=213031
    Reported-by: PGNd <pgnet.dev@gmail.com>
    Cc: 5.4+ <stable@vger.kernel.org> # 5.4+
    Signed-off-by: Hui Wang <hui.wang@canonical.com>
    Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a8eec697973440859e4d12082a8c156e509f16be
Author: Goldwyn Rodrigues <rgoldwyn@suse.de>
Date:   Fri Jul 9 11:29:22 2021 -0500

    btrfs: mark compressed range uptodate only if all bio succeed
    
    commit 240246f6b913b0c23733cfd2def1d283f8cc9bbe upstream.
    
    In compression write endio sequence, the range which the compressed_bio
    writes is marked as uptodate if the last bio of the compressed (sub)bios
    is completed successfully. There could be previous bio which may
    have failed which is recorded in cb->errors.
    
    Set the writeback range as uptodate only if cb->errors is zero, as opposed
    to checking only the last bio's status.
    
    Backporting notes: in all versions up to 4.4 the last argument is always
    replaced by "!cb->errors".
    
    CC: stable@vger.kernel.org # 4.4+
    Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 57429c1ec7702cdd97df99b76084e6cecae1295f
Author: Desmond Cheong Zhi Xi <desmondcheongzx@gmail.com>
Date:   Tue Jul 27 15:13:03 2021 +0800

    btrfs: fix rw device counting in __btrfs_free_extra_devids
    
    commit b2a616676839e2a6b02c8e40be7f886f882ed194 upstream.
    
    When removing a writeable device in __btrfs_free_extra_devids, the rw
    device count should be decremented.
    
    This error was caught by Syzbot which reported a warning in
    close_fs_devices:
    
      WARNING: CPU: 1 PID: 9355 at fs/btrfs/volumes.c:1168 close_fs_devices+0x763/0x880 fs/btrfs/volumes.c:1168
      Modules linked in:
      CPU: 0 PID: 9355 Comm: syz-executor552 Not tainted 5.13.0-rc1-syzkaller #0
      Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
      RIP: 0010:close_fs_devices+0x763/0x880 fs/btrfs/volumes.c:1168
      RSP: 0018:ffffc9000333f2f0 EFLAGS: 00010293
      RAX: ffffffff8365f5c3 RBX: 0000000000000001 RCX: ffff888029afd4c0
      RDX: 0000000000000000 RSI: 0000000000000001 RDI: 0000000000000000
      RBP: ffff88802846f508 R08: ffffffff8365f525 R09: ffffed100337d128
      R10: ffffed100337d128 R11: 0000000000000000 R12: dffffc0000000000
      R13: ffff888019be8868 R14: 1ffff1100337d10d R15: 1ffff1100337d10a
      FS:  00007f6f53828700(0000) GS:ffff8880b9a00000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 000000000047c410 CR3: 00000000302a6000 CR4: 00000000001506f0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      Call Trace:
       btrfs_close_devices+0xc9/0x450 fs/btrfs/volumes.c:1180
       open_ctree+0x8e1/0x3968 fs/btrfs/disk-io.c:3693
       btrfs_fill_super fs/btrfs/super.c:1382 [inline]
       btrfs_mount_root+0xac5/0xc60 fs/btrfs/super.c:1749
       legacy_get_tree+0xea/0x180 fs/fs_context.c:592
       vfs_get_tree+0x86/0x270 fs/super.c:1498
       fc_mount fs/namespace.c:993 [inline]
       vfs_kern_mount+0xc9/0x160 fs/namespace.c:1023
       btrfs_mount+0x3d3/0xb50 fs/btrfs/super.c:1809
       legacy_get_tree+0xea/0x180 fs/fs_context.c:592
       vfs_get_tree+0x86/0x270 fs/super.c:1498
       do_new_mount fs/namespace.c:2905 [inline]
       path_mount+0x196f/0x2be0 fs/namespace.c:3235
       do_mount fs/namespace.c:3248 [inline]
       __do_sys_mount fs/namespace.c:3456 [inline]
       __se_sys_mount+0x2f9/0x3b0 fs/namespace.c:3433
       do_syscall_64+0x3f/0xb0 arch/x86/entry/common.c:47
       entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    Because fs_devices->rw_devices was not 0 after
    closing all devices. Here is the call trace that was observed:
    
      btrfs_mount_root():
        btrfs_scan_one_device():
          device_list_add();   <---------------- device added
        btrfs_open_devices():
          open_fs_devices():
            btrfs_open_one_device();   <-------- writable device opened,
                                                 rw device count ++
        btrfs_fill_super():
          open_ctree():
            btrfs_free_extra_devids():
              __btrfs_free_extra_devids();  <--- writable device removed,
                                          rw device count not decremented
              fail_tree_roots:
                btrfs_close_devices():
                  close_fs_devices();   <------- rw device count off by 1
    
    As a note, prior to commit cf89af146b7e ("btrfs: dev-replace: fail
    mount if we don't have replace item with target device"), rw_devices
    was decremented on removing a writable device in
    __btrfs_free_extra_devids only if the BTRFS_DEV_STATE_REPLACE_TGT bit
    was not set for the device. However, this check does not need to be
    reinstated as it is now redundant and incorrect.
    
    In __btrfs_free_extra_devids, we skip removing the device if it is the
    target for replacement. This is done by checking whether device->devid
    == BTRFS_DEV_REPLACE_DEVID. Since BTRFS_DEV_STATE_REPLACE_TGT is set
    only on the device with devid BTRFS_DEV_REPLACE_DEVID, no devices
    should have the BTRFS_DEV_STATE_REPLACE_TGT bit set after the check,
    and so it's redundant to test for that bit.
    
    Additionally, following commit 82372bc816d7 ("Btrfs: make
    the logic of source device removing more clear"), rw_devices is
    incremented whenever a writeable device is added to the alloc
    list (including the target device in btrfs_dev_replace_finishing), so
    all removals of writable devices from the alloc list should also be
    accompanied by a decrement to rw_devices.
    
    Reported-by: syzbot+a70e2ad0879f160b9217@syzkaller.appspotmail.com
    Fixes: cf89af146b7e ("btrfs: dev-replace: fail mount if we don't have replace item with target device")
    CC: stable@vger.kernel.org # 5.10+
    Tested-by: syzbot+a70e2ad0879f160b9217@syzkaller.appspotmail.com
    Reviewed-by: Anand Jain <anand.jain@oracle.com>
    Signed-off-by: Desmond Cheong Zhi Xi <desmondcheongzx@gmail.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 61f2cbc792eb52351488294121b55e466394fe86
Author: Jan Kiszka <jan.kiszka@siemens.com>
Date:   Sun Apr 11 10:12:16 2021 +0200

    x86/asm: Ensure asm/proto.h can be included stand-alone
    
    [ Upstream commit f7b21a0e41171d22296b897dac6e4c41d2a3643c ]
    
    Fix:
    
      ../arch/x86/include/asm/proto.h:14:30: warning: ‘struct task_struct’ declared \
        inside parameter list will not be visible outside of this definition or declaration
      long do_arch_prctl_64(struct task_struct *task, int option, unsigned long arg2);
                                   ^~~~~~~~~~~
    
      .../arch/x86/include/asm/proto.h:40:34: warning: ‘struct task_struct’ declared \
        inside parameter list will not be visible outside of this definition or declaration
       long do_arch_prctl_common(struct task_struct *task, int option,
                                        ^~~~~~~~~~~
    
    if linux/sched.h hasn't be included previously. This fixes a build error
    when this header is used outside of the kernel tree.
    
     [ bp: Massage commit message. ]
    
    Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Link: https://lkml.kernel.org/r/b76b4be3-cf66-f6b2-9a6c-3e7ef54f9845@web.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 99372c38a948823060e9123ce6ec6bcba43d9387
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Fri Oct 2 12:13:34 2020 -0700

    net_sched: check error pointer in tcf_dump_walker()
    
    [ Upstream commit 580e4273d7a883ececfefa692c1f96bdbacb99b5 ]
    
    Although we take RTNL on dump path, it is possible to
    skip RTNL on insertion path. So the following race condition
    is possible:
    
    rtnl_lock()             // no rtnl lock
                            mutex_lock(&idrinfo->lock);
                            // insert ERR_PTR(-EBUSY)
                            mutex_unlock(&idrinfo->lock);
    tc_dump_action()
    rtnl_unlock()
    
    So we have to skip those temporary -EBUSY entries on dump path
    too.
    
    Reported-and-tested-by: syzbot+b47bc4f247856fb4d9e1@syzkaller.appspotmail.com
    Fixes: 0fedc63fadf0 ("net_sched: commit action insertions together")
    Cc: Vlad Buslov <vladbu@mellanox.com>
    Cc: Jamal Hadi Salim <jhs@mojatatu.com>
    Cc: Jiri Pirko <jiri@resnulli.us>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
