commit 7a1519a74f3d0b06598fb95387688cde41e465d8
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sun Jan 17 14:17:06 2021 +0100

    Linux 5.10.8
    
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Pavel Machek (CIP) <pavel@denx.de>
    Link: https://lore.kernel.org/r/20210115122006.047132306@linuxfoundation.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b77681d400f42e5a53ac9d383f6b09b624e892d0
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Thu Dec 17 14:58:51 2020 -0300

    tools headers UAPI: Sync linux/fscrypt.h with the kernel sources
    
    commit 4a443a51776ca9847942523cf987a330894d3a31 upstream.
    
    To pick the changes from:
    
      3ceb6543e9cf6ed8 ("fscrypt: remove kernel-internal constants from UAPI header")
    
    That don't result in any changes in tooling, just addressing this perf
    build warning:
    
      Warning: Kernel ABI header at 'tools/include/uapi/linux/fscrypt.h' differs from latest version at 'include/uapi/linux/fscrypt.h'
      diff -u tools/include/uapi/linux/fscrypt.h include/uapi/linux/fscrypt.h
    
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Eric Biggers <ebiggers@google.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 27c6968cfb7641c40b5750179f332ed3da930665
Author: Boris Brezillon <boris.brezillon@collabora.com>
Date:   Sun Nov 1 18:38:17 2020 +0100

    drm/panfrost: Remove unused variables in panfrost_job_close()
    
    commit 7d6763ab77b3c047cf7d31ca7c4b799808a684a6 upstream.
    
    Commit a17d609e3e21 ("drm/panfrost: Don't corrupt the queue mutex on
    open/close") left unused variables behind, thus generating a warning
    at compilation time. Remove those variables.
    
    Fixes: a17d609e3e21 ("drm/panfrost: Don't corrupt the queue mutex on open/close")
    Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
    Reviewed-by: Steven Price <steven.price@arm.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20201101173817.831769-1-boris.brezillon@collabora.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 75e5e51acf59ff7436605ef91f486f9543534f9e
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue Jan 5 14:42:29 2021 +0300

    regmap: debugfs: Fix a reversed if statement in regmap_debugfs_init()
    
    commit f6bcb4c7f366905b66ce8ffca7190118244bb642 upstream.
    
    This code will leak "map->debugfs_name" because the if statement is
    reversed so it only frees NULL pointers instead of non-NULL.  In
    fact the if statement is not required and should just be removed
    because kfree() accepts NULL pointers.
    
    Fixes: cffa4b2122f5 ("regmap: debugfs: Fix a memory leak when calling regmap_attach_dev")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Link: https://lore.kernel.org/r/X/RQpfAwRdLg0GqQ@mwanda
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 43f6ea41408b651180e49bef2f7a2f5f5d40a9a4
Author: Vasily Averin <vvs@virtuozzo.com>
Date:   Mon Dec 14 22:07:39 2020 +0300

    net: drop bogus skb with CHECKSUM_PARTIAL and offset beyond end of trimmed packet
    
    commit 54970a2fbb673f090b7f02d7f57b10b2e0707155 upstream.
    
    syzbot reproduces BUG_ON in skb_checksum_help():
    tun creates (bogus) skb with huge partial-checksummed area and
    small ip packet inside. Then ip_rcv trims the skb based on size
    of internal ip packet, after that csum offset points beyond of
    trimmed skb. Then checksum_tg() called via netfilter hook
    triggers BUG_ON:
    
            offset = skb_checksum_start_offset(skb);
            BUG_ON(offset >= skb_headlen(skb));
    
    To work around the problem this patch forces pskb_trim_rcsum_slow()
    to return -EINVAL in described scenario. It allows its callers to
    drop such kind of packets.
    
    Link: https://syzkaller.appspot.com/bug?id=b419a5ca95062664fe1a60b764621eb4526e2cd0
    Reported-by: syzbot+7010af67ced6105e5ab6@syzkaller.appspotmail.com
    Signed-off-by: Vasily Averin <vvs@virtuozzo.com>
    Acked-by: Willem de Bruijn <willemb@google.com>
    Link: https://lore.kernel.org/r/1b2494af-2c56-8ee2-7bc0-923fcad1cdf8@virtuozzo.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 481097d6617414167c0018f1ece1bfb8e117f62f
Author: Ming Lei <ming.lei@redhat.com>
Date:   Mon Dec 21 12:33:35 2020 +0800

    block: fix use-after-free in disk_part_iter_next
    
    commit aebf5db917055b38f4945ed6d621d9f07a44ff30 upstream.
    
    Make sure that bdgrab() is done on the 'block_device' instance before
    referring to it for avoiding use-after-free.
    
    Cc: <stable@vger.kernel.org>
    Reported-by: syzbot+825f0f9657d4e528046e@syzkaller.appspotmail.com
    Signed-off-by: Ming Lei <ming.lei@redhat.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 61e8c02ae6d671e98ab2d82fa26815c480740961
Author: Oliver Hartkopp <socketcan@hartkopp.net>
Date:   Tue Jan 12 10:16:43 2021 +0100

    can: isotp: isotp_getname(): fix kernel information leak
    
    commit b42b3a2744b3e8f427de79896720c72823af91ad upstream.
    
    Initialize the sockaddr_can structure to prevent a data leak to user space.
    
    Suggested-by: Cong Wang <xiyou.wangcong@gmail.com>
    Reported-by: syzbot+057884e2f453e8afebc8@syzkaller.appspotmail.com
    Fixes: e057dd3fc20f ("can: add ISO 15765-2:2016 transport protocol")
    Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
    Link: https://lore.kernel.org/r/20210112091643.11789-1-socketcan@hartkopp.net
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6f7a362e1c6fdc6fd9c0bea4c9b6f34b6d063a3f
Author: Jack Wang <jinpu.wang@cloud.ionos.com>
Date:   Fri Jan 8 15:36:34 2021 +0100

    block/rnbd-clt: avoid module unload race with close confirmation
    
    commit 3a21777c6ee99749bac10727b3c17e5bcfebe5c1 upstream.
    
    We had kernel panic, it is caused by unload module and last
    close confirmation.
    
    call trace:
    [1196029.743127]  free_sess+0x15/0x50 [rtrs_client]
    [1196029.743128]  rtrs_clt_close+0x4c/0x70 [rtrs_client]
    [1196029.743129]  ? rnbd_clt_unmap_device+0x1b0/0x1b0 [rnbd_client]
    [1196029.743130]  close_rtrs+0x25/0x50 [rnbd_client]
    [1196029.743131]  rnbd_client_exit+0x93/0xb99 [rnbd_client]
    [1196029.743132]  __x64_sys_delete_module+0x190/0x260
    
    And in the crashdump confirmation kworker is also running.
    PID: 6943   TASK: ffff9e2ac8098000  CPU: 4   COMMAND: "kworker/4:2"
     #0 [ffffb206cf337c30] __schedule at ffffffff9f93f891
     #1 [ffffb206cf337cc8] schedule at ffffffff9f93fe98
     #2 [ffffb206cf337cd0] schedule_timeout at ffffffff9f943938
     #3 [ffffb206cf337d50] wait_for_completion at ffffffff9f9410a7
     #4 [ffffb206cf337da0] __flush_work at ffffffff9f08ce0e
     #5 [ffffb206cf337e20] rtrs_clt_close_conns at ffffffffc0d5f668 [rtrs_client]
     #6 [ffffb206cf337e48] rtrs_clt_close at ffffffffc0d5f801 [rtrs_client]
     #7 [ffffb206cf337e68] close_rtrs at ffffffffc0d26255 [rnbd_client]
     #8 [ffffb206cf337e78] free_sess at ffffffffc0d262ad [rnbd_client]
     #9 [ffffb206cf337e88] rnbd_clt_put_dev at ffffffffc0d266a7 [rnbd_client]
    
    The problem is both code path try to close same session, which lead to
    panic.
    
    To fix it, just skip the sess if the refcount already drop to 0.
    
    Fixes: f7a7a5c228d4 ("block/rnbd: client: main functionality")
    Signed-off-by: Jack Wang <jinpu.wang@cloud.ionos.com>
    Reviewed-by: Gioh Kim <gi-oh.kim@cloud.ionos.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit be665727363f71f6417693719f975bdbc0e9aaf0
Author: Magnus Karlsson <magnus.karlsson@intel.com>
Date:   Fri Dec 18 14:45:25 2020 +0100

    xsk: Rollback reservation at NETDEV_TX_BUSY
    
    commit b1b95cb5c0a9694d47d5f845ba97e226cfda957d upstream.
    
    Rollback the reservation in the completion ring when we get a
    NETDEV_TX_BUSY. When this error is received from the driver, we are
    supposed to let the user application retry the transmit again. And in
    order to do this, we need to roll back the failed send so it can be
    retried. Unfortunately, we did not cancel the reservation we had made
    in the completion ring. By not doing this, we actually make the
    completion ring one entry smaller per NETDEV_TX_BUSY error we get, and
    after enough of these errors the completion ring will be of size zero
    and transmit will stop working.
    
    Fix this by cancelling the reservation when we get a NETDEV_TX_BUSY
    error.
    
    Fixes: 642e450b6b59 ("xsk: Do not discard packet when NETDEV_TX_BUSY")
    Reported-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
    Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Björn Töpel <bjorn.topel@intel.com>
    Link: https://lore.kernel.org/bpf/20201218134525.13119-3-magnus.karlsson@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9ad0375ed292b20e6737794a680fad8f842a6672
Author: Magnus Karlsson <magnus.karlsson@intel.com>
Date:   Fri Dec 18 14:45:24 2020 +0100

    xsk: Fix race in SKB mode transmit with shared cq
    
    commit f09ced4053bc0a2094a12b60b646114c966ef4c6 upstream.
    
    Fix a race when multiple sockets are simultaneously calling sendto()
    when the completion ring is shared in the SKB case. This is the case
    when you share the same netdev and queue id through the
    XDP_SHARED_UMEM bind flag. The problem is that multiple processes can
    be in xsk_generic_xmit() and call the backpressure mechanism in
    xskq_prod_reserve(xs->pool->cq). As this is a shared resource in this
    specific scenario, a race might occur since the rings are
    single-producer single-consumer.
    
    Fix this by moving the tx_completion_lock from the socket to the pool
    as the pool is shared between the sockets that share the completion
    ring. (The pool is not shared when this is not the case.) And then
    protect the accesses to xskq_prod_reserve() with this lock. The
    tx_completion_lock is renamed cq_lock to better reflect that it
    protects accesses to the potentially shared completion ring.
    
    Fixes: 35fcde7f8deb ("xsk: support for Tx")
    Reported-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
    Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Björn Töpel <bjorn.topel@intel.com>
    Link: https://lore.kernel.org/bpf/20201218134525.13119-2-magnus.karlsson@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 610e2c5699f815d2ff6201bdebb168a4360e1940
Author: Marc Zyngier <maz@kernel.org>
Date:   Thu Dec 10 08:30:59 2020 +0000

    KVM: arm64: Don't access PMCR_EL0 when no PMU is available
    
    commit 2a5f1b67ec577fb1544b563086e0377f095f88e2 upstream.
    
    We reset the guest's view of PMCR_EL0 unconditionally, based on
    the host's view of this register. It is however legal for an
    implementation not to provide any PMU, resulting in an UNDEF.
    
    The obvious fix is to skip the reset of this shadow register
    when no PMU is available, sidestepping the issue entirely.
    If no PMU is available, the guest is not able to request
    a virtual PMU anyway, so not doing nothing is the right thing
    to do!
    
    It is unlikely that this bug can hit any HW implementation
    though, as they all provide a PMU. It has been found using nested
    virt with the host KVM not implementing the PMU itself.
    
    Fixes: ab9468340d2bc ("arm64: KVM: Add access handler for PMCR register")
    Reviewed-by: Alexandru Elisei <alexandru.elisei@arm.com>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20201210083059.1277162-1-maz@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c5c22948f235c4b619970b860a93c2e918756188
Author: Ido Schimmel <idosch@nvidia.com>
Date:   Thu Jan 7 16:48:24 2021 +0200

    selftests: fib_nexthops: Fix wrong mausezahn invocation
    
    commit a5c9ca76a1c61fb5e4c35de8eb25aa925b03c9e4 upstream.
    
    For IPv6 traffic, mausezahn needs to be invoked with '-6'. Otherwise an
    error is returned:
    
     # ip netns exec me mausezahn veth1 -B 2001:db8:101::2 -A 2001:db8:91::1 -c 0 -t tcp "dp=1-1023, flags=syn"
     Failed to set source IPv4 address. Please check if source is set to a valid IPv4 address.
      Invalid command line parameters!
    
    Fixes: 7c741868ceab ("selftests: Add torture tests to nexthop tests")
    Signed-off-by: Ido Schimmel <idosch@nvidia.com>
    Reviewed-by: Petr Machata <petrm@nvidia.com>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e336a772cdcbf8a09d8390c0a251c4be1bdf5074
Author: Marek Behún <kabel@kernel.org>
Date:   Tue Jan 5 18:23:33 2021 +0100

    net: mvneta: fix error message when MTU too large for XDP
    
    commit 0d136f5cd9a7ba6ded7f8ff17e8b1ba680f37625 upstream.
    
    The error message says that "Jumbo frames are not supported on XDP", but
    the code checks for mtu > MVNETA_MAX_RX_BUF_SIZE, not mtu > 1500.
    
    Fix this error message.
    
    Signed-off-by: Marek Behún <kabel@kernel.org>
    Fixes: 0db51da7a8e9 ("net: mvneta: add basic XDP support")
    Cc: Lorenzo Bianconi <lorenzo@kernel.org>
    Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
    Link: https://lore.kernel.org/r/20210105172333.21613-1-kabel@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 729319e4f177d74053928a36019fffe9fd9e1272
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Wed Dec 30 20:23:09 2020 +0000

    drm/i915/dp: Track pm_qos per connector
    
    commit 9397d66212cdf7a21c66523f1583e5d63a609e84 upstream.
    
    Since multiple connectors may run intel_dp_aux_xfer conncurrently, a
    single global pm_qos does not suffice. (One connector may disable the
    dma-latency boost prematurely while the second is still depending on
    it.) Instead of a single global pm_qos, track the pm_qos request for
    each intel_dp.
    
    v2: Move the pm_qos setup/teardown to intel_dp_aux_init/fini
    
    Fixes: 9ee32fea5fe8 ("drm/i915: irq-drive the dp aux communication")
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: Imre Deak <imre.deak@intel.com>
    Reviewed-by: Imre Deak <imre.deak@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20201230202309.23982-1-chris@chris-wilson.co.uk
    (cherry picked from commit b3304591f14b437b6bccd8dbff06006c11837031)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e7f0992529b2dfe687350b235cff6edb6d08c3dd
Author: Stefan Chulski <stefanc@marvell.com>
Date:   Thu Dec 17 16:52:15 2020 +0200

    net: mvpp2: disable force link UP during port init procedure
    
    commit 87508224485323ce2d4e7fb929ec80f51adcc238 upstream.
    
    Force link UP can be enabled by bootloader during tftpboot
    and breaks NFS support.
    Force link UP disabled during port init procedure.
    
    Fixes: f84bf386f395 ("net: mvpp2: initialize the GoP")
    Signed-off-by: Stefan Chulski <stefanc@marvell.com>
    Acked-by: Marcin Wojtas <mw@semihalf.com>
    Link: https://lore.kernel.org/r/1608216735-14501-1-git-send-email-stefanc@marvell.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 734bd3f8256b7d568a1b4078dda2971f3e121cbd
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Thu Dec 31 15:23:46 2020 +0300

    regulator: qcom-rpmh-regulator: correct hfsmps515 definition
    
    commit df6b92fa40050e59ea89784294bf6d04c0c47705 upstream.
    
    According to the datasheet pm8009's HFS515 regulators have 16mV
    resolution rather than declared 1.6 mV. Correct the resolution.
    
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Fixes: 06369bcc15a1 ("regulator: qcom-rpmh: Add support for SM8150")
    Reviewed-by: Vinod Koul <vkoul@kernel.org>
    Link: https://lore.kernel.org/r/20201231122348.637917-3-dmitry.baryshkov@linaro.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ae4db0bc5cde48b4e575bc6f4b7e3a60b0787fa9
Author: Shannon Zhao <shannon.zhao@linux.alibaba.com>
Date:   Mon Jan 4 19:38:44 2021 +0800

    arm64: cpufeature: remove non-exist CONFIG_KVM_ARM_HOST
    
    commit 45ba7b195a369f35cb39094fdb32efe5908b34ad upstream.
    
    Commit d82755b2e781 ("KVM: arm64: Kill off CONFIG_KVM_ARM_HOST") deletes
    CONFIG_KVM_ARM_HOST option, it should use CONFIG_KVM instead.
    
    Just remove CONFIG_KVM_ARM_HOST here.
    
    Fixes: d82755b2e781 ("KVM: arm64: Kill off CONFIG_KVM_ARM_HOST")
    Signed-off-by: Shannon Zhao <shannon.zhao@linux.alibaba.com>
    Acked-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/1609760324-92271-1-git-send-email-shannon.zhao@linux.alibaba.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 344f59a93151604f37319d9b86619385eb853936
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Sun Jan 3 22:36:23 2021 +0100

    wan: ds26522: select CONFIG_BITREVERSE
    
    commit 69931e11288520c250152180ecf9b6ac5e6e40ed upstream.
    
    Without this, the driver runs into a link failure
    
    arm-linux-gnueabi-ld: drivers/net/wan/slic_ds26522.o: in function `slic_ds26522_probe':
    slic_ds26522.c:(.text+0x100c): undefined reference to `byte_rev_table'
    arm-linux-gnueabi-ld: slic_ds26522.c:(.text+0x1cdc): undefined reference to `byte_rev_table'
    arm-linux-gnueabi-ld: drivers/net/wan/slic_ds26522.o: in function `slic_write':
    slic_ds26522.c:(.text+0x1e4c): undefined reference to `byte_rev_table'
    
    Fixes: c37d4a0085c5 ("Maxim/driver: Add driver for maxim ds26522")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c9698380b01aed3281160d3ab25749b57d6913b8
Author: Xiaolei Wang <xiaolei.wang@windriver.com>
Date:   Tue Dec 29 18:50:46 2020 +0800

    regmap: debugfs: Fix a memory leak when calling regmap_attach_dev
    
    commit cffa4b2122f5f3e53cf3d529bbc74651f95856d5 upstream.
    
    After initializing the regmap through
    syscon_regmap_lookup_by_compatible, then regmap_attach_dev to the
    device, because the debugfs_name has been allocated, there is no
    need to redistribute it again
    
    unreferenced object 0xd8399b80 (size 64):
      comm "swapper/0", pid 1, jiffies 4294937641 (age 278.590s)
      hex dump (first 32 bytes):
            64 75 6d 6d 79 2d 69 6f 6d 75 78 63 2d 67 70 72
    dummy-iomuxc-gpr
            40 32 30 65 34 30 30 30 00 7f 52 5b d8 7e 42 69
    @20e4000..R[.~Bi
      backtrace:
        [<ca384d6f>] kasprintf+0x2c/0x54
        [<6ad3bbc2>] regmap_debugfs_init+0xdc/0x2fc
        [<bc4181da>] __regmap_init+0xc38/0xd88
        [<1f7e0609>] of_syscon_register+0x168/0x294
        [<735e8766>] device_node_get_regmap+0x6c/0x98
        [<d96c8982>] imx6ul_init_machine+0x20/0x88
        [<0456565b>] customize_machine+0x1c/0x30
        [<d07393d8>] do_one_initcall+0x80/0x3ac
        [<7e584867>] kernel_init_freeable+0x170/0x1f0
        [<80074741>] kernel_init+0x8/0x120
        [<285d6f28>] ret_from_fork+0x14/0x20
        [<00000000>] 0x0
    
    Fixes: 9b947a13e7f6 ("regmap: use debugfs even when no device")
    Signed-off-by: Xiaolei Wang <xiaolei.wang@windriver.com>
    Link: https://lore.kernel.org/r/20201229105046.41984-1-xiaolei.wang@windriver.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6defee43fe5411207952d12c514e2723a06c640b
Author: Dinghao Liu <dinghao.liu@zju.edu.cn>
Date:   Mon Dec 28 16:48:40 2020 +0800

    net/mlx5e: Fix two double free cases
    
    commit 7a6eb072a9548492ead086f3e820e9aac71c7138 upstream.
    
    mlx5e_create_ttc_table_groups() frees ft->g on failure of
    kvzalloc(), but such failure will be caught by its caller
    in mlx5e_create_ttc_table() and ft->g will be freed again
    in mlx5e_destroy_flow_table(). The same issue also occurs
    in mlx5e_create_ttc_table_groups(). Set ft->g to NULL after
    kfree() to avoid double free.
    
    Fixes: 7b3722fa9ef6 ("net/mlx5e: Support RSS for GRE tunneled packets")
    Fixes: 33cfaaa8f36f ("net/mlx5e: Split the main flow steering table")
    Signed-off-by: Dinghao Liu <dinghao.liu@zju.edu.cn>
    Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 699804e07641be042be8a1f8f5614422b22bcba4
Author: Dinghao Liu <dinghao.liu@zju.edu.cn>
Date:   Mon Dec 21 19:27:31 2020 +0800

    net/mlx5e: Fix memleak in mlx5e_create_l2_table_groups
    
    commit 5b0bb12c58ac7d22e05b5bfdaa30a116c8c32e32 upstream.
    
    When mlx5_create_flow_group() fails, ft->g should be
    freed just like when kvzalloc() fails. The caller of
    mlx5e_create_l2_table_groups() does not catch this
    issue on failure, which leads to memleak.
    
    Fixes: 33cfaaa8f36f ("net/mlx5e: Split the main flow steering table")
    Signed-off-by: Dinghao Liu <dinghao.liu@zju.edu.cn>
    Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b23accd11a89200fc007c81615fef0a50f7866b9
Author: Sagi Grimberg <sagi@grimberg.me>
Date:   Mon Dec 21 00:03:39 2020 -0800

    nvme-tcp: Fix possible race of io_work and direct send
    
    commit 5c11f7d9f843bdd24cd29b95401938bc3f168070 upstream.
    
    We may send a request (with or without its data) from two paths:
    
      1. From our I/O context nvme_tcp_io_work which is triggered from:
        - queue_rq
        - r2t reception
        - socket data_ready and write_space callbacks
      2. Directly from queue_rq if the send_list is empty (because we want to
         save the context switch associated with scheduling our io_work).
    
    However, given that now we have the send_mutex, we may run into a race
    condition where none of these contexts will send the pending payload to
    the controller. Both io_work send path and queue_rq send path
    opportunistically attempt to acquire the send_mutex however queue_rq only
    attempts to send a single request, and if io_work context fails to
    acquire the send_mutex it will complete without rescheduling itself.
    
    The race can trigger with the following sequence:
    
      1. queue_rq sends request (no incapsule data) and blocks
      2. RX path receives r2t - prepares data PDU to send, adds h2cdata PDU
         to the send_list and schedules io_work
      3. io_work triggers and cannot acquire the send_mutex - because of (1),
         ends without self rescheduling
      4. queue_rq completes the send, and completes
    
    ==> no context will send the h2cdata - timeout.
    
    Fix this by having queue_rq sending as much as it can from the send_list
    such that if it still has any left, its because the socket buffer is
    full and the socket write_space callback will trigger, thus guaranteeing
    that a context will be scheduled to send the h2cdata PDU.
    
    Fixes: db5ad6b7f8cd ("nvme-tcp: try to send request in queue_rq context")
    Reported-by: Potnuri Bharat Teja <bharat@chelsio.com>
    Reported-by: Samuel Jones <sjones@kalrayinc.com>
    Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
    Tested-by: Potnuri Bharat Teja <bharat@chelsio.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 31a3520409ffb788108c80f737309a2522372e1f
Author: Alan Maguire <alan.maguire@oracle.com>
Date:   Wed Jan 6 15:59:06 2021 +0000

    bpftool: Fix compilation failure for net.o with older glibc
    
    commit 6f02b540d7597f357bc6ee711346761045d4e108 upstream.
    
    For older glibc ~2.17, #include'ing both linux/if.h and net/if.h
    fails due to complaints about redefinition of interface flags:
    
      CC       net.o
    In file included from net.c:13:0:
    /usr/include/linux/if.h:71:2: error: redeclaration of enumerator ‘IFF_UP’
      IFF_UP    = 1<<0,  /* sysfs */
      ^
    /usr/include/net/if.h:44:5: note: previous definition of ‘IFF_UP’ was here
         IFF_UP = 0x1,  /* Interface is up.  */
    
    The issue was fixed in kernel headers in [1], but since compilation
    of net.c picks up system headers the problem can recur.
    
    Dropping #include <linux/if.h> resolves the issue and it is
    not needed for compilation anyhow.
    
    [1] https://lore.kernel.org/netdev/1461512707-23058-1-git-send-email-mikko.rapeli__34748.27880641$1462831734$gmane$org@iki.fi/
    
    Fixes: f6f3bac08ff9 ("tools/bpf: bpftool: add net support")
    Signed-off-by: Alan Maguire <alan.maguire@oracle.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Acked-by: Martin KaFai Lau <kafai@fb.com>
    Link: https://lore.kernel.org/bpf/1609948746-15369-1-git-send-email-alan.maguire@oracle.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2a21faa9c5961cafe13e12fb32ec2796c6c1329c
Author: Dinghao Liu <dinghao.liu@zju.edu.cn>
Date:   Tue Jan 5 13:18:37 2021 +0800

    iommu/intel: Fix memleak in intel_irq_remapping_alloc
    
    commit ff2b46d7cff80d27d82f7f3252711f4ca1666129 upstream.
    
    When irq_domain_get_irq_data() or irqd_cfg() fails
    at i == 0, data allocated by kzalloc() has not been
    freed before returning, which leads to memleak.
    
    Fixes: b106ee63abcc ("irq_remapping/vt-d: Enhance Intel IR driver to support hierarchical irqdomains")
    Signed-off-by: Dinghao Liu <dinghao.liu@zju.edu.cn>
    Acked-by: Lu Baolu <baolu.lu@linux.intel.com>
    Link: https://lore.kernel.org/r/20210105051837.32118-1-dinghao.liu@zju.edu.cn
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 39b3204e54c18fe32663e7c9525b52d30419b717
Author: Lu Baolu <baolu.lu@linux.intel.com>
Date:   Thu Dec 31 08:53:19 2020 +0800

    iommu/vt-d: Fix misuse of ALIGN in qi_flush_piotlb()
    
    commit 1efd17e7acb6692bffc6c58718f41f27fdfd62f5 upstream.
    
    Use IS_ALIGNED() instead. Otherwise, an unaligned address will be ignored.
    
    Fixes: 33cd6e642d6a ("iommu/vt-d: Flush PASID-based iotlb for iova over first level")
    Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
    Link: https://lore.kernel.org/r/20201231005323.2178523-1-baolu.lu@linux.intel.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2bbe923d7a849f7e1cded6a714608f8b29cf5b31
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Sun Jan 3 22:43:52 2021 +0100

    zonefs: select CONFIG_CRC32
    
    commit 4f8b848788f77c7f5c3bd98febce66b7aa14785f upstream.
    
    When CRC32 is disabled, zonefs cannot be linked:
    
    ld: fs/zonefs/super.o: in function `zonefs_fill_super':
    
    Add a Kconfig 'select' statement for it.
    
    Fixes: 8dcc1a9d90c1 ("fs: New zonefs file system")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 771865dc5a6e9d7fb435e9ab01b7813c66bb169a
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Sun Jan 3 22:43:09 2021 +0100

    lightnvm: select CONFIG_CRC32
    
    commit 19cd3403cb0d522dd5e10188eef85817de29e26e upstream.
    
    Without CRC32 support, this fails to link:
    
    arm-linux-gnueabi-ld: drivers/lightnvm/pblk-init.o: in function `pblk_init':
    pblk-init.c:(.text+0x2654): undefined reference to `crc32_le'
    arm-linux-gnueabi-ld: drivers/lightnvm/pblk-init.o: in function `pblk_exit':
    pblk-init.c:(.text+0x2a7c): undefined reference to `crc32_le'
    
    Fixes: a4bd217b4326 ("lightnvm: physical block device (pblk) target")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 432071f6af709c3838f1606aae60bf616dc99fc1
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Sun Jan 3 22:42:39 2021 +0100

    block: rsxx: select CONFIG_CRC32
    
    commit 36a106a4c1c100d55ba3d32a21ef748cfcd4fa99 upstream.
    
    Without crc32, the driver fails to link:
    
    arm-linux-gnueabi-ld: drivers/block/rsxx/config.o: in function `rsxx_load_config':
    config.c:(.text+0x124): undefined reference to `crc32_le'
    
    Fixes: 8722ff8cdbfa ("block: IBM RamSan 70/80 device driver")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0d813da1bde0be501b2b6f21fb545c32d7b58c9e
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Sun Jan 3 22:36:20 2021 +0100

    wil6210: select CONFIG_CRC32
    
    commit e186620d7bf11b274b985b839c38266d7918cc05 upstream.
    
    Without crc32, the driver fails to link:
    
    arm-linux-gnueabi-ld: drivers/net/wireless/ath/wil6210/fw.o: in function `wil_fw_verify':
    fw.c:(.text+0x74c): undefined reference to `crc32_le'
    arm-linux-gnueabi-ld: drivers/net/wireless/ath/wil6210/fw.o:fw.c:(.text+0x758): more undefined references to `crc32_le' follow
    
    Fixes: 151a9706503f ("wil6210: firmware download")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e208085c82f7f47b60472ddfd4b9fc21d83fea27
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Sun Jan 3 22:36:18 2021 +0100

    phy: dp83640: select CONFIG_CRC32
    
    commit f9d6f94132f01d2a552dcbab54fa56496638186d upstream.
    
    Without crc32, this driver fails to link:
    
    arm-linux-gnueabi-ld: drivers/net/phy/dp83640.o: in function `match':
    dp83640.c:(.text+0x476c): undefined reference to `crc32_le'
    
    Fixes: 539e44d26855 ("dp83640: Include hash in timestamp/packet matching")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    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 f03e2257df3c6d3519806ec8e02406eeabcb5ef0
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Sun Jan 3 22:36:17 2021 +0100

    qed: select CONFIG_CRC32
    
    commit 2860d45a589818dd8ffd90cdc4bcf77f36a5a6be upstream.
    
    Without this, the driver fails to link:
    
    lpc_eth.c:(.text+0x1934): undefined reference to `crc32_le'
    arm-linux-gnueabi-ld: drivers/net/ethernet/qlogic/qed/qed_debug.o: in function `qed_grc_dump':
    qed_debug.c:(.text+0x4068): undefined reference to `crc32_le'
    arm-linux-gnueabi-ld: drivers/net/ethernet/qlogic/qed/qed_debug.o: in function `qed_idle_chk_dump':
    qed_debug.c:(.text+0x51fc): undefined reference to `crc32_le'
    arm-linux-gnueabi-ld: drivers/net/ethernet/qlogic/qed/qed_debug.o: in function `qed_mcp_trace_dump':
    qed_debug.c:(.text+0x6000): undefined reference to `crc32_le'
    arm-linux-gnueabi-ld: drivers/net/ethernet/qlogic/qed/qed_debug.o: in function `qed_dbg_reg_fifo_dump':
    qed_debug.c:(.text+0x66cc): undefined reference to `crc32_le'
    arm-linux-gnueabi-ld: drivers/net/ethernet/qlogic/qed/qed_debug.o:qed_debug.c:(.text+0x6aa4): more undefined references to `crc32_le' follow
    
    Fixes: 7a4b21b7d1f0 ("qed: Add nvram selftest")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 41dcfc0cb955c445255a9cd2d6f391ebef8dfc2b
Author: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Date:   Fri Dec 18 17:33:07 2020 +0100

    arm64: mm: Fix ARCH_LOW_ADDRESS_LIMIT when !CONFIG_ZONE_DMA
    
    commit 095507dc1350b3a2b8b39fdc05edba0c10859eca upstream.
    
    Systems configured with CONFIG_ZONE_DMA32, CONFIG_ZONE_NORMAL and
    !CONFIG_ZONE_DMA will fail to properly setup ARCH_LOW_ADDRESS_LIMIT. The
    limit will default to ~0ULL, effectively spanning the whole memory,
    which is too high for a configuration that expects low memory to be
    capped at 4GB.
    
    Fix ARCH_LOW_ADDRESS_LIMIT by falling back to arm64_dma32_phys_limit
    when arm64_dma_phys_limit isn't set. arm64_dma32_phys_limit will honour
    CONFIG_ZONE_DMA32, or span the entire memory when not enabled.
    
    Fixes: 1a8e1cef7603 ("arm64: use both ZONE_DMA and ZONE_DMA32")
    Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
    Link: https://lore.kernel.org/r/20201218163307.10150-1-nsaenzjulienne@suse.de
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d4a7eb9fbfccd23f9a44c05d5520a2568e83648e
Author: Shravya Kumbham <shravya.kumbham@xilinx.com>
Date:   Wed Dec 23 16:51:02 2020 +0530

    dmaengine: xilinx_dma: fix mixed_enum_type coverity warning
    
    commit 2d5efea64472469117dc1a9a39530069e95b21e9 upstream.
    
    Typecast the fls(width -1) with (enum dmaengine_alignment) in
    xilinx_dma_chan_probe function to fix the coverity warning.
    
    Addresses-Coverity: Event mixed_enum_type.
    Fixes: 9cd4360de609 ("dma: Add Xilinx AXI Video Direct Memory Access Engine driver support")
    Signed-off-by: Shravya Kumbham <shravya.kumbham@xilinx.com>
    Signed-off-by: Radhey Shyam Pandey <radhey.shyam.pandey@xilinx.com>
    Link: https://lore.kernel.org/r/1608722462-29519-4-git-send-email-radhey.shyam.pandey@xilinx.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c16e7cfc1baf3caa8bf818d473a5973156d47048
Author: Shravya Kumbham <shravya.kumbham@xilinx.com>
Date:   Wed Dec 23 16:51:01 2020 +0530

    dmaengine: xilinx_dma: fix incompatible param warning in _child_probe()
    
    commit faeb0731be0a31e2246b21a85fa7dabbd750101d upstream.
    
    In xilinx_dma_child_probe function, the nr_channels variable is
    passed to of_property_read_u32() which expects an u32 return value
    pointer. Modify the nr_channels variable type from int to u32 to
    fix the incompatible parameter coverity warning.
    
    Addresses-Coverity: Event incompatible_param.
    Fixes: 1a9e7a03c761 ("dmaengine: vdma: Add support for mulit-channel dma mode")
    Signed-off-by: Shravya Kumbham <shravya.kumbham@xilinx.com>
    Signed-off-by: Radhey Shyam Pandey <radhey.shyam.pandey@xilinx.com>
    Link: https://lore.kernel.org/r/1608722462-29519-3-git-send-email-radhey.shyam.pandey@xilinx.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e72371fab4eadb1cab7a9483f3c0c8b2210bc556
Author: Shravya Kumbham <shravya.kumbham@xilinx.com>
Date:   Wed Dec 23 16:51:00 2020 +0530

    dmaengine: xilinx_dma: check dma_async_device_register return value
    
    commit 99974aedbd73523969afb09f33c6e3047cd0ddae upstream.
    
    dma_async_device_register() can return non-zero error code. Add
    condition to check the return value of dma_async_device_register
    function and handle the error path.
    
    Addresses-Coverity: Event check_return.
    Fixes: 9cd4360de609 ("dma: Add Xilinx AXI Video Direct Memory Access Engine driver support")
    Signed-off-by: Shravya Kumbham <shravya.kumbham@xilinx.com>
    Signed-off-by: Radhey Shyam Pandey <radhey.shyam.pandey@xilinx.com>
    Link: https://lore.kernel.org/r/1608722462-29519-2-git-send-email-radhey.shyam.pandey@xilinx.com
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 41f95d84fcf58fcbdeaffb28bcec290cecf1608e
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Sat Dec 19 14:28:00 2020 +0100

    dmaengine: milbeaut-xdmac: Fix a resource leak in the error handling path of the probe function
    
    commit d645148cc82ca7fbacaa601414a552184e9c6dd3 upstream.
    
    'disable_xdmac()' should be called in the error handling path of the
    probe function to undo a previous 'enable_xdmac()' call, as already
    done in the remove function.
    
    Fixes: a6e9be055d47 ("dmaengine: milbeaut-xdmac: Add XDMAC driver for Milbeaut platforms")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Link: https://lore.kernel.org/r/20201219132800.183254-1-christophe.jaillet@wanadoo.fr
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ceb97fbe4816788a58dfb5d83233cd6f47dd61c8
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Sat Dec 19 13:47:18 2020 +0100

    dmaengine: mediatek: mtk-hsdma: Fix a resource leak in the error handling path of the probe function
    
    commit 33cbd54dc515cc04b5a603603414222b4bb1448d upstream.
    
    'mtk_hsdma_hw_deinit()' should be called in the error handling path of the
    probe function to undo a previous 'mtk_hsdma_hw_init()' call, as already
    done in the remove function.
    
    Fixes: 548c4597e984 ("dmaengine: mediatek: Add MediaTek High-Speed DMA controller for MT7622 and MT7623 SoC")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Link: https://lore.kernel.org/r/20201219124718.182664-1-christophe.jaillet@wanadoo.fr
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fcd04aa9b52c6749624976f5ae016a515cd2e505
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Mon Dec 28 14:03:02 2020 +0200

    interconnect: qcom: fix rpmh link failures
    
    commit 512d4a26abdbd11c6ffa03032740e5ab3c62c55b upstream.
    
    When CONFIG_COMPILE_TEST is set, it is possible to build some
    of the interconnect drivers into the kernel while their dependencies
    are loadable modules, which is bad:
    
    arm-linux-gnueabi-ld: drivers/interconnect/qcom/bcm-voter.o: in function `qcom_icc_bcm_voter_commit':
    (.text+0x1f8): undefined reference to `rpmh_invalidate'
    arm-linux-gnueabi-ld: (.text+0x20c): undefined reference to `rpmh_write_batch'
    arm-linux-gnueabi-ld: (.text+0x2b0): undefined reference to `rpmh_write_batch'
    arm-linux-gnueabi-ld: (.text+0x2e8): undefined reference to `rpmh_write_batch'
    arm-linux-gnueabi-ld: drivers/interconnect/qcom/icc-rpmh.o: in function `qcom_icc_bcm_init':
    (.text+0x2ac): undefined reference to `cmd_db_read_addr'
    arm-linux-gnueabi-ld: (.text+0x2c8): undefined reference to `cmd_db_read_aux_data'
    
    The exact dependencies are a bit complicated, so split them out into a
    hidden Kconfig symbol that all drivers can in turn depend on to get it
    right.
    
    Fixes: 976daac4a1c5 ("interconnect: qcom: Consolidate interconnect RPMh support")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Link: https://lore.kernel.org/r/20201204165030.3747484-1-arnd@kernel.org
    Signed-off-by: Georgi Djakov <georgi.djakov@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6a0e580ded884443dfda297f0bf0c6f7a4c395e6
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Mon Dec 28 14:03:02 2020 +0200

    interconnect: imx: Add a missing of_node_put after of_device_is_available
    
    commit c6174c0e058fc0a54e0b9787c44cb24b0a8d0217 upstream.
    
    Add an 'of_node_put()' call when a tested device node is not available.
    
    Fixes: f0d8048525d7 ("interconnect: Add imx core driver")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Link: https://lore.kernel.org/r/20201206121304.29381-1-christophe.jaillet@wanadoo.fr
    Signed-off-by: Georgi Djakov <georgi.djakov@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e5689d84ebd8dbe1222ce15147214b3118d8219b
Author: Coly Li <colyli@suse.de>
Date:   Mon Jan 4 15:41:22 2021 +0800

    bcache: set bcache device into read-only mode for BCH_FEATURE_INCOMPAT_OBSO_LARGE_BUCKET
    
    commit 5342fd4255021ef0c4ce7be52eea1c4ebda11c63 upstream.
    
    If BCH_FEATURE_INCOMPAT_OBSO_LARGE_BUCKET is set in incompat feature
    set, it means the cache device is created with obsoleted layout with
    obso_bucket_site_hi. Now bcache does not support this feature bit, a new
    BCH_FEATURE_INCOMPAT_LOG_LARGE_BUCKET_SIZE incompat feature bit is added
    for a better layout to support large bucket size.
    
    For the legacy compatibility purpose, if a cache device created with
    obsoleted BCH_FEATURE_INCOMPAT_OBSO_LARGE_BUCKET feature bit, all bcache
    devices attached to this cache set should be set to read-only. Then the
    dirty data can be written back to backing device before re-create the
    cache device with BCH_FEATURE_INCOMPAT_LOG_LARGE_BUCKET_SIZE feature bit
    by the latest bcache-tools.
    
    This patch checks BCH_FEATURE_INCOMPAT_OBSO_LARGE_BUCKET feature bit
    when running a cache set and attach a bcache device to the cache set. If
    this bit is set,
    - When run a cache set, print an error kernel message to indicate all
      following attached bcache device will be read-only.
    - When attach a bcache device, print an error kernel message to indicate
      the attached bcache device will be read-only, and ask users to update
      to latest bcache-tools.
    
    Such change is only for cache device whose bucket size >= 32MB, this is
    for the zoned SSD and almost nobody uses such large bucket size at this
    moment. If you don't explicit set a large bucket size for a zoned SSD,
    such change is totally transparent to your bcache device.
    
    Fixes: ffa470327572 ("bcache: add bucket_size_hi into struct cache_sb_disk for large bucket")
    Signed-off-by: Coly Li <colyli@suse.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8f243682e5ed71c997665ecf25bafa1ff0e0bd1d
Author: Qii Wang <qii.wang@mediatek.com>
Date:   Thu Dec 24 20:26:07 2020 +0800

    i2c: mediatek: Fix apdma and i2c hand-shake timeout
    
    commit 05f6f7271a38c482c5021967433f7b698e102c45 upstream.
    
    With the apdma remove hand-shake signal, it requirs special
    operation timing to reset i2c manually, otherwise the interrupt
    will not be triggered, i2c transmission will be timeout.
    
    Fixes: 8426fe70cfa4("i2c: mediatek: Add apdma sync in i2c driver")
    Signed-off-by: Qii Wang <qii.wang@mediatek.com>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d908dd5c1064357d8176dfc0a58e541d4c71b690
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Mon Dec 21 14:42:25 2020 +0100

    i2c: i801: Fix the i2c-mux gpiod_lookup_table not being properly terminated
    
    commit 0b3ea2a06de1f52ea30865e227e109a5fd3b6214 upstream.
    
    gpiod_add_lookup_table() expects the gpiod_lookup_table->table passed to
    it to be terminated with a zero-ed out entry.
    
    So we need to allocate one more entry then we will use.
    
    Fixes: d308dfbf62ef ("i2c: mux/i801: Switch to use descriptor passing")
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Acked-by: Jean Delvare <jdelvare@suse.de>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7a30d664c94910d44388eb65953572c744116e2b
Author: Roman Guskov <rguskov@dh-electronics.com>
Date:   Mon Dec 21 13:35:32 2020 +0100

    spi: stm32: FIFO threshold level - fix align packet size
    
    commit a590370d918fc66c62df6620445791fbe840344a upstream.
    
    if cur_bpw <= 8 and xfer_len < 4 then the value of fthlv will be 1 and
    SPI registers content may have been lost.
    
    * If SPI data register is accessed as a 16-bit register and DSIZE <= 8bit,
      better to select FTHLV = 2, 4, 6 etc
    
    * If SPI data register is accessed as a 32-bit register and DSIZE > 8bit,
      better to select FTHLV = 2, 4, 6 etc, while if DSIZE <= 8bit,
      better to select FTHLV = 4, 8, 12 etc
    
    Signed-off-by: Roman Guskov <rguskov@dh-electronics.com>
    Fixes: dcbe0d84dfa5 ("spi: add driver for STM32 SPI controller")
    Reviewed-by: Marek Vasut <marex@denx.de>
    Link: https://lore.kernel.org/r/20201221123532.27272-1-rguskov@dh-electronics.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c75a66726d7e3902d88d2713b1879adfc3fafd96
Author: Douglas Anderson <dianders@chromium.org>
Date:   Thu Dec 17 14:29:11 2020 -0800

    spi: spi-geni-qcom: Fix geni_spi_isr() NULL dereference in timeout case
    
    commit 4aa1464acbe3697710279a4bd65cb4801ed30425 upstream.
    
    In commit 7ba9bdcb91f6 ("spi: spi-geni-qcom: Don't keep a local state
    variable") we changed handle_fifo_timeout() so that we set
    "mas->cur_xfer" to NULL to make absolutely sure that we don't mess
    with the buffers from the previous transfer in the timeout case.
    
    Unfortunately, this caused the IRQ handler to dereference NULL in some
    cases.  One case:
    
      CPU0                           CPU1
      ----                           ----
                                     setup_fifo_xfer()
                                      geni_se_setup_m_cmd()
                                     <hardware starts transfer>
                                     <transfer completes in hardware>
                                     <hardware sets M_RX_FIFO_WATERMARK_EN in m_irq>
                                     ...
                                     handle_fifo_timeout()
                                      spin_lock_irq(mas->lock)
                                      mas->cur_xfer = NULL
                                      geni_se_cancel_m_cmd()
                                      spin_unlock_irq(mas->lock)
    
      geni_spi_isr()
       spin_lock(mas->lock)
       if (m_irq & M_RX_FIFO_WATERMARK_EN)
        geni_spi_handle_rx()
         mas->cur_xfer NULL dereference!
    
    tl;dr: Seriously delayed interrupts for RX/TX can lead to timeout
    handling setting mas->cur_xfer to NULL.
    
    Let's check for the NULL transfer in the TX and RX cases and reset the
    watermark or clear out the fifo respectively to put the hardware back
    into a sane state.
    
    NOTE: things still could get confused if we get timeouts all the way
    through handle_fifo_timeout() and then start a new transfer because
    interrupts from the old transfer / cancel / abort could still be
    pending.  A future patch will help this corner case.
    
    Fixes: 561de45f72bd ("spi: spi-geni-qcom: Add SPI driver support for GENI based QUP")
    Signed-off-by: Douglas Anderson <dianders@chromium.org>
    Reviewed-by: Stephen Boyd <swboyd@chromium.org>
    Link: https://lore.kernel.org/r/20201217142842.v3.1.I99ee04f0cb823415df59bd4f550d6ff5756e43d6@changeid
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 932e130e3dc825374cbf9ad434b30fddc5283567
Author: Colin Ian King <colin.king@canonical.com>
Date:   Tue Jan 5 10:19:57 2021 +0000

    cpufreq: powernow-k8: pass policy rather than use cpufreq_cpu_get()
    
    commit 943bdd0cecad06da8392a33093230e30e501eccc upstream.
    
    Currently there is an unlikely case where cpufreq_cpu_get() returns a
    NULL policy and this will cause a NULL pointer dereference later on.
    
    Fix this by passing the policy to transition_frequency_fidvid() from
    the caller and hence eliminating the need for the cpufreq_cpu_get()
    and cpufreq_cpu_put().
    
    Thanks to Viresh Kumar for suggesting the fix.
    
    Addresses-Coverity: ("Dereference null return")
    Fixes: b43a7ffbf33b ("cpufreq: Notify all policy->cpus in cpufreq_notify_transition()")
    Suggested-by: Viresh Kumar <viresh.kumar@linaro.org>
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a885713b0c036488084b0e73a5d640f4048cebad
Author: Douglas Anderson <dianders@chromium.org>
Date:   Thu Dec 17 14:29:12 2020 -0800

    spi: spi-geni-qcom: Fail new xfers if xfer/cancel/abort pending
    
    commit 690d8b917bbe64772cb0b652311bcd50908aea6b upstream.
    
    If we got a timeout when trying to send an abort command then it means
    that we just got 3 timeouts in a row:
    
    1. The original timeout that caused handle_fifo_timeout() to be
       called.
    2. A one second timeout waiting for the cancel command to finish.
    3. A one second timeout waiting for the abort command to finish.
    
    SPI is clocked by the controller, so nothing (aside from a hardware
    fault or a totally broken sequencer) should be causing the actual
    commands to fail in hardware.  However, even though the hardware
    itself is not expected to fail (and it'd be hard to predict how we
    should handle things if it did), it's easy to hit the timeout case by
    simply blocking our interrupt handler from running for a long period
    of time.  Obviously the system is in pretty bad shape if a interrupt
    handler is blocked for > 2 seconds, but there are certainly bugs (even
    bugs in other unrelated drivers) that can make this happen.
    
    Let's make things a bit more robust against this case.  If we fail to
    abort we'll set a flag and then we'll block all future transfers until
    we have no more interrupts pending.
    
    Fixes: 561de45f72bd ("spi: spi-geni-qcom: Add SPI driver support for GENI based QUP")
    Signed-off-by: Douglas Anderson <dianders@chromium.org>
    Reviewed-by: Stephen Boyd <swboyd@chromium.org>
    Link: https://lore.kernel.org/r/20201217142842.v3.2.Ibade998ed587e070388b4bf58801f1107a40eb53@changeid
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 175465cb6d87b4a791120d09a09bf7cd7fdee8f9
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Sun Jan 3 22:36:19 2021 +0100

    can: kvaser_pciefd: select CONFIG_CRC32
    
    commit 1d48595c786b1b9dc6be301e8d7f6fc74e9882aa upstream.
    
    Without crc32, this driver fails to link:
    
    arm-linux-gnueabi-ld: drivers/net/can/kvaser_pciefd.o: in function `kvaser_pciefd_probe':
    kvaser_pciefd.c:(.text+0x2b0): undefined reference to `crc32_be'
    
    Fixes: 26ad340e582d ("can: kvaser_pciefd: Add driver for Kvaser PCIEcan devices")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Acked-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9fc286ed39266080c084bc7fad656c2e16ca43fa
Author: Marc Kleine-Budde <mkl@pengutronix.de>
Date:   Tue Dec 15 11:32:37 2020 +0100

    can: m_can: m_can_class_unregister(): remove erroneous m_can_clk_stop()
    
    commit c4aec381ab98c9189d47b935832541d520f1f67f upstream.
    
    In m_can_class_register() the clock is started, but stopped on exit. When
    calling m_can_class_unregister(), the clock is stopped a second time.
    
    This patch removes the erroneous m_can_clk_stop() in  m_can_class_unregister().
    
    Fixes: f524f829b75a ("can: m_can: Create a m_can platform framework")
    Cc: Dan Murphy <dmurphy@ti.com>
    Cc: Sriram Dash <sriram.dash@samsung.com>
    Reviewed-by: Sean Nyekjaer <sean@geanix.com>
    Link: https://lore.kernel.org/r/20201215103238.524029-2-mkl@pengutronix.de
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9b990788d84df88a71717fee0097c92bf7b87251
Author: Marc Kleine-Budde <mkl@pengutronix.de>
Date:   Tue Dec 15 11:32:38 2020 +0100

    can: tcan4x5x: fix bittiming const, use common bittiming from m_can driver
    
    commit aee2b3ccc8a63d1cd7da6a8a153d1f3712d40826 upstream.
    
    According to the TCAN4550 datasheet "SLLSF91 - DECEMBER 2018" the tcan4x5x has
    the same bittiming constants as a m_can revision 3.2.x/3.3.0.
    
    The tcan4x5x chip I'm using identifies itself as m_can revision 3.2.1, so
    remove the tcan4x5x specific bittiming values and rely on the values in the
    m_can driver, which are selected according to core revision.
    
    Fixes: 5443c226ba91 ("can: tcan4x5x: Add tcan4x5x driver to the kernel")
    Cc: Dan Murphy <dmurphy@ti.com>
    Reviewed-by: Sean Nyekjaer <sean@geanix.com>
    Link: https://lore.kernel.org/r/20201215103238.524029-3-mkl@pengutronix.de
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4abc2dbd882254f0083504c30e83ac10ae4818b2
Author: Kamal Mostafa <kamal@canonical.com>
Date:   Tue Dec 15 10:20:10 2020 -0800

    selftests/bpf: Clarify build error if no vmlinux
    
    commit 1a3449c19407a28f7019a887cdf0d6ba2444751a upstream.
    
    If Makefile cannot find any of the vmlinux's in its VMLINUX_BTF_PATHS list,
    it tries to run btftool incorrectly, with VMLINUX_BTF unset:
    
        bpftool btf dump file $(VMLINUX_BTF) format c
    
    Such that the keyword 'format' is misinterpreted as the path to vmlinux.
    The resulting build error message is fairly cryptic:
    
          GEN      vmlinux.h
        Error: failed to load BTF from format: No such file or directory
    
    This patch makes the failure reason clearer by yielding this instead:
    
        Makefile:...: *** Cannot find a vmlinux for VMLINUX_BTF at any of
        "{paths}".  Stop.
    
    Fixes: acbd06206bbb ("selftests/bpf: Add vmlinux.h selftest exercising tracing of syscalls")
    Signed-off-by: Kamal Mostafa <kamal@canonical.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Link: https://lore.kernel.org/bpf/20201215182011.15755-1-kamal@canonical.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e095ac6bc3ea9ae8339d84b647925fc13c79187d
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Mon Dec 14 14:56:52 2020 +0300

    dmaengine: dw-edma: Fix use after free in dw_edma_alloc_chunk()
    
    commit 595a334148449bd1d27cf5d6fcb3b0d718cb1b9f upstream.
    
    If the dw_edma_alloc_burst() function fails then we free "chunk" but
    it's still on the "desc->chunk->list" list so it will lead to a use
    after free.  Also the "->chunks_alloc" count is incremented when it
    shouldn't be.
    
    In current kernels small allocations are guaranteed to succeed and
    dw_edma_alloc_burst() can't fail so this will not actually affect
    runtime.
    
    Fixes: e63d79d1ffcd ("dmaengine: Add Synopsys eDMA IP core driver")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Acked-by: Gustavo Pimentel <gustavo.pimentel@synopsys.com>
    Link: https://lore.kernel.org/r/X9dTBFrUPEvvW7qc@mwanda
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 75dfd242b46acf7f012e2f9e641d8fd9fa33009a
Author: Chunyan Zhang <chunyan.zhang@unisoc.com>
Date:   Mon Dec 14 12:58:50 2020 +0800

    i2c: sprd: use a specific timeout to avoid system hang up issue
    
    commit 0b884fe71f9ee6a5df35e677154256ea2099ebb8 upstream.
    
    If the i2c device SCL bus being pulled up due to some exception before
    message transfer done, the system cannot receive the completing interrupt
    signal any more, it would not exit waiting loop until MAX_SCHEDULE_TIMEOUT
    jiffies eclipse, that would make the system seemed hang up. To avoid that
    happen, this patch adds a specific timeout for message transfer.
    
    Fixes: 8b9ec0719834 ("i2c: Add Spreadtrum I2C controller driver")
    Signed-off-by: Linhua Xu <linhua.xu@unisoc.com>
    Signed-off-by: Chunyan Zhang <chunyan.zhang@unisoc.com>
    [wsa: changed errno to ETIMEDOUT]
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0a27398d8969f0def188ab46f932ea1366874bd4
Author: Andreas Kemnade <andreas@kemnade.info>
Date:   Fri Dec 4 10:55:39 2020 +0100

    ARM: OMAP2+: omap_device: fix idling of devices during probe
    
    commit ec76c2eea903947202098090bbe07a739b5246e9 upstream.
    
    On the GTA04A5 od->_driver_status was not set to BUS_NOTIFY_BIND_DRIVER
    during probe of the second mmc used for wifi. Therefore
    omap_device_late_idle idled the device during probing causing oopses when
    accessing the registers.
    
    It was not set because od->_state was set to OMAP_DEVICE_STATE_IDLE
    in the notifier callback. Therefore set od->_driver_status also in that
    case.
    
    This came apparent after commit 21b2cec61c04 ("mmc: Set
    PROBE_PREFER_ASYNCHRONOUS for drivers that existed in v4.4") causing this
    oops:
    
    omap_hsmmc 480b4000.mmc: omap_device_late_idle: enabled but no driver.  Idling
    8<--- cut here ---
    Unhandled fault: external abort on non-linefetch (0x1028) at 0xfa0b402c
    ...
    (omap_hsmmc_set_bus_width) from [<c07996bc>] (omap_hsmmc_set_ios+0x11c/0x258)
    (omap_hsmmc_set_ios) from [<c077b2b0>] (mmc_power_up.part.8+0x3c/0xd0)
    (mmc_power_up.part.8) from [<c077c14c>] (mmc_start_host+0x88/0x9c)
    (mmc_start_host) from [<c077d284>] (mmc_add_host+0x58/0x84)
    (mmc_add_host) from [<c0799190>] (omap_hsmmc_probe+0x5fc/0x8c0)
    (omap_hsmmc_probe) from [<c0666728>] (platform_drv_probe+0x48/0x98)
    (platform_drv_probe) from [<c066457c>] (really_probe+0x1dc/0x3b4)
    
    Fixes: 04abaf07f6d5 ("ARM: OMAP2+: omap_device: Sync omap_device and pm_runtime after probe defer")
    Fixes: 21b2cec61c04 ("mmc: Set PROBE_PREFER_ASYNCHRONOUS for drivers that existed in v4.4")
    Acked-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
    [tony@atomide.com: left out extra parens, trimmed description stack trace]
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 797335659e58d7eb0156254ea123be6d99aa761a
Author: Brian Gerst <brgerst@gmail.com>
Date:   Mon Nov 30 17:30:59 2020 -0500

    fanotify: Fix sys_fanotify_mark() on native x86-32
    
    commit 2ca408d9c749c32288bc28725f9f12ba30299e8f upstream.
    
    Commit
    
      121b32a58a3a ("x86/entry/32: Use IA32-specific wrappers for syscalls taking 64-bit arguments")
    
    converted native x86-32 which take 64-bit arguments to use the
    compat handlers to allow conversion to passing args via pt_regs.
    sys_fanotify_mark() was however missed, as it has a general compat
    handler. Add a config option that will use the syscall wrapper that
    takes the split args for native 32-bit.
    
     [ bp: Fix typo in Kconfig help text. ]
    
    Fixes: 121b32a58a3a ("x86/entry/32: Use IA32-specific wrappers for syscalls taking 64-bit arguments")
    Reported-by: Paweł Jasiak <pawel@jasiak.xyz>
    Signed-off-by: Brian Gerst <brgerst@gmail.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Acked-by: Jan Kara <jack@suse.cz>
    Acked-by: Andy Lutomirski <luto@kernel.org>
    Link: https://lkml.kernel.org/r/20201130223059.101286-1-brgerst@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 797c128d3c7d95ecc6a2113aae5de109736fba10
Author: Ping Cheng <pinglinux@gmail.com>
Date:   Wed Dec 9 20:52:30 2020 -0800

    HID: wacom: Fix memory leakage caused by kfifo_alloc
    
    commit 37309f47e2f5674f3e86cb765312ace42cfcedf5 upstream.
    
    As reported by syzbot below, kfifo_alloc'd memory would not be freed
    if a non-zero return value is triggered in wacom_probe. This patch
    creates and uses devm_kfifo_alloc to allocate and free itself.
    
    BUG: memory leak
    unreferenced object 0xffff88810dc44a00 (size 512):
      comm "kworker/1:2", pid 3674, jiffies 4294943617 (age 14.100s)
      hex dump (first 32 bytes):
       00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
       00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace:
       [<0000000023e1afac>] kmalloc_array include/linux/slab.h:592 [inline]
       [<0000000023e1afac>] __kfifo_alloc+0xad/0x100 lib/kfifo.c:43
       [<00000000c477f737>] wacom_probe+0x1a1/0x3b0 drivers/hid/wacom_sys.c:2727
       [<00000000b3109aca>] hid_device_probe+0x16b/0x210 drivers/hid/hid-core.c:2281
       [<00000000aff7c640>] really_probe+0x159/0x480 drivers/base/dd.c:554
       [<00000000778d0bc3>] driver_probe_device+0x84/0x100 drivers/base/dd.c:738
       [<000000005108dbb5>] __device_attach_driver+0xee/0x110 drivers/base/dd.c:844
       [<00000000efb7c59e>] bus_for_each_drv+0xb7/0x100 drivers/base/bus.c:431
       [<0000000024ab1590>] __device_attach+0x122/0x250 drivers/base/dd.c:912
       [<000000004c7ac048>] bus_probe_device+0xc6/0xe0 drivers/base/bus.c:491
       [<00000000b93050a3>] device_add+0x5ac/0xc30 drivers/base/core.c:2936
       [<00000000e5b46ea5>] hid_add_device+0x151/0x390 drivers/hid/hid-core.c:2437
       [<00000000c6add147>] usbhid_probe+0x412/0x560 drivers/hid/usbhid/hid-core.c:1407
       [<00000000c33acdb4>] usb_probe_interface+0x177/0x370 drivers/usb/core/driver.c:396
       [<00000000aff7c640>] really_probe+0x159/0x480 drivers/base/dd.c:554
       [<00000000778d0bc3>] driver_probe_device+0x84/0x100 drivers/base/dd.c:738
       [<000000005108dbb5>] __device_attach_driver+0xee/0x110 drivers/base/dd.c:844
    
    https://syzkaller.appspot.com/bug?extid=5b49c9695968d7250a26
    
    Reported-by: syzbot+5b49c9695968d7250a26@syzkaller.appspotmail.com
    Signed-off-by: Ping Cheng <ping.cheng@wacom.com>
    Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bca9046c36d39ebce2eed4577d29910131307e3f
Author: Shannon Nelson <snelson@pensando.io>
Date:   Thu Nov 12 10:22:01 2020 -0800

    ionic: start queues before announcing link up
    
    commit 8f56bc4dc1011be6e2a53198b615fdc588b4ef6a upstream.
    
    Change the order of operations in the link_up handling to be
    sure that the queues are up and ready before we announce that
    the link is up.
    
    Signed-off-by: Shannon Nelson <snelson@pensando.io>
    Reviewed-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6aebfdacad97bd0f52a80dcf0b49aa123bedf2cc
Author: James Smart <james.smart@broadcom.com>
Date:   Thu Nov 19 12:34:07 2020 -0800

    scsi: lpfc: Fix variable 'vport' set but not used in lpfc_sli4_abts_err_handler()
    
    commit 6998ff4e21619d47ebf4f5eb4cafa65c65856221 upstream.
    
    Remove vport variable that is assigned but not used in
    lpfc_sli4_abts_err_handler().
    
    Link: https://lore.kernel.org/r/20201119203407.121913-1-james.smart@broadcom.com
    Fixes: e7dab164a9aa ("scsi: lpfc: Fix scheduling call while in softirq context in lpfc_unreg_rpi")
    Reported-by: kernel test robot <lkp@intel.com>
    Signed-off-by: James Smart <james.smart@broadcom.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8543acf025638aa2afaf78df2f8e325d6b69e34a
Author: Mark Zhang <markzhang@nvidia.com>
Date:   Mon Nov 30 04:38:11 2020 +0200

    net/mlx5: Check if lag is supported before creating one
    
    [ Upstream commit abf8ef953a43e74aac3c54a94975f21bd483199b ]
    
    This patch fixes a memleak issue by preventing to create a lag and
    add PFs if lag is not supported.
    
    comm “python3”, pid 349349, jiffies 4296985507 (age 1446.976s)
    hex dump (first 32 bytes):
      00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  …………….
      00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  …………….
     backtrace:
      [<000000005b216ae7>] mlx5_lag_add+0x1d5/0×3f0 [mlx5_core]
      [<000000000445aa55>] mlx5e_nic_enable+0x66/0×1b0 [mlx5_core]
      [<00000000c56734c3>] mlx5e_attach_netdev+0x16e/0×200 [mlx5_core]
      [<0000000030439d1f>] mlx5e_attach+0x5c/0×90 [mlx5_core]
      [<0000000018fd8615>] mlx5e_add+0x1a4/0×410 [mlx5_core]
      [<0000000068bc504b>] mlx5_add_device+0x72/0×120 [mlx5_core]
      [<000000009fce51f9>] mlx5_register_device+0x77/0xb0 [mlx5_core]
      [<00000000d0d81ff3>] mlx5_load_one+0xc58/0×1eb0 [mlx5_core]
      [<0000000045077adc>] init_one+0x3ea/0×920 [mlx5_core]
      [<0000000043287674>] pci_device_probe+0xcd/0×150
      [<00000000dafd3279>] really_probe+0x1c9/0×4b0
      [<00000000f06bdd84>] driver_probe_device+0x5d/0×140
      [<00000000e3d508b6>] device_driver_attach+0x4f/0×60
      [<0000000084fba0f0>] bind_store+0xbf/0×120
      [<00000000bf6622b3>] kernfs_fop_write+0x114/0×1b0
    
    Fixes: 9b412cc35f00 ("net/mlx5e: Add LAG warning if bond slave is not lag master")
    Signed-off-by: Mark Zhang <markzhang@nvidia.com>
    Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
    Reviewed-by: Maor Gottlieb <maorg@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1e5b0a2300bb47aabb97f42e1d8446ffb7d656ff
Author: Maor Dickman <maord@nvidia.com>
Date:   Mon Dec 14 13:53:03 2020 +0200

    net/mlx5e: In skb build skip setting mark in switchdev mode
    
    [ Upstream commit e13ed0ac064dd6ee964155ba9fdc2f3c3785934c ]
    
    sop_drop_qpn field in the cqe is used by two features, in SWITCHDEV mode
    to restore the chain id in case of a miss and in LEGACY mode to support
    skbedit mark action. In build RX skb, the skb mark field is set regardless
    of the configured mode which cause a corruption of the mark field in case
    of switchdev mode.
    
    Fix by overriding the mark value back to 0 in the representor tc update
    skb flow.
    
    Fixes: 8f1e0b97cc70 ("net/mlx5: E-Switch, Mark miss packets with new chain id mapping")
    Signed-off-by: Maor Dickman <maord@nvidia.com>
    Reviewed-by: Raed Salem <raeds@nvidia.com>
    Reviewed-by: Oz Shlomo <ozsh@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dd7cce96dd37438ec29fd585c58f40acde7be498
Author: Aya Levin <ayal@nvidia.com>
Date:   Sun Dec 27 16:33:19 2020 +0200

    net/mlx5e: ethtool, Fix restriction of autoneg with 56G
    
    [ Upstream commit b1c0aca3d3ddeebeec57ada9c2df9ed647939249 ]
    
    Prior to this patch, configuring speed to 50G with autoneg off over
    devices supporting 50G per lane failed.
    Support for 50G per lane introduced a new set of link-modes, on which
    driver always performed a speed validation as if only legacy link-modes
    were configured. Fix driver speed validation to force setting autoneg
    over 56G only if in legacy link-mode.
    
    Fixes: 3d7cadae51f1 ("net/mlx5e: ethtool, Fix analysis of speed setting")
    Signed-off-by: Aya Levin <ayal@nvidia.com>
    Reviewed-by: Eran Ben Elisha <eranbe@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 39e86d3ca489e568d3532bbe06be84c5893d290d
Author: Mark Zhang <markzhang@nvidia.com>
Date:   Mon Dec 14 03:38:40 2020 +0200

    net/mlx5: Use port_num 1 instead of 0 when delete a RoCE address
    
    [ Upstream commit 0f2dcade69f2af56b74bce432e48ff3957830ce2 ]
    
    In multi-port mode, FW reports syndrome 0x2ea48 (invalid vhca_port_number)
    if the port_num is not 1 or 2.
    
    Fixes: 80f09dfc237f ("net/mlx5: Eswitch, enable RoCE loopback traffic")
    Signed-off-by: Mark Zhang <markzhang@nvidia.com>
    Reviewed-by: Maor Gottlieb <maorg@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d6d3f9de7a06b5937bbf2b64a99a97232fcdfb94
Author: Aleksander Jan Bajkowski <olek2@wp.pl>
Date:   Thu Jan 7 20:58:18 2021 +0100

    net: dsa: lantiq_gswip: Exclude RMII from modes that report 1 GbE
    
    [ Upstream commit 3545454c7801e391b0d966f82c98614d45394770 ]
    
    Exclude RMII from modes that report 1 GbE support. Reduced MII supports
    up to 100 MbE.
    
    Fixes: 14fceff4771e ("net: dsa: Add Lantiq / Intel DSA driver for vrx200")
    Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Link: https://lore.kernel.org/r/20210107195818.3878-1-olek2@wp.pl
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit af9b4ab6ee6d14a0de286cb091d564046bdcecc8
Author: Julian Wiedmann <jwi@linux.ibm.com>
Date:   Thu Jan 7 18:24:42 2021 +0100

    s390/qeth: fix L2 header access in qeth_l3_osa_features_check()
    
    [ Upstream commit f9c4845385c8f6631ebd5dddfb019ea7a285fba4 ]
    
    ip_finish_output_gso() may call .ndo_features_check() even before the
    skb has a L2 header. This conflicts with qeth_get_ip_version()'s attempt
    to inspect the L2 header via vlan_eth_hdr().
    
    Switch to vlan_get_protocol(), as already used further down in the
    common qeth_features_check() path.
    
    Fixes: f13ade199391 ("s390/qeth: run non-offload L3 traffic over common xmit path")
    Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit af0c184ea106051e428b5a0b5f2dfd31cbc54c52
Author: Julian Wiedmann <jwi@linux.ibm.com>
Date:   Thu Jan 7 18:24:41 2021 +0100

    s390/qeth: fix locking for discipline setup / removal
    
    [ Upstream commit b41b554c1ee75070a14c02a88496b1f231c7eacc ]
    
    Due to insufficient locking, qeth_core_set_online() and
    qeth_dev_layer2_store() can run in parallel, both attempting to load &
    setup the discipline (and stepping on each other toes along the way).
    A similar race can also occur between qeth_core_remove_device() and
    qeth_dev_layer2_store().
    
    Access to .discipline is meant to be protected by the discipline_mutex,
    so add/expand the locking in qeth_core_remove_device() and
    qeth_core_set_online().
    Adjust the locking in qeth_l*_remove_device() accordingly, as it's now
    handled by the callers in a consistent manner.
    
    Based on an initial patch by Ursula Braun.
    
    Fixes: 9dc48ccc68b9 ("qeth: serialize sysfs-triggered device configurations")
    Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
    Reviewed-by: Alexandra Winter <wintera@linux.ibm.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1214d69a2bfcc49c2be3185be23aa828724269cb
Author: Julian Wiedmann <jwi@linux.ibm.com>
Date:   Thu Jan 7 18:24:40 2021 +0100

    s390/qeth: fix deadlock during recovery
    
    [ Upstream commit 0b9902c1fcc59ba75268386c0420a554f8844168 ]
    
    When qeth_dev_layer2_store() - holding the discipline_mutex - waits
    inside qeth_l*_remove_device() for a qeth_do_reset() thread to complete,
    we can hit a deadlock if qeth_do_reset() concurrently calls
    qeth_set_online() and thus tries to aquire the discipline_mutex.
    
    Move the discipline_mutex locking outside of qeth_set_online() and
    qeth_set_offline(), and turn the discipline into a parameter so that
    callers understand the dependency.
    
    To fix the deadlock, we can now relax the locking:
    As already established, qeth_l*_remove_device() waits for
    qeth_do_reset() to complete. So qeth_do_reset() itself is under no risk
    of having card->discipline ripped out while it's running, and thus
    doesn't need to take the discipline_mutex.
    
    Fixes: 9dc48ccc68b9 ("qeth: serialize sysfs-triggered device configurations")
    Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
    Reviewed-by: Alexandra Winter <wintera@linux.ibm.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5fb8a3116cd0a439e2be2559b2feb22fd2c06092
Author: Petr Machata <petrm@nvidia.com>
Date:   Thu Jan 7 16:48:23 2021 +0200

    nexthop: Bounce NHA_GATEWAY in FDB nexthop groups
    
    [ Upstream commit b19218b27f3477316d296e8bcf4446aaf017aa69 ]
    
    The function nh_check_attr_group() is called to validate nexthop groups.
    The intention of that code seems to have been to bounce all attributes
    above NHA_GROUP_TYPE except for NHA_FDB. However instead it bounces all
    these attributes except when NHA_FDB attribute is present--then it accepts
    them.
    
    NHA_FDB validation that takes place before, in rtm_to_nh_config(), already
    bounces NHA_OIF, NHA_BLACKHOLE, NHA_ENCAP and NHA_ENCAP_TYPE. Yet further
    back, NHA_GROUPS and NHA_MASTER are bounced unconditionally.
    
    But that still leaves NHA_GATEWAY as an attribute that would be accepted in
    FDB nexthop groups (with no meaning), so long as it keeps the address
    family as unspecified:
    
     # ip nexthop add id 1 fdb via 127.0.0.1
     # ip nexthop add id 10 fdb via default group 1
    
    The nexthop code is still relatively new and likely not used very broadly,
    and the FDB bits are newer still. Even though there is a reproducer out
    there, it relies on an improbable gateway arguments "via default", "via
    all" or "via any". Given all this, I believe it is OK to reformulate the
    condition to do the right thing and bounce NHA_GATEWAY.
    
    Fixes: 38428d68719c ("nexthop: support for fdb ecmp nexthops")
    Signed-off-by: Petr Machata <petrm@nvidia.com>
    Signed-off-by: Ido Schimmel <idosch@nvidia.com>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eaa7a6c39d10f764d9dc68e2ba5547bc2fdfe394
Author: Ido Schimmel <idosch@nvidia.com>
Date:   Thu Jan 7 16:48:22 2021 +0200

    nexthop: Unlink nexthop group entry in error path
    
    [ Upstream commit 7b01e53eee6dce7a8a6736e06b99b68cd0cc7a27 ]
    
    In case of error, remove the nexthop group entry from the list to which
    it was previously added.
    
    Fixes: 430a049190de ("nexthop: Add support for nexthop groups")
    Signed-off-by: Ido Schimmel <idosch@nvidia.com>
    Reviewed-by: Petr Machata <petrm@nvidia.com>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6486bc0a3400f2d67c0577fe8ddd792924b6614a
Author: Ido Schimmel <idosch@nvidia.com>
Date:   Thu Jan 7 16:48:21 2021 +0200

    nexthop: Fix off-by-one error in error path
    
    [ Upstream commit 07e61a979ca4dddb3661f59328b3cd109f6b0070 ]
    
    A reference was not taken for the current nexthop entry, so do not try
    to put it in the error path.
    
    Fixes: 430a049190de ("nexthop: Add support for nexthop groups")
    Signed-off-by: Ido Schimmel <idosch@nvidia.com>
    Reviewed-by: Petr Machata <petrm@nvidia.com>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2e7635299fbf20f517e5516e5d84abbd1f4a2c49
Author: Colin Ian King <colin.king@canonical.com>
Date:   Thu Jan 7 12:39:16 2021 +0000

    octeontx2-af: fix memory leak of lmac and lmac->name
    
    [ Upstream commit ac7996d680d8b4a51bb99bbdcee3dc838b985498 ]
    
    Currently the error return paths don't kfree lmac and lmac->name
    leading to some memory leaks.  Fix this by adding two error return
    paths that kfree these objects
    
    Addresses-Coverity: ("Resource leak")
    Fixes: 1463f382f58d ("octeontx2-af: Add support for CGX link management")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Link: https://lore.kernel.org/r/20210107123916.189748-1-colin.king@canonical.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ab8e7a1af3f24f0477a27782731b818b1ae5a2e4
Author: Ayush Sawal <ayush.sawal@chelsio.com>
Date:   Wed Jan 6 09:59:12 2021 +0530

    chtls: Fix chtls resources release sequence
    
    [ Upstream commit 15ef6b0e30b354253e2c10b3836bc59767eb162b ]
    
    CPL_ABORT_RPL is sent after releasing the resources by calling
    chtls_release_resources(sk); and chtls_conn_done(sk);
    eventually causing kernel panic. Fixing it by calling release
    in appropriate order.
    
    Fixes: cc35c88ae4db ("crypto : chtls - CPL handler definition")
    Signed-off-by: Vinay Kumar Yadav <vinay.yadav@chelsio.com>
    Signed-off-by: Ayush Sawal <ayush.sawal@chelsio.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 23e696e2f3829c2ed90181a6d0d709057c323e1a
Author: Ayush Sawal <ayush.sawal@chelsio.com>
Date:   Wed Jan 6 09:59:11 2021 +0530

    chtls: Added a check to avoid NULL pointer dereference
    
    [ Upstream commit eade1e0a4fb31d48eeb1589d9bb859ae4dd6181d ]
    
    In case of server removal lookup_stid() may return NULL pointer, which
    is used as listen_ctx. So added a check before accessing this pointer.
    
    Fixes: cc35c88ae4db ("crypto : chtls - CPL handler definition")
    Signed-off-by: Vinay Kumar Yadav <vinay.yadav@chelsio.com>
    Signed-off-by: Ayush Sawal <ayush.sawal@chelsio.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5a1af38e06b61f0d75fc1cc5acad1c84c36ad7eb
Author: Ayush Sawal <ayush.sawal@chelsio.com>
Date:   Wed Jan 6 09:59:10 2021 +0530

    chtls: Replace skb_dequeue with skb_peek
    
    [ Upstream commit a84b2c0d5fa23da6d6c8c0d5f5c93184a2744d3e ]
    
    The skb is unlinked twice, one in __skb_dequeue in function
    chtls_reset_synq() and another in cleanup_syn_rcv_conn().
    So in this patch using skb_peek() instead of __skb_dequeue(),
    so that unlink will be handled only in cleanup_syn_rcv_conn().
    
    Fixes: cc35c88ae4db ("crypto : chtls - CPL handler definition")
    Signed-off-by: Vinay Kumar Yadav <vinay.yadav@chelsio.com>
    Signed-off-by: Ayush Sawal <ayush.sawal@chelsio.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d9297487df15520c905cd1e3ca0374423d6e2043
Author: Ayush Sawal <ayush.sawal@chelsio.com>
Date:   Wed Jan 6 09:59:09 2021 +0530

    chtls: Avoid unnecessary freeing of oreq pointer
    
    [ Upstream commit f8d15d29d6e6b32704c8fce9229716ca145a0de2 ]
    
    In chtls_pass_accept_request(), removing the chtls_reqsk_free()
    call to avoid oreq freeing twice. Here oreq is the pointer to
    struct request_sock.
    
    Fixes: cc35c88ae4db ("crypto : chtls - CPL handler definition")
    Signed-off-by: Rohit Maheshwari <rohitm@chelsio.com>
    Signed-off-by: Ayush Sawal <ayush.sawal@chelsio.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 523cea39aab23f50b3d601bb88cb2fb6639e203b
Author: Ayush Sawal <ayush.sawal@chelsio.com>
Date:   Wed Jan 6 09:59:08 2021 +0530

    chtls: Fix panic when route to peer not configured
    
    [ Upstream commit 5a5fac9966bb6d513198634b0b1357be7e8447d2 ]
    
    If route to peer is not configured, we might get non tls
    devices from dst_neigh_lookup() which is invalid, adding a
    check to avoid it.
    
    Fixes: cc35c88ae4db ("crypto : chtls - CPL handler definition")
    Signed-off-by: Rohit Maheshwari <rohitm@chelsio.com>
    Signed-off-by: Ayush Sawal <ayush.sawal@chelsio.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2702758d42a4b4a24530269ce8411b44b7be4c44
Author: Ayush Sawal <ayush.sawal@chelsio.com>
Date:   Wed Jan 6 09:59:07 2021 +0530

    chtls: Remove invalid set_tcb call
    
    [ Upstream commit 827d329105bfde6701f0077e34a09c4a86e27145 ]
    
    At the time of SYN_RECV, connection information is not
    initialized at FW, updating tcb flag over uninitialized
    connection causes adapter crash. We don't need to
    update the flag during SYN_RECV state, so avoid this.
    
    Fixes: cc35c88ae4db ("crypto : chtls - CPL handler definition")
    Signed-off-by: Rohit Maheshwari <rohitm@chelsio.com>
    Signed-off-by: Ayush Sawal <ayush.sawal@chelsio.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 694635a7b8cbab2ac8493c2cf3931834d87a7c6d
Author: Ayush Sawal <ayush.sawal@chelsio.com>
Date:   Wed Jan 6 09:59:06 2021 +0530

    chtls: Fix hardware tid leak
    
    [ Upstream commit 717df0f4cdc9044c415431a3522b3e9ccca5b4a3 ]
    
    send_abort_rpl() is not calculating cpl_abort_req_rss offset and
    ends up sending wrong TID with abort_rpl WR causng tid leaks.
    Replaced send_abort_rpl() with chtls_send_abort_rpl() as it is
    redundant.
    
    Fixes: cc35c88ae4db ("crypto : chtls - CPL handler definition")
    Signed-off-by: Rohit Maheshwari <rohitm@chelsio.com>
    Signed-off-by: Ayush Sawal <ayush.sawal@chelsio.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b0ff6d00edacaf61d834f5b1010937c3894f4202
Author: Florian Westphal <fw@strlen.de>
Date:   Wed Jan 6 00:15:23 2021 +0100

    net: ip: always refragment ip defragmented packets
    
    [ Upstream commit bb4cc1a18856a73f0ff5137df0c2a31f4c50f6cf ]
    
    Conntrack reassembly records the largest fragment size seen in IPCB.
    However, when this gets forwarded/transmitted, fragmentation will only
    be forced if one of the fragmented packets had the DF bit set.
    
    In that case, a flag in IPCB will force fragmentation even if the
    MTU is large enough.
    
    This should work fine, but this breaks with ip tunnels.
    Consider client that sends a UDP datagram of size X to another host.
    
    The client fragments the datagram, so two packets, of size y and z, are
    sent. DF bit is not set on any of these packets.
    
    Middlebox netfilter reassembles those packets back to single size-X
    packet, before routing decision.
    
    packet-size-vs-mtu checks in ip_forward are irrelevant, because DF bit
    isn't set.  At output time, ip refragmentation is skipped as well
    because x is still smaller than the mtu of the output device.
    
    If ttransmit device is an ip tunnel, the packet size increases to
    x+overhead.
    
    Also, tunnel might be configured to force DF bit on outer header.
    
    In this case, packet will be dropped (exceeds MTU) and an ICMP error is
    generated back to sender.
    
    But sender already respects the announced MTU, all the packets that
    it sent did fit the announced mtu.
    
    Force refragmentation as per original sizes unconditionally so ip tunnel
    will encapsulate the fragments instead.
    
    The only other solution I see is to place ip refragmentation in
    the ip_tunnel code to handle this case.
    
    Fixes: d6b915e29f4ad ("ip_fragment: don't forward defragmented DF packet")
    Reported-by: Christian Perle <christian.perle@secunet.com>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Acked-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d5fc41ebe260182a4f14d47fe0d7f58fe155d9ca
Author: Florian Westphal <fw@strlen.de>
Date:   Wed Jan 6 00:15:22 2021 +0100

    net: fix pmtu check in nopmtudisc mode
    
    [ Upstream commit 50c661670f6a3908c273503dfa206dfc7aa54c07 ]
    
    For some reason ip_tunnel insist on setting the DF bit anyway when the
    inner header has the DF bit set, EVEN if the tunnel was configured with
    'nopmtudisc'.
    
    This means that the script added in the previous commit
    cannot be made to work by adding the 'nopmtudisc' flag to the
    ip tunnel configuration. Doing so breaks connectivity even for the
    without-conntrack/netfilter scenario.
    
    When nopmtudisc is set, the tunnel will skip the mtu check, so no
    icmp error is sent to client. Then, because inner header has DF set,
    the outer header gets added with DF bit set as well.
    
    IP stack then sends an error to itself because the packet exceeds
    the device MTU.
    
    Fixes: 23a3647bc4f93 ("ip_tunnels: Use skb-len to PMTU check.")
    Cc: Stefano Brivio <sbrivio@redhat.com>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Acked-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 541c22aad368ba9e1a32a434b7cfd3e941fc67c2
Author: Sean Tranchetti <stranche@codeaurora.org>
Date:   Tue Jan 5 16:22:26 2021 -0800

    tools: selftests: add test for changing routes with PTMU exceptions
    
    [ Upstream commit 5316a7c0130acf09bfc8bb0092407006010fcccc ]
    
    Adds new 2 new tests to the PTMU script: pmtu_ipv4/6_route_change.
    
    These tests explicitly test for a recently discovered problem in the
    IPv6 routing framework where PMTU exceptions were not properly released
    when replacing a route via "ip route change ...".
    
    After creating PMTU exceptions, the route from the device A to R1 will be
    replaced with a new route, then device A will be deleted. If the PMTU
    exceptions were properly cleaned up by the kernel, this device deletion
    will succeed. Otherwise, the unregistration of the device will stall, and
    messages such as the following will be logged in dmesg:
    
    unregister_netdevice: waiting for veth_A-R1 to become free. Usage count = 4
    
    Signed-off-by: Sean Tranchetti <stranche@codeaurora.org>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Link: https://lore.kernel.org/r/1609892546-11389-2-git-send-email-stranche@quicinc.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 69363e37d4709f1f51a8123116c8b75b6e837a76
Author: Sean Tranchetti <stranche@codeaurora.org>
Date:   Tue Jan 5 16:22:25 2021 -0800

    net: ipv6: fib: flush exceptions when purging route
    
    [ Upstream commit d8f5c29653c3f6995e8979be5623d263e92f6b86 ]
    
    Route removal is handled by two code paths. The main removal path is via
    fib6_del_route() which will handle purging any PMTU exceptions from the
    cache, removing all per-cpu copies of the DST entry used by the route, and
    releasing the fib6_info struct.
    
    The second removal location is during fib6_add_rt2node() during a route
    replacement operation. This path also calls fib6_purge_rt() to handle
    cleaning up the per-cpu copies of the DST entries and releasing the
    fib6_info associated with the older route, but it does not flush any PMTU
    exceptions that the older route had. Since the older route is removed from
    the tree during the replacement, we lose any way of accessing it again.
    
    As these lingering DSTs and the fib6_info struct are holding references to
    the underlying netdevice struct as well, unregistering that device from the
    kernel can never complete.
    
    Fixes: 2b760fcf5cfb3 ("ipv6: hook up exception table to store dst cache")
    Signed-off-by: Sean Tranchetti <stranche@codeaurora.org>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Link: https://lore.kernel.org/r/1609892546-11389-1-git-send-email-stranche@quicinc.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6d233d9501af42240ae2e0aef3e832e78ffa4a82
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Tue Jan 5 20:25:31 2021 -0800

    ptp: ptp_ines: prevent build when HAS_IOMEM is not set
    
    [ Upstream commit 1f685e6adbbe3c7b1bd9053be771b898d9efa655 ]
    
    ptp_ines.c uses devm_platform_ioremap_resource(), which is only
    built/available when CONFIG_HAS_IOMEM is enabled.
    CONFIG_HAS_IOMEM is not enabled for arch/s390/, so builds on S390
    have a build error:
    
    s390-linux-ld: drivers/ptp/ptp_ines.o: in function `ines_ptp_ctrl_probe':
    ptp_ines.c:(.text+0x17e6): undefined reference to `devm_platform_ioremap_resource'
    
    Prevent builds of ptp_ines.c when HAS_IOMEM is not set.
    
    Fixes: bad1eaa6ac31 ("ptp: Add a driver for InES time stamping IP core.")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Reported-by: kernel test robot <lkp@intel.com>
    Link: lore.kernel.org/r/202101031125.ZEFCUiKi-lkp@intel.com
    Acked-by: Richard Cochran <richardcochran@gmail.com>
    Link: https://lore.kernel.org/r/20210106042531.1351-1-rdunlap@infradead.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 210b9cdb3d5b1ece76e2c9c6910f13ffa4a9fcd8
Author: Jakub Kicinski <kuba@kernel.org>
Date:   Tue Jan 5 11:07:25 2021 -0800

    net: bareudp: add missing error handling for bareudp_link_config()
    
    [ Upstream commit 94bcfdbff0c210b17b27615f4952cc6ece7d5f5f ]
    
    .dellink does not get called after .newlink fails,
    bareudp_newlink() must undo what bareudp_configure()
    has done if bareudp_link_config() fails.
    
    v2: call bareudp_dellink(), like bareudp_dev_create() does
    
    Fixes: 571912c69f0e ("net: UDP tunnel encapsulation module for tunnelling different protocols like MPLS, IP, NSH etc.")
    Link: https://lore.kernel.org/r/20210105190725.1736246-1-kuba@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2a432be9ba442115b2a1be593bc0930afd53d172
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Sun Jan 3 11:26:26 2021 +1100

    net/sonic: Fix some resource leaks in error handling paths
    
    [ Upstream commit 0f7ba7bc46fa0b574ccacf5672991b321e028492 ]
    
    A call to dma_alloc_coherent() is wrapped by sonic_alloc_descriptors().
    
    This is correctly freed in the remove function, but not in the error
    handling path of the probe function. Fix this by adding the missing
    dma_free_coherent() call.
    
    While at it, rename a label in order to be slightly more informative.
    
    Cc: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Cc: Chris Zankel <chris@zankel.net>
    References: commit 10e3cc180e64 ("net/sonic: Fix a resource leak in an error handling path in 'jazz_sonic_probe()'")
    Fixes: 74f2a5f0ef64 ("xtensa: Add support for the Sonic Ethernet device for the XT2000 board.")
    Fixes: efcce839360f ("[PATCH] macsonic/jazzsonic network drivers update")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9591f32a630f7ea979a7594928a7ad8a37b5586e
Author: Jakub Kicinski <kuba@kernel.org>
Date:   Wed Dec 30 19:40:27 2020 -0800

    net: vlan: avoid leaks on register_vlan_dev() failures
    
    [ Upstream commit 55b7ab1178cbf41f979ff83236d3321ad35ed2ad ]
    
    VLAN checks for NETREG_UNINITIALIZED to distinguish between
    registration failure and unregistration in progress.
    
    Since commit cb626bf566eb ("net-sysfs: Fix reference count leak")
    registration failure may, however, result in NETREG_UNREGISTERED
    as well as NETREG_UNINITIALIZED.
    
    This fix is similer to cebb69754f37 ("rtnetlink: Fix
    memory(net_device) leak when ->newlink fails")
    
    Fixes: cb626bf566eb ("net-sysfs: Fix reference count leak")
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 60de77165d0b0ccc4c3bb34a2c54007ceb590558
Author: Samuel Holland <samuel@sholland.org>
Date:   Sun Jan 3 05:17:44 2021 -0600

    net: stmmac: dwmac-sun8i: Balance syscon (de)initialization
    
    [ Upstream commit 9b1e39cf5dd81f33186cdb950fcf75a121f1a9a7 ]
    
    Previously, sun8i_dwmac_set_syscon was called from a chain of functions
    in several different files:
        sun8i_dwmac_probe
          stmmac_dvr_probe
            stmmac_hw_init
              stmmac_hwif_init
                sun8i_dwmac_setup
                  sun8i_dwmac_set_syscon
    which made the lifetime of the syscon values hard to reason about. Part
    of the problem is that there is no similar platform driver callback from
    stmmac_dvr_remove. As a result, the driver unset the syscon value in
    sun8i_dwmac_exit, but this leaves it uninitialized after a suspend/
    resume cycle. It was also unset a second time (outside sun8i_dwmac_exit)
    in the probe error path.
    
    Move the init to the earliest available place in sun8i_dwmac_probe
    (after stmmac_probe_config_dt, which initializes plat_dat), and the
    deinit to the corresponding position in the cleanup order.
    
    Since priv is not filled in until stmmac_dvr_probe, this requires
    changing the sun8i_dwmac_set_syscon parameters to priv's two relevant
    members.
    
    Fixes: 9f93ac8d4085 ("net-next: stmmac: Add dwmac-sun8i")
    Fixes: 634db83b8265 ("net: stmmac: dwmac-sun8i: Handle integrated/external MDIOs")
    Signed-off-by: Samuel Holland <samuel@sholland.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 35526a9c46b40f9465f136894695c74a288e03a2
Author: Samuel Holland <samuel@sholland.org>
Date:   Sun Jan 3 05:17:43 2021 -0600

    net: stmmac: dwmac-sun8i: Balance internal PHY power
    
    [ Upstream commit b8239638853e3e37b287e4bd4d57b41f14c78550 ]
    
    sun8i_dwmac_exit calls sun8i_dwmac_unpower_internal_phy, but
    sun8i_dwmac_init did not call sun8i_dwmac_power_internal_phy. This
    caused PHY power to remain off after a suspend/resume cycle. Fix this by
    recording if PHY power should be restored, and if so, restoring it.
    
    Fixes: 634db83b8265 ("net: stmmac: dwmac-sun8i: Handle integrated/external MDIOs")
    Signed-off-by: Samuel Holland <samuel@sholland.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 22e1ed2abc661b94c30511b64d6e521de57902b8
Author: Samuel Holland <samuel@sholland.org>
Date:   Sun Jan 3 05:17:42 2021 -0600

    net: stmmac: dwmac-sun8i: Balance internal PHY resource references
    
    [ Upstream commit 529254216773acd5039c07aa18cf06fd1f9fccdd ]
    
    While stmmac_pltfr_remove calls sun8i_dwmac_exit, the sun8i_dwmac_init
    and sun8i_dwmac_exit functions are also called by the stmmac_platform
    suspend/resume callbacks. They may be called many times during the
    device's lifetime and should not release resources used by the driver.
    
    Furthermore, there was no error handling in case registering the MDIO
    mux failed during probe, and the EPHY clock was never released at all.
    
    Fix all of these issues by moving the deinitialization code to a driver
    removal callback. Also ensure the EPHY is powered down before removal.
    
    Fixes: 634db83b8265 ("net: stmmac: dwmac-sun8i: Handle integrated/external MDIOs")
    Signed-off-by: Samuel Holland <samuel@sholland.org>
    Reviewed-by: Chen-Yu Tsai <wens@csie.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 413a79ccb98e9bf1c9d4b25b26c92d7d16be5e72
Author: Samuel Holland <samuel@sholland.org>
Date:   Sun Jan 3 05:17:41 2021 -0600

    net: stmmac: dwmac-sun8i: Fix probe error handling
    
    [ Upstream commit 7eeecc4b1f480c7ba1932cb9a7693f8c452640f2 ]
    
    stmmac_pltfr_remove does three things in one function, making it
    inapproprate for unwinding the steps in the probe function. Currently,
    a failure before the call to stmmac_dvr_probe would leak OF node
    references due to missing a call to stmmac_remove_config_dt. And an
    error in stmmac_dvr_probe would cause the driver to attempt to remove a
    netdevice that was never added. Fix these by reordering the init and
    splitting out the error handling steps.
    
    Fixes: 9f93ac8d4085 ("net-next: stmmac: Add dwmac-sun8i")
    Fixes: 40a1dcee2d18 ("net: ethernet: dwmac-sun8i: Use the correct function in exit path")
    Signed-off-by: Samuel Holland <samuel@sholland.org>
    Reviewed-by: Chen-Yu Tsai <wens@csie.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8d12c062ca995de6c3124d42d5d96c1ff9da4936
Author: Yonglong Liu <liuyonglong@huawei.com>
Date:   Tue Jan 5 11:37:26 2021 +0800

    net: hns3: fix a phy loopback fail issue
    
    [ Upstream commit f04bbcbf1e38d192e94bbfa126731a52332c40b1 ]
    
    When phy driver does not implement the set_loopback interface,
    phy loopback test will return -EOPNOTSUPP, and the loopback test
    will fail. So when phy driver does not implement the set_loopback
    interface, don't do phy loopback test.
    
    Fixes: c9765a89d142 ("net: hns3: add phy selftest function")
    Signed-off-by: Yonglong Liu <liuyonglong@huawei.com>
    Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ed59d391ee5e92e54fb44ac91f0c37dd0ed9a2d9
Author: Yufeng Mo <moyufeng@huawei.com>
Date:   Tue Jan 5 11:37:27 2021 +0800

    net: hns3: fix the number of queues actually used by ARQ
    
    [ Upstream commit 65e61e3c2a619c4d4b873885b2d5394025ed117b ]
    
    HCLGE_MBX_MAX_ARQ_MSG_NUM is used to apply memory for the number
    of queues used by ARQ(Asynchronous Receive Queue), so the head
    and tail pointers should also use this macro.
    
    Fixes: 07a0556a3a73 ("net: hns3: Changes to support ARQ(Asynchronous Receive Queue)")
    Signed-off-by: Yufeng Mo <moyufeng@huawei.com>
    Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 799d8080f9031f9a96e257a4a8374455403926cc
Author: Jian Shen <shenjian15@huawei.com>
Date:   Tue Jan 5 11:37:28 2021 +0800

    net: hns3: fix incorrect handling of sctp6 rss tuple
    
    [ Upstream commit ab6e32d2913a594bc8f822ce4a75c400190b2ecc ]
    
    For DEVICE_VERSION_V2, the hardware only supports src-ip,
    dst-ip and verification-tag for rss tuple set of sctp6
    packet. For DEVICE_VERSION_V3, the hardware supports
    src-port and dst-port as well.
    
    Currently, when user queries the sctp6 rss tuples info,
    some unsupported information will be showed on V2. So add
    a check for hardware version when initializing and queries
    sctp6 rss tuple to fix this issue.
    
    Fixes: 46a3df9f9718 ("net: hns3: Add HNS3 Acceleration Engine & Compatibility Layer Support")
    Signed-off-by: Jian Shen <shenjian15@huawei.com>
    Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b044a949a5c5ddbe61a806bba44aab6148a6f356
Author: Jouni K. Seppänen <jks@iki.fi>
Date:   Tue Jan 5 06:52:49 2021 +0200

    net: cdc_ncm: correct overhead in delayed_ndp_size
    
    [ Upstream commit 7a68d725e4ea384977445e0bcaed3d7de83ab5b3 ]
    
    Aligning to tx_ndp_modulus is not sufficient because the next align
    call can be cdc_ncm_align_tail, which can add up to ctx->tx_modulus +
    ctx->tx_remainder - 1 bytes. This used to lead to occasional crashes
    on a Huawei 909s-120 LTE module as follows:
    
    - the condition marked /* if there is a remaining skb [...] */ is true
      so the swaps happen
    - skb_out is set from ctx->tx_curr_skb
    - skb_out->len is exactly 0x3f52
    - ctx->tx_curr_size is 0x4000 and delayed_ndp_size is 0xac
      (note that the sum of skb_out->len and delayed_ndp_size is 0x3ffe)
    - the for loop over n is executed once
    - the cdc_ncm_align_tail call marked /* align beginning of next frame */
      increases skb_out->len to 0x3f56 (the sum is now 0x4002)
    - the condition marked /* check if we had enough room left [...] */ is
      false so we break out of the loop
    - the condition marked /* If requested, put NDP at end of frame. */ is
      true so the NDP is written into skb_out
    - now skb_out->len is 0x4002, so padding_count is minus two interpreted
      as an unsigned number, which is used as the length argument to memset,
      leading to a crash with various symptoms but usually including
    
    > Call Trace:
    >  <IRQ>
    >  cdc_ncm_fill_tx_frame+0x83a/0x970 [cdc_ncm]
    >  cdc_mbim_tx_fixup+0x1d9/0x240 [cdc_mbim]
    >  usbnet_start_xmit+0x5d/0x720 [usbnet]
    
    The cdc_ncm_align_tail call first aligns on a ctx->tx_modulus
    boundary (adding at most ctx->tx_modulus-1 bytes), then adds
    ctx->tx_remainder bytes. Alternatively, the next alignment call can
    occur in cdc_ncm_ndp16 or cdc_ncm_ndp32, in which case at most
    ctx->tx_ndp_modulus-1 bytes are added.
    
    A similar problem has occurred before, and the code is nontrivial to
    reason about, so add a guard before the crashing call. By that time it
    is too late to prevent any memory corruption (we'll have written past
    the end of the buffer already) but we can at least try to get a warning
    written into an on-disk log by avoiding the hard crash caused by padding
    past the buffer with a huge number of zeros.
    
    Signed-off-by: Jouni K. Seppänen <jks@iki.fi>
    Fixes: 4a0e3e989d66 ("cdc_ncm: Add support for moving NDP to end of NCM frame")
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=209407
    Reported-by: kernel test robot <lkp@intel.com>
    Reviewed-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e3b5252b5cdb4458527aa2356277700d21bf625f
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Thu Jan 7 17:08:30 2021 -0500

    btrfs: shrink delalloc pages instead of full inodes
    
    [ Upstream commit e076ab2a2ca70a0270232067cd49f76cd92efe64 ]
    
    Commit 38d715f494f2 ("btrfs: use btrfs_start_delalloc_roots in
    shrink_delalloc") cleaned up how we do delalloc shrinking by utilizing
    some infrastructure we have in place to flush inodes that we use for
    device replace and snapshot.  However this introduced a pretty serious
    performance regression.  To reproduce the user untarred the source
    tarball of Firefox (360MiB xz compressed/1.5GiB uncompressed), and would
    see it take anywhere from 5 to 20 times as long to untar in 5.10
    compared to 5.9. This was observed on fast devices (SSD and better) and
    not on HDD.
    
    The root cause is because before we would generally use the normal
    writeback path to reclaim delalloc space, and for this we would provide
    it with the number of pages we wanted to flush.  The referenced commit
    changed this to flush that many inodes, which drastically increased the
    amount of space we were flushing in certain cases, which severely
    affected performance.
    
    We cannot revert this patch unfortunately because of 3d45f221ce62
    ("btrfs: fix deadlock when cloning inline extent and low on free
    metadata space") which requires the ability to skip flushing inodes that
    are being cloned in certain scenarios, which means we need to keep using
    our flushing infrastructure or risk re-introducing the deadlock.
    
    Instead to fix this problem we can go back to providing
    btrfs_start_delalloc_roots with a number of pages to flush, and then set
    up a writeback_control and utilize sync_inode() to handle the flushing
    for us.  This gives us the same behavior we had prior to the fix, while
    still allowing us to avoid the deadlock that was fixed by Filipe.  I
    redid the users original test and got the following results on one of
    our test machines (256GiB of ram, 56 cores, 2TiB Intel NVMe drive)
    
      5.9           0m54.258s
      5.10          1m26.212s
      5.10+patch    0m38.800s
    
    5.10+patch is significantly faster than plain 5.9 because of my patch
    series "Change data reservations to use the ticketing infra" which
    contained the patch that introduced the regression, but generally
    improved the overall ENOSPC flushing mechanisms.
    
    Additional testing on consumer-grade SSD (8GiB ram, 8 CPU) confirm
    the results:
    
      5.10.5            4m00s
      5.10.5+patch      1m08s
      5.11-rc2          5m14s
      5.11-rc2+patch    1m30s
    
    Reported-by: René Rebe <rene@exactcode.de>
    Fixes: 38d715f494f2 ("btrfs: use btrfs_start_delalloc_roots in shrink_delalloc")
    CC: stable@vger.kernel.org # 5.10
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Tested-by: David Sterba <dsterba@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    [ add my test results ]
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 17243f73ad742363721e1288fb74e7b151c801f7
Author: Filipe Manana <fdmanana@suse.com>
Date:   Wed Dec 2 11:55:58 2020 +0000

    btrfs: fix deadlock when cloning inline extent and low on free metadata space
    
    [ Upstream commit 3d45f221ce627d13e2e6ef3274f06750c84a6542 ]
    
    When cloning an inline extent there are cases where we can not just copy
    the inline extent from the source range to the target range (e.g. when the
    target range starts at an offset greater than zero). In such cases we copy
    the inline extent's data into a page of the destination inode and then
    dirty that page. However, after that we will need to start a transaction
    for each processed extent and, if we are ever low on available metadata
    space, we may need to flush existing delalloc for all dirty inodes in an
    attempt to release metadata space - if that happens we may deadlock:
    
    * the async reclaim task queued a delalloc work to flush delalloc for
      the destination inode of the clone operation;
    
    * the task executing that delalloc work gets blocked waiting for the
      range with the dirty page to be unlocked, which is currently locked
      by the task doing the clone operation;
    
    * the async reclaim task blocks waiting for the delalloc work to complete;
    
    * the cloning task is waiting on the waitqueue of its reservation ticket
      while holding the range with the dirty page locked in the inode's
      io_tree;
    
    * if metadata space is not released by some other task (like delalloc for
      some other inode completing for example), the clone task waits forever
      and as a consequence the delalloc work and async reclaim tasks will hang
      forever as well. Releasing more space on the other hand may require
      starting a transaction, which will hang as well when trying to reserve
      metadata space, resulting in a deadlock between all these tasks.
    
    When this happens, traces like the following show up in dmesg/syslog:
    
      [87452.323003] INFO: task kworker/u16:11:1810830 blocked for more than 120 seconds.
      [87452.323644]       Tainted: G    B   W         5.10.0-rc4-btrfs-next-73 #1
      [87452.324248] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
      [87452.324852] task:kworker/u16:11  state:D stack:    0 pid:1810830 ppid:     2 flags:0x00004000
      [87452.325520] Workqueue: btrfs-flush_delalloc btrfs_work_helper [btrfs]
      [87452.326136] Call Trace:
      [87452.326737]  __schedule+0x5d1/0xcf0
      [87452.327390]  schedule+0x45/0xe0
      [87452.328174]  lock_extent_bits+0x1e6/0x2d0 [btrfs]
      [87452.328894]  ? finish_wait+0x90/0x90
      [87452.329474]  btrfs_invalidatepage+0x32c/0x390 [btrfs]
      [87452.330133]  ? __mod_memcg_state+0x8e/0x160
      [87452.330738]  __extent_writepage+0x2d4/0x400 [btrfs]
      [87452.331405]  extent_write_cache_pages+0x2b2/0x500 [btrfs]
      [87452.332007]  ? lock_release+0x20e/0x4c0
      [87452.332557]  ? trace_hardirqs_on+0x1b/0xf0
      [87452.333127]  extent_writepages+0x43/0x90 [btrfs]
      [87452.333653]  ? lock_acquire+0x1a3/0x490
      [87452.334177]  do_writepages+0x43/0xe0
      [87452.334699]  ? __filemap_fdatawrite_range+0xa4/0x100
      [87452.335720]  __filemap_fdatawrite_range+0xc5/0x100
      [87452.336500]  btrfs_run_delalloc_work+0x17/0x40 [btrfs]
      [87452.337216]  btrfs_work_helper+0xf1/0x600 [btrfs]
      [87452.337838]  process_one_work+0x24e/0x5e0
      [87452.338437]  worker_thread+0x50/0x3b0
      [87452.339137]  ? process_one_work+0x5e0/0x5e0
      [87452.339884]  kthread+0x153/0x170
      [87452.340507]  ? kthread_mod_delayed_work+0xc0/0xc0
      [87452.341153]  ret_from_fork+0x22/0x30
      [87452.341806] INFO: task kworker/u16:1:2426217 blocked for more than 120 seconds.
      [87452.342487]       Tainted: G    B   W         5.10.0-rc4-btrfs-next-73 #1
      [87452.343274] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
      [87452.344049] task:kworker/u16:1   state:D stack:    0 pid:2426217 ppid:     2 flags:0x00004000
      [87452.344974] Workqueue: events_unbound btrfs_async_reclaim_metadata_space [btrfs]
      [87452.345655] Call Trace:
      [87452.346305]  __schedule+0x5d1/0xcf0
      [87452.346947]  ? kvm_clock_read+0x14/0x30
      [87452.347676]  ? wait_for_completion+0x81/0x110
      [87452.348389]  schedule+0x45/0xe0
      [87452.349077]  schedule_timeout+0x30c/0x580
      [87452.349718]  ? _raw_spin_unlock_irqrestore+0x3c/0x60
      [87452.350340]  ? lock_acquire+0x1a3/0x490
      [87452.351006]  ? try_to_wake_up+0x7a/0xa20
      [87452.351541]  ? lock_release+0x20e/0x4c0
      [87452.352040]  ? lock_acquired+0x199/0x490
      [87452.352517]  ? wait_for_completion+0x81/0x110
      [87452.353000]  wait_for_completion+0xab/0x110
      [87452.353490]  start_delalloc_inodes+0x2af/0x390 [btrfs]
      [87452.353973]  btrfs_start_delalloc_roots+0x12d/0x250 [btrfs]
      [87452.354455]  flush_space+0x24f/0x660 [btrfs]
      [87452.355063]  btrfs_async_reclaim_metadata_space+0x1bb/0x480 [btrfs]
      [87452.355565]  process_one_work+0x24e/0x5e0
      [87452.356024]  worker_thread+0x20f/0x3b0
      [87452.356487]  ? process_one_work+0x5e0/0x5e0
      [87452.356973]  kthread+0x153/0x170
      [87452.357434]  ? kthread_mod_delayed_work+0xc0/0xc0
      [87452.357880]  ret_from_fork+0x22/0x30
      (...)
      < stack traces of several tasks waiting for the locks of the inodes of the
        clone operation >
      (...)
      [92867.444138] RSP: 002b:00007ffc3371bbe8 EFLAGS: 00000246 ORIG_RAX: 0000000000000052
      [92867.444624] RAX: ffffffffffffffda RBX: 00007ffc3371bea0 RCX: 00007f61efe73f97
      [92867.445116] RDX: 0000000000000000 RSI: 0000560fbd5d7a40 RDI: 0000560fbd5d8960
      [92867.445595] RBP: 00007ffc3371beb0 R08: 0000000000000001 R09: 0000000000000003
      [92867.446070] R10: 00007ffc3371b996 R11: 0000000000000246 R12: 0000000000000000
      [92867.446820] R13: 000000000000001f R14: 00007ffc3371bea0 R15: 00007ffc3371beb0
      [92867.447361] task:fsstress        state:D stack:    0 pid:2508238 ppid:2508153 flags:0x00004000
      [92867.447920] Call Trace:
      [92867.448435]  __schedule+0x5d1/0xcf0
      [92867.448934]  ? _raw_spin_unlock_irqrestore+0x3c/0x60
      [92867.449423]  schedule+0x45/0xe0
      [92867.449916]  __reserve_bytes+0x4a4/0xb10 [btrfs]
      [92867.450576]  ? finish_wait+0x90/0x90
      [92867.451202]  btrfs_reserve_metadata_bytes+0x29/0x190 [btrfs]
      [92867.451815]  btrfs_block_rsv_add+0x1f/0x50 [btrfs]
      [92867.452412]  start_transaction+0x2d1/0x760 [btrfs]
      [92867.453216]  clone_copy_inline_extent+0x333/0x490 [btrfs]
      [92867.453848]  ? lock_release+0x20e/0x4c0
      [92867.454539]  ? btrfs_search_slot+0x9a7/0xc30 [btrfs]
      [92867.455218]  btrfs_clone+0x569/0x7e0 [btrfs]
      [92867.455952]  btrfs_clone_files+0xf6/0x150 [btrfs]
      [92867.456588]  btrfs_remap_file_range+0x324/0x3d0 [btrfs]
      [92867.457213]  do_clone_file_range+0xd4/0x1f0
      [92867.457828]  vfs_clone_file_range+0x4d/0x230
      [92867.458355]  ? lock_release+0x20e/0x4c0
      [92867.458890]  ioctl_file_clone+0x8f/0xc0
      [92867.459377]  do_vfs_ioctl+0x342/0x750
      [92867.459913]  __x64_sys_ioctl+0x62/0xb0
      [92867.460377]  do_syscall_64+0x33/0x80
      [92867.460842]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
      (...)
      < stack traces of more tasks blocked on metadata reservation like the clone
        task above, because the async reclaim task has deadlocked >
      (...)
    
    Another thing to notice is that the worker task that is deadlocked when
    trying to flush the destination inode of the clone operation is at
    btrfs_invalidatepage(). This is simply because the clone operation has a
    destination offset greater than the i_size and we only update the i_size
    of the destination file after cloning an extent (just like we do in the
    buffered write path).
    
    Since the async reclaim path uses btrfs_start_delalloc_roots() to trigger
    the flushing of delalloc for all inodes that have delalloc, add a runtime
    flag to an inode to signal it should not be flushed, and for inodes with
    that flag set, start_delalloc_inodes() will simply skip them. When the
    cloning code needs to dirty a page to copy an inline extent, set that flag
    on the inode and then clear it when the clone operation finishes.
    
    This could be sporadically triggered with test case generic/269 from
    fstests, which exercises many fsstress processes running in parallel with
    several dd processes filling up the entire filesystem.
    
    CC: stable@vger.kernel.org # 5.9+
    Fixes: 05a5a7621ce6 ("Btrfs: implement full reflink support for inline extents")
    Reviewed-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 87738164592fdd531b068d069911aaa9f3c41c9d
Author: Filipe Manana <fdmanana@suse.com>
Date:   Fri Nov 13 11:21:49 2020 +0000

    btrfs: skip unnecessary searches for xattrs when logging an inode
    
    [ Upstream commit f2f121ab500d0457cc9c6f54269d21ffdf5bd304 ]
    
    Every time we log an inode we lookup in the fs/subvol tree for xattrs and
    if we have any, log them into the log tree. However it is very common to
    have inodes without any xattrs, so doing the search wastes times, but more
    importantly it adds contention on the fs/subvol tree locks, either making
    the logging code block and wait for tree locks or making the logging code
    making other concurrent operations block and wait.
    
    The most typical use cases where xattrs are used are when capabilities or
    ACLs are defined for an inode, or when SELinux is enabled.
    
    This change makes the logging code detect when an inode does not have
    xattrs and skip the xattrs search the next time the inode is logged,
    unless the inode is evicted and loaded again or a xattr is added to the
    inode. Therefore skipping the search for xattrs on inodes that don't ever
    have xattrs and are fsynced with some frequency.
    
    The following script that calls dbench was used to measure the impact of
    this change on a VM with 8 CPUs, 16Gb of ram, using a raw NVMe device
    directly (no intermediary filesystem on the host) and using a non-debug
    kernel (default configuration on Debian distributions):
    
      $ cat test.sh
      #!/bin/bash
    
      DEV=/dev/sdk
      MNT=/mnt/sdk
      MOUNT_OPTIONS="-o ssd"
    
      mkfs.btrfs -f -m single -d single $DEV
      mount $MOUNT_OPTIONS $DEV $MNT
    
      dbench -D $MNT -t 200 40
    
      umount $MNT
    
    The results before this change:
    
     Operation      Count    AvgLat    MaxLat
     ----------------------------------------
     NTCreateX    5761605     0.172   312.057
     Close        4232452     0.002    10.927
     Rename        243937     1.406   277.344
     Unlink       1163456     0.631   298.402
     Deltree          160    11.581   221.107
     Mkdir             80     0.003     0.005
     Qpathinfo    5221410     0.065   122.309
     Qfileinfo     915432     0.001     3.333
     Qfsinfo       957555     0.003     3.992
     Sfileinfo     469244     0.023    20.494
     Find         2018865     0.448   123.659
     WriteX       2874851     0.049   118.529
     ReadX        9030579     0.004    21.654
     LockX          18754     0.003     4.423
     UnlockX        18754     0.002     0.331
     Flush         403792    10.944   359.494
    
    Throughput 908.444 MB/sec  40 clients  40 procs  max_latency=359.500 ms
    
    The results after this change:
    
     Operation      Count    AvgLat    MaxLat
     ----------------------------------------
     NTCreateX    6442521     0.159   230.693
     Close        4732357     0.002    10.972
     Rename        272809     1.293   227.398
     Unlink       1301059     0.563   218.500
     Deltree          160     7.796    54.887
     Mkdir             80     0.008     0.478
     Qpathinfo    5839452     0.047   124.330
     Qfileinfo    1023199     0.001     4.996
     Qfsinfo      1070760     0.003     5.709
     Sfileinfo     524790     0.033    21.765
     Find         2257658     0.314   125.611
     WriteX       3211520     0.040   232.135
     ReadX        10098969     0.004    25.340
     LockX          20974     0.003     1.569
     UnlockX        20974     0.002     3.475
     Flush         451553    10.287   331.037
    
    Throughput 1011.77 MB/sec  40 clients  40 procs  max_latency=331.045 ms
    
    +10.8% throughput, -8.2% max latency
    
    Reviewed-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e28ace868c1e945f8c61cee147168e26d6c9f2d6
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Thu Dec 3 23:31:26 2020 +0100

    scsi: ufs: Fix -Wsometimes-uninitialized warning
    
    [ Upstream commit 4c60244dc37262023d24b167e245055c06bc0b77 ]
    
    clang complains about a possible code path in which a variable is used
    without an initialization:
    
    drivers/scsi/ufs/ufshcd.c:7690:3: error: variable 'sdp' is used uninitialized whenever 'if' condition is false [-Werror,-Wsometimes-uninitialized]
                    BUG_ON(1);
                    ^~~~~~~~~
    include/asm-generic/bug.h:63:36: note: expanded from macro 'BUG_ON'
     #define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0)
                                       ^~~~~~~~~~~~~~~~~~~
    
    Turn the BUG_ON(1) into an unconditional BUG() that makes it clear to clang
    that this code path is never hit.
    
    Link: https://lore.kernel.org/r/20201203223137.1205933-1-arnd@kernel.org
    Fixes: 4f3e900b6282 ("scsi: ufs: Clear UAC for FFU and RPMB LUNs")
    Reviewed-by: Avri Altman <avri.altman@wdc.com>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 458b40598dc0ccbbb1d3522f56a287ea0a127165
Author: Matthew Wilcox (Oracle) <willy@infradead.org>
Date:   Wed Jan 6 16:09:26 2021 +0000

    io_uring: Fix return value from alloc_fixed_file_ref_node
    
    [ Upstream commit 3e2224c5867fead6c0b94b84727cc676ac6353a3 ]
    
    alloc_fixed_file_ref_node() currently returns an ERR_PTR on failure.
    io_sqe_files_unregister() expects it to return NULL and since it can only
    return -ENOMEM, it makes more sense to change alloc_fixed_file_ref_node()
    to behave that way.
    
    Fixes: 1ffc54220c44 ("io_uring: fix io_sqe_files_unregister() hangs")
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 51495b719515ddae417e4bafc7e100c34833af4b
Author: Steven Price <steven.price@arm.com>
Date:   Thu Oct 29 17:00:47 2020 +0000

    drm/panfrost: Don't corrupt the queue mutex on open/close
    
    [ Upstream commit a17d609e3e216c406f7c0cec2a94086a4401ac06 ]
    
    The mutex within the panfrost_queue_state should have the lifetime of
    the queue, however it was erroneously initialised/destroyed during
    panfrost_job_{open,close} which is called every time a client
    opens/closes the drm node.
    
    Move the initialisation/destruction to panfrost_job_{init,fini} where it
    belongs.
    
    Fixes: 1a11a88cfd9a ("drm/panfrost: Fix job timeout handling")
    Signed-off-by: Steven Price <steven.price@arm.com>
    Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
    Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20201029170047.30564-1-steven.price@arm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9d7751a39a19b0090300b2b0498e397f9047e125
Author: Bjorn Andersson <bjorn.andersson@linaro.org>
Date:   Tue Jan 5 16:50:38 2021 -0800

    iommu/arm-smmu-qcom: Initialize SCTLR of the bypass context
    
    [ Upstream commit aded8c7c2b72f846a07a2c736b8e75bb8cf50a87 ]
    
    On SM8150 it's occasionally observed that the boot hangs in between the
    writing of SMEs and context banks in arm_smmu_device_reset().
    
    The problem seems to coincide with a display refresh happening after
    updating the stream mapping, but before clearing - and there by
    disabling translation - the context bank picked to emulate translation
    bypass.
    
    Resolve this by explicitly disabling the bypass context already in
    cfg_probe.
    
    Fixes: f9081b8ff593 ("iommu/arm-smmu-qcom: Implement S2CR quirk")
    Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Link: https://lore.kernel.org/r/20210106005038.4152731-1-bjorn.andersson@linaro.org
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 85bbe2e64ab430af3c27a0bc4e22dae04a5e10e6
Author: Weihang Li <liweihang@huawei.com>
Date:   Fri Dec 11 09:37:30 2020 +0800

    RDMA/hns: Avoid filling sl in high 3 bits of vlan_id
    
    [ Upstream commit 94a8c4dfcdb2b4fcb3dfafc39c1033a0b4637c86 ]
    
    Only the low 12 bits of vlan_id is valid, and service level has been
    filled in Address Vector. So there is no need to fill sl in vlan_id in
    Address Vector.
    
    Fixes: 7406c0036f85 ("RDMA/hns: Only record vlan info for HIP08")
    Link: https://lore.kernel.org/r/1607650657-35992-5-git-send-email-liweihang@huawei.com
    Signed-off-by: Weihang Li <liweihang@huawei.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 85e25e2370a20352b72af34940fb32746a64fc28
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Tue Jan 12 21:17:26 2021 +0000

    io_uring: patch up IOPOLL overflow_flush sync
    
    commit 6c503150ae33ee19036255cfda0998463613352c upstream
    
    IOPOLL skips completion locking but keeps it under uring_lock, thus
    io_cqring_overflow_flush() and so io_cqring_events() need additional
    locking with uring_lock in some cases for IOPOLL.
    
    Remove __io_cqring_overflow_flush() from io_cqring_events(), introduce a
    wrapper around flush doing needed synchronisation and call it by hand.
    
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bc924dd21ecf8a8363091ef02fdac3115d024b91
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Tue Jan 12 21:17:25 2021 +0000

    io_uring: limit {io|sq}poll submit locking scope
    
    commit 89448c47b8452b67c146dc6cad6f737e004c5caf upstream
    
    We don't need to take uring_lock for SQPOLL|IOPOLL to do
    io_cqring_overflow_flush() when cq_overflow_list is empty, remove it
    from the hot path.
    
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1d5e50da5cc7483849b815ee34559be4f3902a3b
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Tue Jan 12 21:17:24 2021 +0000

    io_uring: synchronise IOPOLL on task_submit fail
    
    commit 81b6d05ccad4f3d8a9dfb091fb46ad6978ee40e4 upstream
    
    io_req_task_submit() might be called for IOPOLL, do the fail path under
    uring_lock to comply with IOPOLL synchronisation based solely on it.
    
    Cc: stable@vger.kernel.org # 5.5+
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bca9ca5a603f6c5586a7dfd35e06abe6d5fcd559
Author: Christophe Leroy <christophe.leroy@csgroup.eu>
Date:   Wed Jan 13 06:40:20 2021 +0000

    powerpc/32s: Fix RTAS machine check with VMAP stack
    
    [ Upstream commit 98bf2d3f4970179c702ef64db658e0553bc6ef3a ]
    
    When we have VMAP stack, exception prolog 1 sets r1, not r11.
    
    When it is not an RTAS machine check, don't trash r1 because it is
    needed by prolog 1.
    
    Fixes: da7bb43ab9da ("powerpc/32: Fix vmap stack - Properly set r1 before activating MMU")
    Fixes: d2e006036082 ("powerpc/32: Use SPRN_SPRG_SCRATCH2 in exception prologs")
    Cc: stable@vger.kernel.org # v5.10+
    Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    [mpe: Squash in fixup for RTAS machine check from Christophe]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/bc77d61d1c18940e456a2dee464f1e2eda65a3f0.1608621048.git.christophe.leroy@csgroup.eu
    Signed-off-by: Sasha Levin <sashal@kernel.org>