commit eadf658bb74981dd2509d9e1863574b9f0f90fff
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Apr 20 09:12:51 2022 +0200

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

commit bd3c0618fbb91dabfbb14321a63318d41c455cd9
Author: Martin Povišer <povik+lin@cutebit.org>
Date:   Tue Mar 29 20:38:17 2022 +0200

    i2c: pasemi: Wait for write xfers to finish
    
    commit bd8963e602c77adc76dbbbfc3417c3cf14fed76b upstream.
    
    Wait for completion of write transfers before returning from the driver.
    At first sight it may seem advantageous to leave write transfers queued
    for the controller to carry out on its own time, but there's a couple of
    issues with it:
    
     * Driver doesn't check for FIFO space.
    
     * The queued writes can complete while the driver is in its I2C read
       transfer path which means it will get confused by the raising of
       XEN (the 'transaction ended' signal). This can cause a spurious
       ENODATA error due to premature reading of the MRXFIFO register.
    
    Adding the wait fixes some unreliability issues with the driver. There's
    some efficiency cost to it (especially with pasemi_smb_waitready doing
    its polling), but that will be alleviated once the driver receives
    interrupt support.
    
    Fixes: beb58aa39e6e ("i2c: PA Semi SMBus driver")
    Signed-off-by: Martin Povišer <povik+lin@cutebit.org>
    Reviewed-by: Sven Peter <sven@svenpeter.dev>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bd4ad32e44ea472c83c7c21e5bee29a1bb1c24e8
Author: Nadav Amit <namit@vmware.com>
Date:   Sat Mar 19 00:20:15 2022 -0700

    smp: Fix offline cpu check in flush_smp_call_function_queue()
    
    commit 9e949a3886356fe9112c6f6f34a6e23d1d35407f upstream.
    
    The check in flush_smp_call_function_queue() for callbacks that are sent
    to offline CPUs currently checks whether the queue is empty.
    
    However, flush_smp_call_function_queue() has just deleted all the
    callbacks from the queue and moved all the entries into a local list.
    This checks would only be positive if some callbacks were added in the
    short time after llist_del_all() was called. This does not seem to be
    the intention of this check.
    
    Change the check to look at the local list to which the entries were
    moved instead of the queue from which all the callbacks were just
    removed.
    
    Fixes: 8d056c48e4862 ("CPU hotplug, smp: flush any pending IPI callbacks before CPU offline")
    Signed-off-by: Nadav Amit <namit@vmware.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Link: https://lore.kernel.org/r/20220319072015.1495036-1-namit@vmware.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c64e2ed5cc376e137e572babfd2edc38b2cfb61b
Author: Nathan Chancellor <nathan@kernel.org>
Date:   Thu Dec 23 15:21:41 2021 -0700

    ARM: davinci: da850-evm: Avoid NULL pointer dereference
    
    commit 83a1cde5c74bfb44b49cb2a940d044bb2380f4ea upstream.
    
    With newer versions of GCC, there is a panic in da850_evm_config_emac()
    when booting multi_v5_defconfig in QEMU under the palmetto-bmc machine:
    
    Unable to handle kernel NULL pointer dereference at virtual address 00000020
    pgd = (ptrval)
    [00000020] *pgd=00000000
    Internal error: Oops: 5 [#1] PREEMPT ARM
    Modules linked in:
    CPU: 0 PID: 1 Comm: swapper Not tainted 5.15.0 #1
    Hardware name: Generic DT based system
    PC is at da850_evm_config_emac+0x1c/0x120
    LR is at do_one_initcall+0x50/0x1e0
    
    The emac_pdata pointer in soc_info is NULL because davinci_soc_info only
    gets populated on davinci machines but da850_evm_config_emac() is called
    on all machines via device_initcall().
    
    Move the rmii_en assignment below the machine check so that it is only
    dereferenced when running on a supported SoC.
    
    Fixes: bae105879f2f ("davinci: DA850/OMAP-L138 EVM: implement autodetect of RMII PHY")
    Signed-off-by: Nathan Chancellor <nathan@kernel.org>
    Reviewed-by: Arnd Bergmann <arnd@arndb.de>
    Reviewed-by: Bartosz Golaszewski <brgl@bgdev.pl>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/YcS4xVWs6bQlQSPC@archlinux-ax161/
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 74b68f5249f16c5f7f675d0f604fa6ae20e3a151
Author: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Date:   Fri Apr 8 16:03:42 2022 +0200

    ipv6: fix panic when forwarding a pkt with no in6 dev
    
    commit e3fa461d8b0e185b7da8a101fe94dfe6dd500ac0 upstream.
    
    kongweibin reported a kernel panic in ip6_forward() when input interface
    has no in6 dev associated.
    
    The following tc commands were used to reproduce this panic:
    tc qdisc del dev vxlan100 root
    tc qdisc add dev vxlan100 root netem corrupt 5%
    
    CC: stable@vger.kernel.org
    Fixes: ccd27f05ae7b ("ipv6: fix 'disable_policy' for fwd packets")
    Reported-by: kongweibin <kongweibin2@huawei.com>
    Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eb04e3112a3516e483d60a9af9762961702a6c1b
Author: Fabio M. De Francesco <fmdefrancesco@gmail.com>
Date:   Sat Apr 9 03:26:55 2022 +0200

    ALSA: pcm: Test for "silence" field in struct "pcm_format_data"
    
    commit 2f7a26abb8241a0208c68d22815aa247c5ddacab upstream.
    
    Syzbot reports "KASAN: null-ptr-deref Write in
    snd_pcm_format_set_silence".[1]
    
    It is due to missing validation of the "silence" field of struct
    "pcm_format_data" in "pcm_formats" array.
    
    Add a test for valid "pat" and, if it is not so, return -EINVAL.
    
    [1] https://lore.kernel.org/lkml/000000000000d188ef05dc2c7279@google.com/
    
    Reported-and-tested-by: syzbot+205eb15961852c2c5974@syzkaller.appspotmail.com
    Signed-off-by: Fabio M. De Francesco <fmdefrancesco@gmail.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220409012655.9399-1-fmdefrancesco@gmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 24a6cc93b7821d8420284b643408d39c6e61fcb2
Author: Tim Crawford <tcrawford@system76.com>
Date:   Tue Apr 5 12:20:29 2022 -0600

    ALSA: hda/realtek: Add quirk for Clevo PD50PNT
    
    commit 9eb6f5c388060d8cef3c8b616cc31b765e022359 upstream.
    
    Fixes speaker output and headset detection on Clevo PD50PNT.
    
    Signed-off-by: Tim Crawford <tcrawford@system76.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220405182029.27431-1-tcrawford@system76.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8b1010a6ae05fd52f6e989c05083dc134e4a3671
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Wed Apr 6 00:28:15 2022 +0200

    gcc-plugins: latent_entropy: use /dev/urandom
    
    commit c40160f2998c897231f8454bf797558d30a20375 upstream.
    
    While the latent entropy plugin mostly doesn't derive entropy from
    get_random_const() for measuring the call graph, when __latent_entropy is
    applied to a constant, then it's initialized statically to output from
    get_random_const(). In that case, this data is derived from a 64-bit
    seed, which means a buffer of 512 bits doesn't really have that amount
    of compile-time entropy.
    
    This patch fixes that shortcoming by just buffering chunks of
    /dev/urandom output and doling it out as requested.
    
    At the same time, it's important that we don't break the use of
    -frandom-seed, for people who want the runtime benefits of the latent
    entropy plugin, while still having compile-time determinism. In that
    case, we detect whether gcc's set_random_seed() has been called by
    making a call to get_random_seed(noinit=true) in the plugin init
    function, which is called after set_random_seed() is called but before
    anything that calls get_random_seed(noinit=false), and seeing if it's
    zero or not. If it's not zero, we're in deterministic mode, and so we
    just generate numbers with a basic xorshift prng.
    
    Note that we don't detect if -frandom-seed is being used using the
    documented local_tick variable, because it's assigned via:
       local_tick = (unsigned) tv.tv_sec * 1000 + tv.tv_usec / 1000;
    which may well overflow and become -1 on its own, and so isn't
    reliable: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105171
    
    [kees: The 256 byte rnd_buf size was chosen based on average (250),
     median (64), and std deviation (575) bytes of used entropy for a
     defconfig x86_64 build]
    
    Fixes: 38addce8b600 ("gcc-plugins: Add latent_entropy plugin")
    Cc: stable@vger.kernel.org
    Cc: PaX Team <pageexec@freemail.hu>
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Link: https://lore.kernel.org/r/20220405222815.21155-1-Jason@zx2c4.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7f4f020286e0bd4aaf40512c80c63a5e5bd629bc
Author: Patrick Wang <patrick.wang.shcn@gmail.com>
Date:   Thu Apr 14 19:14:04 2022 -0700

    mm: kmemleak: take a full lowmem check in kmemleak_*_phys()
    
    commit 23c2d497de21f25898fbea70aeb292ab8acc8c94 upstream.
    
    The kmemleak_*_phys() apis do not check the address for lowmem's min
    boundary, while the caller may pass an address below lowmem, which will
    trigger an oops:
    
      # echo scan > /sys/kernel/debug/kmemleak
      Unable to handle kernel paging request at virtual address ff5fffffffe00000
      Oops [#1]
      Modules linked in:
      CPU: 2 PID: 134 Comm: bash Not tainted 5.18.0-rc1-next-20220407 #33
      Hardware name: riscv-virtio,qemu (DT)
      epc : scan_block+0x74/0x15c
       ra : scan_block+0x72/0x15c
      epc : ffffffff801e5806 ra : ffffffff801e5804 sp : ff200000104abc30
       gp : ffffffff815cd4e8 tp : ff60000004cfa340 t0 : 0000000000000200
       t1 : 00aaaaaac23954cc t2 : 00000000000003ff s0 : ff200000104abc90
       s1 : ffffffff81b0ff28 a0 : 0000000000000000 a1 : ff5fffffffe01000
       a2 : ffffffff81b0ff28 a3 : 0000000000000002 a4 : 0000000000000001
       a5 : 0000000000000000 a6 : ff200000104abd7c a7 : 0000000000000005
       s2 : ff5fffffffe00ff9 s3 : ffffffff815cd998 s4 : ffffffff815d0e90
       s5 : ffffffff81b0ff28 s6 : 0000000000000020 s7 : ffffffff815d0eb0
       s8 : ffffffffffffffff s9 : ff5fffffffe00000 s10: ff5fffffffe01000
       s11: 0000000000000022 t3 : 00ffffffaa17db4c t4 : 000000000000000f
       t5 : 0000000000000001 t6 : 0000000000000000
      status: 0000000000000100 badaddr: ff5fffffffe00000 cause: 000000000000000d
        scan_gray_list+0x12e/0x1a6
        kmemleak_scan+0x2aa/0x57e
        kmemleak_write+0x32a/0x40c
        full_proxy_write+0x56/0x82
        vfs_write+0xa6/0x2a6
        ksys_write+0x6c/0xe2
        sys_write+0x22/0x2a
        ret_from_syscall+0x0/0x2
    
    The callers may not quite know the actual address they pass(e.g. from
    devicetree).  So the kmemleak_*_phys() apis should guarantee the address
    they finally use is in lowmem range, so check the address for lowmem's
    min boundary.
    
    Link: https://lkml.kernel.org/r/20220413122925.33856-1-patrick.wang.shcn@gmail.com
    Signed-off-by: Patrick Wang <patrick.wang.shcn@gmail.com>
    Acked-by: Catalin Marinas <catalin.marinas@arm.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c0ca2da695d32e7e3c1d6ad31d17b499083645bf
Author: Juergen Gross <jgross@suse.com>
Date:   Thu Apr 14 19:13:43 2022 -0700

    mm, page_alloc: fix build_zonerefs_node()
    
    commit e553f62f10d93551eb883eca227ac54d1a4fad84 upstream.
    
    Since commit 6aa303defb74 ("mm, vmscan: only allocate and reclaim from
    zones with pages managed by the buddy allocator") only zones with free
    memory are included in a built zonelist.  This is problematic when e.g.
    all memory of a zone has been ballooned out when zonelists are being
    rebuilt.
    
    The decision whether to rebuild the zonelists when onlining new memory
    is done based on populated_zone() returning 0 for the zone the memory
    will be added to.  The new zone is added to the zonelists only, if it
    has free memory pages (managed_zone() returns a non-zero value) after
    the memory has been onlined.  This implies, that onlining memory will
    always free the added pages to the allocator immediately, but this is
    not true in all cases: when e.g. running as a Xen guest the onlined new
    memory will be added only to the ballooned memory list, it will be freed
    only when the guest is being ballooned up afterwards.
    
    Another problem with using managed_zone() for the decision whether a
    zone is being added to the zonelists is, that a zone with all memory
    used will in fact be removed from all zonelists in case the zonelists
    happen to be rebuilt.
    
    Use populated_zone() when building a zonelist as it has been done before
    that commit.
    
    There was a report that QubesOS (based on Xen) is hitting this problem.
    Xen has switched to use the zone device functionality in kernel 5.9 and
    QubesOS wants to use memory hotplugging for guests in order to be able
    to start a guest with minimal memory and expand it as needed.  This was
    the report leading to the patch.
    
    Link: https://lkml.kernel.org/r/20220407120637.9035-1-jgross@suse.com
    Fixes: 6aa303defb74 ("mm, vmscan: only allocate and reclaim from zones with pages managed by the buddy allocator")
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reported-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Acked-by: David Hildenbrand <david@redhat.com>
    Cc: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
    Reviewed-by: Wei Yang <richard.weiyang@gmail.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 753b9d220a7d36dac70e7c6d05492d10d6f9dd36
Author: Duoming Zhou <duoming@zju.edu.cn>
Date:   Tue Apr 5 21:22:06 2022 +0800

    drivers: net: slip: fix NPD bug in sl_tx_timeout()
    
    [ Upstream commit ec4eb8a86ade4d22633e1da2a7d85a846b7d1798 ]
    
    When a slip driver is detaching, the slip_close() will act to
    cleanup necessary resources and sl->tty is set to NULL in
    slip_close(). Meanwhile, the packet we transmit is blocked,
    sl_tx_timeout() will be called. Although slip_close() and
    sl_tx_timeout() use sl->lock to synchronize, we don`t judge
    whether sl->tty equals to NULL in sl_tx_timeout() and the
    null pointer dereference bug will happen.
    
       (Thread 1)                 |      (Thread 2)
                                  | slip_close()
                                  |   spin_lock_bh(&sl->lock)
                                  |   ...
    ...                           |   sl->tty = NULL //(1)
    sl_tx_timeout()               |   spin_unlock_bh(&sl->lock)
      spin_lock(&sl->lock);       |
      ...                         |   ...
      tty_chars_in_buffer(sl->tty)|
        if (tty->ops->..) //(2)   |
        ...                       |   synchronize_rcu()
    
    We set NULL to sl->tty in position (1) and dereference sl->tty
    in position (2).
    
    This patch adds check in sl_tx_timeout(). If sl->tty equals to
    NULL, sl_tx_timeout() will goto out.
    
    Signed-off-by: Duoming Zhou <duoming@zju.edu.cn>
    Reviewed-by: Jiri Slaby <jirislaby@kernel.org>
    Link: https://lore.kernel.org/r/20220405132206.55291-1-duoming@zju.edu.cn
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f49dfedc6f6e9de223c5d2be57652ccbcaeb820a
Author: Alexey Galakhov <agalakhov@gmail.com>
Date:   Wed Mar 9 22:25:35 2022 +0100

    scsi: mvsas: Add PCI ID of RocketRaid 2640
    
    [ Upstream commit 5f2bce1e222028dc1c15f130109a17aa654ae6e8 ]
    
    The HighPoint RocketRaid 2640 is a low-cost SAS controller based on Marvell
    chip. The chip in question was already supported by the kernel, just the
    PCI ID of this particular board was missing.
    
    Link: https://lore.kernel.org/r/20220309212535.402987-1-agalakhov@gmail.com
    Signed-off-by: Alexey Galakhov <agalakhov@gmail.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e0082f71e5d2481ce59d49dbfd3677f5fdc85836
Author: Roman Li <Roman.Li@amd.com>
Date:   Thu Mar 17 19:55:05 2022 -0400

    drm/amd/display: Fix allocate_mst_payload assert on resume
    
    [ Upstream commit f4346fb3edf7720db3f7f5e1cab1f667cd024280 ]
    
    [Why]
    On resume we do link detection for all non-MST connectors.
    MST is handled separately. However the condition for telling
    if connector is on mst branch is not enough for mst hub case.
    Link detection for mst branch link leads to mst topology reset.
    That causes assert in dc_link_allocate_mst_payload()
    
    [How]
    Use link type as indicator for mst link.
    
    Reviewed-by: Wayne Lin <Wayne.Lin@amd.com>
    Acked-by: Alex Hung <alex.hung@amd.com>
    Signed-off-by: Roman Li <Roman.Li@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5582faa69aade9de6a0ccd72398da32700f1e9b1
Author: Joey Gouly <joey.gouly@arm.com>
Date:   Tue Apr 5 11:47:33 2022 +0100

    arm64: alternatives: mark patch_alternative() as `noinstr`
    
    [ Upstream commit a2c0b0fbe01419f8f5d1c0b9c581631f34ffce8b ]
    
    The alternatives code must be `noinstr` such that it does not patch itself,
    as the cache invalidation is only performed after all the alternatives have
    been applied.
    
    Mark patch_alternative() as `noinstr`. Mark branch_insn_requires_update()
    and get_alt_insn() with `__always_inline` since they are both only called
    through patch_alternative().
    
    Booting a kernel in QEMU TCG with KCSAN=y and ARM64_USE_LSE_ATOMICS=y caused
    a boot hang:
    [    0.241121] CPU: All CPU(s) started at EL2
    
    The alternatives code was patching the atomics in __tsan_read4() from LL/SC
    atomics to LSE atomics.
    
    The following fragment is using LL/SC atomics in the .text section:
      | <__tsan_unaligned_read4+304>:     ldxr    x6, [x2]
      | <__tsan_unaligned_read4+308>:     add     x6, x6, x5
      | <__tsan_unaligned_read4+312>:     stxr    w7, x6, [x2]
      | <__tsan_unaligned_read4+316>:     cbnz    w7, <__tsan_unaligned_read4+304>
    
    This LL/SC atomic sequence was to be replaced with LSE atomics. However since
    the alternatives code was instrumentable, __tsan_read4() was being called after
    only the first instruction was replaced, which led to the following code in memory:
      | <__tsan_unaligned_read4+304>:     ldadd   x5, x6, [x2]
      | <__tsan_unaligned_read4+308>:     add     x6, x6, x5
      | <__tsan_unaligned_read4+312>:     stxr    w7, x6, [x2]
      | <__tsan_unaligned_read4+316>:     cbnz    w7, <__tsan_unaligned_read4+304>
    
    This caused an infinite loop as the `stxr` instruction never completed successfully,
    so `w7` was always 0.
    
    Signed-off-by: Joey Gouly <joey.gouly@arm.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Link: https://lore.kernel.org/r/20220405104733.11476-1-joey.gouly@arm.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ebca89305780ee472661d8558a3fb84f50aeae98
Author: Leo Ruan <tingquan.ruan@cn.bosch.com>
Date:   Mon Feb 7 16:14:11 2022 +0100

    gpu: ipu-v3: Fix dev_dbg frequency output
    
    [ Upstream commit 070a88fd4a03f921b73a2059e97d55faaa447dab ]
    
    This commit corrects the printing of the IPU clock error percentage if
    it is between -0.1% to -0.9%. For example, if the pixel clock requested
    is 27.2 MHz but only 27.0 MHz can be achieved the deviation is -0.8%.
    But the fixed point math had a flaw and calculated error of 0.2%.
    
    Before:
      Clocks: IPU 270000000Hz DI 24716667Hz Needed 27200000Hz
      IPU clock can give 27000000 with divider 10, error 0.2%
      Want 27200000Hz IPU 270000000Hz DI 24716667Hz using IPU, 27000000Hz
    
    After:
      Clocks: IPU 270000000Hz DI 24716667Hz Needed 27200000Hz
      IPU clock can give 27000000 with divider 10, error -0.8%
      Want 27200000Hz IPU 270000000Hz DI 24716667Hz using IPU, 27000000Hz
    
    Signed-off-by: Leo Ruan <tingquan.ruan@cn.bosch.com>
    Signed-off-by: Mark Jonas <mark.jonas@de.bosch.com>
    Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
    Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
    Link: https://lore.kernel.org/r/20220207151411.5009-1-mark.jonas@de.bosch.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f00cee2cc27711530be3a65e621da340cb6d1849
Author: Christian Lamparter <chunkeey@gmail.com>
Date:   Sat Mar 19 21:11:03 2022 +0100

    ata: libata-core: Disable READ LOG DMA EXT for Samsung 840 EVOs
    
    [ Upstream commit 5399752299396a3c9df6617f4b3c907d7aa4ded8 ]
    
    Samsung' 840 EVO with the latest firmware (EXT0DB6Q) locks up with
    the a message: "READ LOG DMA EXT failed, trying PIO" during boot.
    
    Initially this was discovered because it caused a crash
    with the sata_dwc_460ex controller on a WD MyBook Live DUO.
    
    The reporter "Tice Rex" which has the unique opportunity that he
    has two Samsung 840 EVO SSD! One with the older firmware "EXT0BB0Q"
    which booted fine and didn't expose "READ LOG DMA EXT". But the
    newer/latest firmware "EXT0DB6Q" caused the headaches.
    
    BugLink: https://github.com/openwrt/openwrt/issues/9505
    Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
    Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 05b4c37fca84976ab9e3873d36fe53cd88d45408
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Thu Mar 31 22:42:44 2022 -0700

    net: micrel: fix KS8851_MLL Kconfig
    
    [ Upstream commit c3efcedd272aa6dd5929e20cf902a52ddaa1197a ]
    
    KS8851_MLL selects MICREL_PHY, which depends on PTP_1588_CLOCK_OPTIONAL,
    so make KS8851_MLL also depend on PTP_1588_CLOCK_OPTIONAL since
    'select' does not follow any dependency chains.
    
    Fixes kconfig warning and build errors:
    
    WARNING: unmet direct dependencies detected for MICREL_PHY
      Depends on [m]: NETDEVICES [=y] && PHYLIB [=y] && PTP_1588_CLOCK_OPTIONAL [=m]
      Selected by [y]:
      - KS8851_MLL [=y] && NETDEVICES [=y] && ETHERNET [=y] && NET_VENDOR_MICREL [=y] && HAS_IOMEM [=y]
    
    ld: drivers/net/phy/micrel.o: in function `lan8814_ts_info':
    micrel.c:(.text+0xb35): undefined reference to `ptp_clock_index'
    ld: drivers/net/phy/micrel.o: in function `lan8814_probe':
    micrel.c:(.text+0x2586): undefined reference to `ptp_clock_register'
    
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: Jakub Kicinski <kuba@kernel.org>
    Cc: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e1771560f95bc4f6c9b9a7337d11c0454de0c232
Author: Tyrel Datwyler <tyreld@linux.ibm.com>
Date:   Tue Mar 22 12:44:43 2022 -0700

    scsi: ibmvscsis: Increase INITIAL_SRP_LIMIT to 1024
    
    [ Upstream commit 0bade8e53279157c7cc9dd95d573b7e82223d78a ]
    
    The adapter request_limit is hardcoded to be INITIAL_SRP_LIMIT which is
    currently an arbitrary value of 800. Increase this value to 1024 which
    better matches the characteristics of the typical IBMi Initiator that
    supports 32 LUNs and a queue depth of 32.
    
    This change also has the secondary benefit of being a power of two as
    required by the kfifo API. Since, Commit ab9bb6318b09 ("Partially revert
    "kfifo: fix kfifo_alloc() and kfifo_init()"") the size of IU pool for each
    target has been rounded down to 512 when attempting to kfifo_init() those
    pools with the current request_limit size of 800.
    
    Link: https://lore.kernel.org/r/20220322194443.678433-1-tyreld@linux.ibm.com
    Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e3e0e067d5b34e4a68e3cc55f8eebc413f56f8ed
Author: Xiaoguang Wang <xiaoguang.wang@linux.alibaba.com>
Date:   Fri Mar 11 21:22:05 2022 +0800

    scsi: target: tcmu: Fix possible page UAF
    
    [ Upstream commit a6968f7a367f128d120447360734344d5a3d5336 ]
    
    tcmu_try_get_data_page() looks up pages under cmdr_lock, but it does not
    take refcount properly and just returns page pointer. When
    tcmu_try_get_data_page() returns, the returned page may have been freed by
    tcmu_blocks_release().
    
    We need to get_page() under cmdr_lock to avoid concurrent
    tcmu_blocks_release().
    
    Link: https://lore.kernel.org/r/20220311132206.24515-1-xiaoguang.wang@linux.alibaba.com
    Reviewed-by: Bodo Stroesser <bostroesser@gmail.com>
    Signed-off-by: Xiaoguang Wang <xiaoguang.wang@linux.alibaba.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 60b7e4b5a5dbf0ea097e82073d169e0009aa13ee
Author: Michael Kelley <mikelley@microsoft.com>
Date:   Sun Mar 27 08:25:10 2022 -0700

    Drivers: hv: vmbus: Prevent load re-ordering when reading ring buffer
    
    [ Upstream commit b6cae15b5710c8097aad26a2e5e752c323ee5348 ]
    
    When reading a packet from a host-to-guest ring buffer, there is no
    memory barrier between reading the write index (to see if there is
    a packet to read) and reading the contents of the packet. The Hyper-V
    host uses store-release when updating the write index to ensure that
    writes of the packet data are completed first. On the guest side,
    the processor can reorder and read the packet data before the write
    index, and sometimes get stale packet data. Getting such stale packet
    data has been observed in a reproducible case in a VM on ARM64.
    
    Fix this by using virt_load_acquire() to read the write index,
    ensuring that reads of the packet data cannot be reordered
    before it. Preventing such reordering is logically correct, and
    with this change, getting stale data can no longer be reproduced.
    
    Signed-off-by: Michael Kelley <mikelley@microsoft.com>
    Reviewed-by: Andrea Parri (Microsoft) <parri.andrea@gmail.com>
    Link: https://lore.kernel.org/r/1648394710-33480-1-git-send-email-mikelley@microsoft.com
    Signed-off-by: Wei Liu <wei.liu@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 94869bb0de69a812f70231b0eb480bb2f7ae73a6
Author: QintaoShen <unSimple1993@163.com>
Date:   Thu Mar 24 16:26:23 2022 +0800

    drm/amdkfd: Check for potential null return of kmalloc_array()
    
    [ Upstream commit ebbb7bb9e80305820dc2328a371c1b35679f2667 ]
    
    As the kmalloc_array() may return null, the 'event_waiters[i].wait' would lead to null-pointer dereference.
    Therefore, it is better to check the return value of kmalloc_array() to avoid this confusion.
    
    Signed-off-by: QintaoShen <unSimple1993@163.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ce07ef076e52096569e152abf4c82c8044df82f6
Author: Aurabindo Pillai <aurabindo.pillai@amd.com>
Date:   Tue Mar 15 14:53:24 2022 -0400

    drm/amd: Add USBC connector ID
    
    [ Upstream commit c5c948aa894a831f96fccd025e47186b1ee41615 ]
    
    [Why&How] Add a dedicated AMDGPU specific ID for use with
    newer ASICs that support USB-C output
    
    Signed-off-by: Aurabindo Pillai <aurabindo.pillai@amd.com>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit eb5f51756944735ac70cd8bb38637cc202e29c91
Author: Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
Date:   Wed Apr 13 04:42:51 2022 -0700

    cifs: potential buffer overflow in handling symlinks
    
    [ Upstream commit 64c4a37ac04eeb43c42d272f6e6c8c12bfcf4304 ]
    
    Smatch printed a warning:
            arch/x86/crypto/poly1305_glue.c:198 poly1305_update_arch() error:
            __memcpy() 'dctx->buf' too small (16 vs u32max)
    
    It's caused because Smatch marks 'link_len' as untrusted since it comes
    from sscanf(). Add a check to ensure that 'link_len' is not larger than
    the size of the 'link_str' buffer.
    
    Fixes: c69c1b6eaea1 ("cifs: implement CIFSParseMFSymlink()")
    Signed-off-by: Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
    Reviewed-by: Ronnie Sahlberg <lsahlber@redhat.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1a1748d0dd0f0a98535c6baeef671c8722107639
Author: Lin Ma <linma@zju.edu.cn>
Date:   Wed Apr 13 00:04:30 2022 +0800

    nfc: nci: add flush_workqueue to prevent uaf
    
    [ Upstream commit ef27324e2cb7bb24542d6cb2571740eefe6b00dc ]
    
    Our detector found a concurrent use-after-free bug when detaching an
    NCI device. The main reason for this bug is the unexpected scheduling
    between the used delayed mechanism (timer and workqueue).
    
    The race can be demonstrated below:
    
    Thread-1                           Thread-2
                                     | nci_dev_up()
                                     |   nci_open_device()
                                     |     __nci_request(nci_reset_req)
                                     |       nci_send_cmd
                                     |         queue_work(cmd_work)
    nci_unregister_device()          |
      nci_close_device()             | ...
        del_timer_sync(cmd_timer)[1] |
    ...                              | Worker
    nci_free_device()                | nci_cmd_work()
      kfree(ndev)[3]                 |   mod_timer(cmd_timer)[2]
    
    In short, the cleanup routine thought that the cmd_timer has already
    been detached by [1] but the mod_timer can re-attach the timer [2], even
    it is already released [3], resulting in UAF.
    
    This UAF is easy to trigger, crash trace by POC is like below
    
    [   66.703713] ==================================================================
    [   66.703974] BUG: KASAN: use-after-free in enqueue_timer+0x448/0x490
    [   66.703974] Write of size 8 at addr ffff888009fb7058 by task kworker/u4:1/33
    [   66.703974]
    [   66.703974] CPU: 1 PID: 33 Comm: kworker/u4:1 Not tainted 5.18.0-rc2 #5
    [   66.703974] Workqueue: nfc2_nci_cmd_wq nci_cmd_work
    [   66.703974] Call Trace:
    [   66.703974]  <TASK>
    [   66.703974]  dump_stack_lvl+0x57/0x7d
    [   66.703974]  print_report.cold+0x5e/0x5db
    [   66.703974]  ? enqueue_timer+0x448/0x490
    [   66.703974]  kasan_report+0xbe/0x1c0
    [   66.703974]  ? enqueue_timer+0x448/0x490
    [   66.703974]  enqueue_timer+0x448/0x490
    [   66.703974]  __mod_timer+0x5e6/0xb80
    [   66.703974]  ? mark_held_locks+0x9e/0xe0
    [   66.703974]  ? try_to_del_timer_sync+0xf0/0xf0
    [   66.703974]  ? lockdep_hardirqs_on_prepare+0x17b/0x410
    [   66.703974]  ? queue_work_on+0x61/0x80
    [   66.703974]  ? lockdep_hardirqs_on+0xbf/0x130
    [   66.703974]  process_one_work+0x8bb/0x1510
    [   66.703974]  ? lockdep_hardirqs_on_prepare+0x410/0x410
    [   66.703974]  ? pwq_dec_nr_in_flight+0x230/0x230
    [   66.703974]  ? rwlock_bug.part.0+0x90/0x90
    [   66.703974]  ? _raw_spin_lock_irq+0x41/0x50
    [   66.703974]  worker_thread+0x575/0x1190
    [   66.703974]  ? process_one_work+0x1510/0x1510
    [   66.703974]  kthread+0x2a0/0x340
    [   66.703974]  ? kthread_complete_and_exit+0x20/0x20
    [   66.703974]  ret_from_fork+0x22/0x30
    [   66.703974]  </TASK>
    [   66.703974]
    [   66.703974] Allocated by task 267:
    [   66.703974]  kasan_save_stack+0x1e/0x40
    [   66.703974]  __kasan_kmalloc+0x81/0xa0
    [   66.703974]  nci_allocate_device+0xd3/0x390
    [   66.703974]  nfcmrvl_nci_register_dev+0x183/0x2c0
    [   66.703974]  nfcmrvl_nci_uart_open+0xf2/0x1dd
    [   66.703974]  nci_uart_tty_ioctl+0x2c3/0x4a0
    [   66.703974]  tty_ioctl+0x764/0x1310
    [   66.703974]  __x64_sys_ioctl+0x122/0x190
    [   66.703974]  do_syscall_64+0x3b/0x90
    [   66.703974]  entry_SYSCALL_64_after_hwframe+0x44/0xae
    [   66.703974]
    [   66.703974] Freed by task 406:
    [   66.703974]  kasan_save_stack+0x1e/0x40
    [   66.703974]  kasan_set_track+0x21/0x30
    [   66.703974]  kasan_set_free_info+0x20/0x30
    [   66.703974]  __kasan_slab_free+0x108/0x170
    [   66.703974]  kfree+0xb0/0x330
    [   66.703974]  nfcmrvl_nci_unregister_dev+0x90/0xd0
    [   66.703974]  nci_uart_tty_close+0xdf/0x180
    [   66.703974]  tty_ldisc_kill+0x73/0x110
    [   66.703974]  tty_ldisc_hangup+0x281/0x5b0
    [   66.703974]  __tty_hangup.part.0+0x431/0x890
    [   66.703974]  tty_release+0x3a8/0xc80
    [   66.703974]  __fput+0x1f0/0x8c0
    [   66.703974]  task_work_run+0xc9/0x170
    [   66.703974]  exit_to_user_mode_prepare+0x194/0x1a0
    [   66.703974]  syscall_exit_to_user_mode+0x19/0x50
    [   66.703974]  do_syscall_64+0x48/0x90
    [   66.703974]  entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    To fix the UAF, this patch adds flush_workqueue() to ensure the
    nci_cmd_work is finished before the following del_timer_sync.
    This combination will promise the timer is actually detached.
    
    Fixes: 6a2968aaf50c ("NFC: basic NCI protocol implementation")
    Signed-off-by: Lin Ma <linma@zju.edu.cn>
    Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9b43bc3881dac9334223700c0cb5613f3f215058
Author: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
Date:   Fri Apr 8 12:54:31 2022 +0530

    testing/selftests/mqueue: Fix mq_perf_tests to free the allocated cpu set
    
    [ Upstream commit ce64763c63854b4079f2e036638aa881a1fb3fbc ]
    
    The selftest "mqueue/mq_perf_tests.c" use CPU_ALLOC to allocate
    CPU set. This cpu set is used further in pthread_attr_setaffinity_np
    and by pthread_create in the code. But in current code, allocated
    cpu set is not freed.
    
    Fix this issue by adding CPU_FREE in the "shutdown" function which
    is called in most of the error/exit path for the cleanup. There are
    few error paths which exit without using shutdown. Add a common goto
    error path with CPU_FREE for these cases.
    
    Fixes: 7820b0715b6f ("tools/selftests: add mq_perf_tests")
    Signed-off-by: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 268d58f5400b9ca4d24c046c5281716dc0cf638a
Author: Petr Malat <oss@malat.biz>
Date:   Sat Apr 9 08:36:11 2022 +0200

    sctp: Initialize daddr on peeled off socket
    
    [ Upstream commit 8467dda0c26583547731e7f3ea73fc3856bae3bf ]
    
    Function sctp_do_peeloff() wrongly initializes daddr of the original
    socket instead of the peeled off socket, which makes getpeername()
    return zeroes instead of the primary address. Initialize the new socket
    instead.
    
    Fixes: d570ee490fb1 ("[SCTP]: Correctly set daddr for IPv6 sockets during peeloff")
    Signed-off-by: Petr Malat <oss@malat.biz>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Link: https://lore.kernel.org/r/20220409063611.673193-1-oss@malat.biz
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e2423aa174e6c3e9805e96db778245ba73cdd88c
Author: Dinh Nguyen <dinguyen@kernel.org>
Date:   Thu Apr 7 08:25:21 2022 -0500

    net: ethernet: stmmac: fix altr_tse_pcs function when using a fixed-link
    
    [ Upstream commit a6aaa00324240967272b451bfa772547bd576ee6 ]
    
    When using a fixed-link, the altr_tse_pcs driver crashes
    due to null-pointer dereference as no phy_device is provided to
    tse_pcs_fix_mac_speed function. Fix this by adding a check for
    phy_dev before calling the tse_pcs_fix_mac_speed() function.
    
    Also clean up the tse_pcs_fix_mac_speed function a bit. There is
    no need to check for splitter_base and sgmii_adapter_base
    because the driver will fail if these 2 variables are not
    derived from the device tree.
    
    Fixes: fb3bbdb85989 ("net: ethernet: Add TSE PCS support to dwmac-socfpga")
    Signed-off-by: Dinh Nguyen <dinguyen@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c99f549bcae2fe2d4d51a7a6270a708037eb8ad9
Author: Vadim Pasternak <vadimp@nvidia.com>
Date:   Thu Apr 7 10:07:03 2022 +0300

    mlxsw: i2c: Fix initialization error flow
    
    [ Upstream commit d452088cdfd5a4ad9d96d847d2273fe958d6339b ]
    
    Add mutex_destroy() call in driver initialization error flow.
    
    Fixes: 6882b0aee180f ("mlxsw: Introduce support for I2C bus")
    Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
    Signed-off-by: Ido Schimmel <idosch@nvidia.com>
    Link: https://lore.kernel.org/r/20220407070703.2421076-1-idosch@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 38b0bd0f251010073efb3fc37a708ae9079bb332
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Sat Mar 19 16:21:09 2022 -0700

    gpiolib: acpi: use correct format characters
    
    [ Upstream commit 213d266ebfb1621aab79cfe63388facc520a1381 ]
    
    When compiling with -Wformat, clang emits the following warning:
    
      gpiolib-acpi.c:393:4: warning: format specifies type 'unsigned char' but the argument has type 'int' [-Wformat]
                            pin);
                            ^~~
    
    So warning that '%hhX' is paired with an 'int' is all just completely
    mindless and wrong. Sadly, I can see a different bogus warning reason
    why people would want to use '%02hhX'.
    
    Again, the *sane* thing from a human perspective is to use '%02X. But
    if the compiler doesn't do any range analysis at all, it could decide
    that "Oh, that print format could need up to 8 bytes of space in the
    result". Using '%02hhX' would cut that down to two.
    
    And since we use
    
            char ev_name[5];
    
    and currently use "_%c%02hhX" as the format string, even a compiler
    that doesn't notice that "pin <= 255" test that guards this all will
    go "OK, that's at most 4 bytes and the final NUL termination, so it's
    fine".
    
    While a compiler - like gcc - that only sees that the original source
    of the 'pin' value is a 'unsigned short' array, and then doesn't take
    the "pin <= 255" into account, will warn like this:
    
      gpiolib-acpi.c: In function 'acpi_gpiochip_request_interrupt':
      gpiolib-acpi.c:206:24: warning: '%02X' directive writing between 2 and 4 bytes into a region of size 3 [-Wformat-overflow=]
           sprintf(ev_name, "_%c%02X",
                                ^~~~
      gpiolib-acpi.c:206:20: note: directive argument in the range [0, 65535]
    
    because gcc isn't being very good at that argument range analysis either.
    
    In other words, the original use of 'hhx' was bogus to begin with, and
    due to *another* compiler warning being bad, and we had that bad code
    being written back in 2016 to work around _that_ compiler warning
    (commit e40a3ae1f794: "gpio: acpi: work around false-positive
    -Wstring-overflow warning").
    
    Sadly, two different bad compiler warnings together does not make for
    one good one.
    
    It just makes for even more pain.
    
    End result: I think the simplest and cleanest option is simply the
    proposed change which undoes that '%hhX' change for gcc, and replaces
    it with just using a slightly bigger stack allocation. It's not like
    a 5-byte allocation is in any way likely to have saved any actual stack,
    since all the other variables in that function are 'int' or bigger.
    
    False-positive compiler warnings really do make people write worse
    code, and that's a problem. But on a scale of bad code, I feel that
    extending the buffer trivially is better than adding a pointless cast
    that literally makes no sense.
    
    At least in this case the end result isn't unreadable or buggy. We've
    had several cases of bad compiler warnings that caused changes that
    were actually horrendously wrong.
    
    Fixes: e40a3ae1f794 ("gpio: acpi: work around false-positive -Wstring-overflow warning")
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1ef0088e43af1de4e3b365218c4d3179d9a37eec
Author: Guillaume Nault <gnault@redhat.com>
Date:   Wed Apr 6 16:18:54 2022 +0200

    veth: Ensure eth header is in skb's linear part
    
    [ Upstream commit 726e2c5929de841fdcef4e2bf995680688ae1b87 ]
    
    After feeding a decapsulated packet to a veth device with act_mirred,
    skb_headlen() may be 0. But veth_xmit() calls __dev_forward_skb(),
    which expects at least ETH_HLEN byte of linear data (as
    __dev_forward_skb2() calls eth_type_trans(), which pulls ETH_HLEN bytes
    unconditionally).
    
    Use pskb_may_pull() to ensure veth_xmit() respects this constraint.
    
    kernel BUG at include/linux/skbuff.h:2328!
    RIP: 0010:eth_type_trans+0xcf/0x140
    Call Trace:
     <IRQ>
     __dev_forward_skb2+0xe3/0x160
     veth_xmit+0x6e/0x250 [veth]
     dev_hard_start_xmit+0xc7/0x200
     __dev_queue_xmit+0x47f/0x520
     ? skb_ensure_writable+0x85/0xa0
     ? skb_mpls_pop+0x98/0x1c0
     tcf_mirred_act+0x442/0x47e [act_mirred]
     tcf_action_exec+0x86/0x140
     fl_classify+0x1d8/0x1e0 [cls_flower]
     ? dma_pte_clear_level+0x129/0x1a0
     ? dma_pte_clear_level+0x129/0x1a0
     ? prb_fill_curr_block+0x2f/0xc0
     ? skb_copy_bits+0x11a/0x220
     __tcf_classify+0x58/0x110
     tcf_classify_ingress+0x6b/0x140
     __netif_receive_skb_core.constprop.0+0x47d/0xfd0
     ? __iommu_dma_unmap_swiotlb+0x44/0x90
     __netif_receive_skb_one_core+0x3d/0xa0
     netif_receive_skb+0x116/0x170
     be_process_rx+0x22f/0x330 [be2net]
     be_poll+0x13c/0x370 [be2net]
     __napi_poll+0x2a/0x170
     net_rx_action+0x22f/0x2f0
     __do_softirq+0xca/0x2a8
     __irq_exit_rcu+0xc1/0xe0
     common_interrupt+0x83/0xa0
    
    Fixes: e314dbdc1c0d ("[NET]: Virtual ethernet device driver.")
    Signed-off-by: Guillaume Nault <gnault@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f0c8a97c60194b4cc8b8cf030a3accc6e9985337
Author: Vlad Buslov <vladbu@nvidia.com>
Date:   Wed Apr 6 14:22:41 2022 +0300

    net/sched: flower: fix parsing of ethertype following VLAN header
    
    [ Upstream commit 2105f700b53c24aa48b65c15652acc386044d26a ]
    
    A tc flower filter matching TCA_FLOWER_KEY_VLAN_ETH_TYPE is expected to
    match the L2 ethertype following the first VLAN header, as confirmed by
    linked discussion with the maintainer. However, such rule also matches
    packets that have additional second VLAN header, even though filter has
    both eth_type and vlan_ethtype set to "ipv4". Looking at the code this
    seems to be mostly an artifact of the way flower uses flow dissector.
    First, even though looking at the uAPI eth_type and vlan_ethtype appear
    like a distinct fields, in flower they are all mapped to the same
    key->basic.n_proto. Second, flow dissector skips following VLAN header as
    no keys for FLOW_DISSECTOR_KEY_CVLAN are set and eventually assigns the
    value of n_proto to last parsed header. With these, such filters ignore any
    headers present between first VLAN header and first "non magic"
    header (ipv4 in this case) that doesn't result
    FLOW_DISSECT_RET_PROTO_AGAIN.
    
    Fix the issue by extending flow dissector VLAN key structure with new
    'vlan_eth_type' field that matches first ethertype following previously
    parsed VLAN header. Modify flower classifier to set the new
    flow_dissector_key_vlan->vlan_eth_type with value obtained from
    TCA_FLOWER_KEY_VLAN_ETH_TYPE/TCA_FLOWER_KEY_CVLAN_ETH_TYPE uAPIs.
    
    Link: https://lore.kernel.org/all/Yjhgi48BpTGh6dig@nanopsycho/
    Fixes: 9399ae9a6cb2 ("net_sched: flower: Add vlan support")
    Fixes: d64efd0926ba ("net/sched: flower: Add supprt for matching on QinQ vlan headers")
    Signed-off-by: Vlad Buslov <vladbu@nvidia.com>
    Reviewed-by: Jiri Pirko <jiri@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fc043752fa0d6c955b8b3f6181da815ba46514fb
Author: Miaoqian Lin <linmq006@gmail.com>
Date:   Wed Mar 9 11:01:43 2022 +0000

    memory: atmel-ebi: Fix missing of_node_put in atmel_ebi_probe
    
    [ Upstream commit 6f296a9665ba5ac68937bf11f96214eb9de81baa ]
    
    The device_node pointer is returned by of_parse_phandle() with refcount
    incremented. We should use of_node_put() on it when done.
    
    Fixes: 87108dc78eb8 ("memory: atmel-ebi: Enable the SMC clock if specified")
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Reviewed-by: Claudiu Beznea <claudiu.beznea@microchip.com>
    Link: https://lore.kernel.org/r/20220309110144.22412-1-linmq006@gmail.com
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>