commit 3ea3a232f03adfcf6d18d91d6e851057b6cb079b
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Mar 16 14:26:52 2022 +0100

    Linux 5.16.15
    
    Link: https://lore.kernel.org/r/20220314112744.120491875@linuxfoundation.org
    Tested-by: Justin M. Forbes <jforbes@fedoraproject.org>
    Tested-by: Florian Fainelli <f.fainelli@gmail.com>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Fox Chen <foxhlchen@gmail.com>
    Tested-by: Rudi Heitbaum <rudi@heitbaum.com>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Ron Economos <re@w6rz.net>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Bagas Sanjaya <bagasdotme@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ad7aa686d172c8ba0beb975cdb9df986eec043ac
Author: Jason Wang <jasowang@redhat.com>
Date:   Thu Mar 10 15:52:11 2022 +0800

    vhost: allow batching hint without size
    
    commit 95932ab2ea07b79cdb33121e2f40ccda9e6a73b5 upstream.
    
    Commit e2ae38cf3d91 ("vhost: fix hung thread due to erroneous iotlb
    entries") tries to reject the IOTLB message whose size is zero. But
    the size is not necessarily meaningful, one example is the batching
    hint, so the commit breaks that.
    
    Fixing this be reject zero size message only if the message is used to
    update/invalidate the IOTLB.
    
    Fixes: e2ae38cf3d91 ("vhost: fix hung thread due to erroneous iotlb entries")
    Reported-by: Eli Cohen <elic@nvidia.com>
    Cc: Anirudh Rayabharam <mail@anirudhrb.com>
    Signed-off-by: Jason Wang <jasowang@redhat.com>
    Link: https://lore.kernel.org/r/20220310075211.4801-1-jasowang@redhat.com
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Tested-by: Eli Cohen <elic@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2777252d116a86f9a95de3cedc35d56e6cdc3e14
Author: Niklas Cassel <niklas.cassel@wdc.com>
Date:   Tue Mar 1 00:44:18 2022 +0000

    riscv: dts: k210: fix broken IRQs on hart1
    
    commit 74583f1b92cb3bbba1a3741cea237545c56f506c upstream.
    
    Commit 67d96729a9e7 ("riscv: Update Canaan Kendryte K210 device tree")
    incorrectly removed two entries from the PLIC interrupt-controller node's
    interrupts-extended property.
    
    The PLIC driver cannot know the mapping between hart contexts and hart ids,
    so this information has to be provided by device tree, as specified by the
    PLIC device tree binding.
    
    The PLIC driver uses the interrupts-extended property, and initializes the
    hart context registers in the exact same order as provided by the
    interrupts-extended property.
    
    In other words, if we don't specify the S-mode interrupts, the PLIC driver
    will simply initialize the hart0 S-mode hart context with the hart1 M-mode
    configuration. It is therefore essential to specify the S-mode IRQs even
    though the system itself will only ever be running in M-mode.
    
    Re-add the S-mode interrupts, so that we get working IRQs on hart1 again.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 67d96729a9e7 ("riscv: Update Canaan Kendryte K210 device tree")
    Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com>
    Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 00a742934a651ee074b6650f33a360d74df30702
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Nov 22 12:03:38 2021 +0000

    btrfs: make send work with concurrent block group relocation
    
    commit d96b34248c2f4ea8cd09286090f2f6f77102eaab upstream.
    
    We don't allow send and balance/relocation to run in parallel in order
    to prevent send failing or silently producing some bad stream. This is
    because while send is using an extent (specially metadata) or about to
    read a metadata extent and expecting it belongs to a specific parent
    node, relocation can run, the transaction used for the relocation is
    committed and the extent gets reallocated while send is still using the
    extent, so it ends up with a different content than expected. This can
    result in just failing to read a metadata extent due to failure of the
    validation checks (parent transid, level, etc), failure to find a
    backreference for a data extent, and other unexpected failures. Besides
    reallocation, there's also a similar problem of an extent getting
    discarded when it's unpinned after the transaction used for block group
    relocation is committed.
    
    The restriction between balance and send was added in commit 9e967495e0e0
    ("Btrfs: prevent send failures and crashes due to concurrent relocation"),
    kernel 5.3, while the more general restriction between send and relocation
    was added in commit 1cea5cf0e664 ("btrfs: ensure relocation never runs
    while we have send operations running"), kernel 5.14.
    
    Both send and relocation can be very long running operations. Relocation
    because it has to do a lot of IO and expensive backreference lookups in
    case there are many snapshots, and send due to read IO when operating on
    very large trees. This makes it inconvenient for users and tools to deal
    with scheduling both operations.
    
    For zoned filesystem we also have automatic block group relocation, so
    send can fail with -EAGAIN when users least expect it or send can end up
    delaying the block group relocation for too long. In the future we might
    also get the automatic block group relocation for non zoned filesystems.
    
    This change makes it possible for send and relocation to run in parallel.
    This is achieved the following way:
    
    1) For all tree searches, send acquires a read lock on the commit root
       semaphore;
    
    2) After each tree search, and before releasing the commit root semaphore,
       the leaf is cloned and placed in the search path (struct btrfs_path);
    
    3) After releasing the commit root semaphore, the changed_cb() callback
       is invoked, which operates on the leaf and writes commands to the pipe
       (or file in case send/receive is not used with a pipe). It's important
       here to not hold a lock on the commit root semaphore, because if we did
       we could deadlock when sending and receiving to the same filesystem
       using a pipe - the send task blocks on the pipe because it's full, the
       receive task, which is the only consumer of the pipe, triggers a
       transaction commit when attempting to create a subvolume or reserve
       space for a write operation for example, but the transaction commit
       blocks trying to write lock the commit root semaphore, resulting in a
       deadlock;
    
    4) Before moving to the next key, or advancing to the next change in case
       of an incremental send, check if a transaction used for relocation was
       committed (or is about to finish its commit). If so, release the search
       path(s) and restart the search, to where we were before, so that we
       don't operate on stale extent buffers. The search restarts are always
       possible because both the send and parent roots are RO, and no one can
       add, remove of update keys (change their offset) in RO trees - the
       only exception is deduplication, but that is still not allowed to run
       in parallel with send;
    
    5) Periodically check if there is contention on the commit root semaphore,
       which means there is a transaction commit trying to write lock it, and
       release the semaphore and reschedule if there is contention, so as to
       avoid causing any significant delays to transaction commits.
    
    This leaves some room for optimizations for send to have less path
    releases and re searching the trees when there's relocation running, but
    for now it's kept simple as it performs quite well (on very large trees
    with resulting send streams in the order of a few hundred gigabytes).
    
    Test case btrfs/187, from fstests, stresses relocation, send and
    deduplication attempting to run in parallel, but without verifying if send
    succeeds and if it produces correct streams. A new test case will be added
    that exercises relocation happening in parallel with send and then checks
    that send succeeds and the resulting streams are correct.
    
    A final note is that for now this still leaves the mutual exclusion
    between send operations and deduplication on files belonging to a root
    used by send operations. A solution for that will be slightly more complex
    but it will eventually be built on top of this change.
    
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Anand Jain <anand.jain@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7c3ebd4736dff3b8c1027de3f374669bfffbad7b
Author: Zhengjun Xing <zhengjun.xing@linux.intel.com>
Date:   Mon Mar 7 23:16:27 2022 +0800

    perf parse: Fix event parser error for hybrid systems
    
    commit 91c9923a473a694eb1c5c01ab778a77114969707 upstream.
    
    This bug happened on hybrid systems when both cpu_core and cpu_atom
    have the same event name such as "UOPS_RETIRED.MS" while their event
    terms are different, then during perf stat, the event for cpu_atom
    will parse fail and then no output for cpu_atom.
    
    UOPS_RETIRED.MS -> cpu_core/period=0x1e8483,umask=0x4,event=0xc2,frontend=0x8/
    UOPS_RETIRED.MS -> cpu_atom/period=0x1e8483,umask=0x1,event=0xc2/
    
    It is because event terms in the "head" of parse_events_multi_pmu_add
    will be changed to event terms for cpu_core after parsing UOPS_RETIRED.MS
    for cpu_core, then when parsing the same event for cpu_atom, it still
    uses the event terms for cpu_core, but event terms for cpu_atom are
    different with cpu_core, the event parses for cpu_atom will fail. This
    patch fixes it, the event terms should be parsed from the original
    event.
    
    This patch can work for the hybrid systems that have the same event
    in more than 2 PMUs. It also can work in non-hybrid systems.
    
    Before:
    
      # perf stat -v  -e  UOPS_RETIRED.MS  -a sleep 1
    
      Using CPUID GenuineIntel-6-97-1
      UOPS_RETIRED.MS -> cpu_core/period=0x1e8483,umask=0x4,event=0xc2,frontend=0x8/
      Control descriptor is not initialized
      UOPS_RETIRED.MS: 2737845 16068518485 16068518485
    
     Performance counter stats for 'system wide':
    
             2,737,845      cpu_core/UOPS_RETIRED.MS/
    
           1.002553850 seconds time elapsed
    
    After:
    
      # perf stat -v  -e  UOPS_RETIRED.MS  -a sleep 1
    
      Using CPUID GenuineIntel-6-97-1
      UOPS_RETIRED.MS -> cpu_core/period=0x1e8483,umask=0x4,event=0xc2,frontend=0x8/
      UOPS_RETIRED.MS -> cpu_atom/period=0x1e8483,umask=0x1,event=0xc2/
      Control descriptor is not initialized
      UOPS_RETIRED.MS: 1977555 16076950711 16076950711
      UOPS_RETIRED.MS: 568684 8038694234 8038694234
    
     Performance counter stats for 'system wide':
    
             1,977,555      cpu_core/UOPS_RETIRED.MS/
               568,684      cpu_atom/UOPS_RETIRED.MS/
    
           1.004758259 seconds time elapsed
    
    Fixes: fb0811535e92c6c1 ("perf parse-events: Allow config on kernel PMU events")
    Reviewed-by: Kan Liang <kan.liang@linux.intel.com>
    Signed-off-by: Zhengjun Xing <zhengjun.xing@linux.intel.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: https://lore.kernel.org/r/20220307151627.30049-1-zhengjun.xing@linux.intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8185af336b0ebcbcd4c6a7ee8f0a7f764473b1ce
Author: Thomas Zimmermann <tzimmermann@suse.de>
Date:   Thu Feb 3 10:39:22 2022 +0100

    drm/panel: Select DRM_DP_HELPER for DRM_PANEL_EDP
    
    commit 3755d35ee1d2454b20b8a1e20d790e56201678a4 upstream.
    
    As reported in [1], DRM_PANEL_EDP depends on DRM_DP_HELPER. Select
    the option to fix the build failure. The error message is shown
    below.
    
      arm-linux-gnueabihf-ld: drivers/gpu/drm/panel/panel-edp.o: in function
        `panel_edp_probe': panel-edp.c:(.text+0xb74): undefined reference to
        `drm_panel_dp_aux_backlight'
      make[1]: *** [/builds/linux/Makefile:1222: vmlinux] Error 1
    
    The issue has been reported before, when DisplayPort helpers were
    hidden behind the option CONFIG_DRM_KMS_HELPER. [2]
    
    v2:
            * fix and expand commit description (Arnd)
    
    Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
    Fixes: 9d6366e743f3 ("drm: fb_helper: improve CONFIG_FB dependency")
    Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>
    Reported-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Reviewed-by: Lyude Paul <lyude@redhat.com>
    Acked-by: Sam Ravnborg <sam@ravnborg.org>
    Link: https://lore.kernel.org/dri-devel/CA+G9fYvN0NyaVkRQmA1O6rX7H8PPaZrUAD7=RDy33QY9rUU-9g@mail.gmail.com/ # [1]
    Link: https://lore.kernel.org/all/20211117062704.14671-1-rdunlap@infradead.org/ # [2]
    Cc: Thomas Zimmermann <tzimmermann@suse.de>
    Cc: Lyude Paul <lyude@redhat.com>
    Cc: Daniel Vetter <daniel@ffwll.ch>
    Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Cc: Maxime Ripard <mripard@kernel.org>
    Cc: dri-devel@lists.freedesktop.org
    Link: https://patchwork.freedesktop.org/patch/msgid/20220203093922.20754-1-tzimmermann@suse.de
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aa093e28791d0b5c29e3753e15eb9cb852017cd4
Author: Li Huafei <lihuafei1@huawei.com>
Date:   Thu Mar 10 20:09:15 2022 +0800

    x86/traps: Mark do_int3() NOKPROBE_SYMBOL
    
    commit a365a65f9ca1ceb9cf1ac29db4a4f51df7c507ad upstream.
    
    Since kprobe_int3_handler() is called in do_int3(), probing do_int3()
    can cause a breakpoint recursion and crash the kernel. Therefore,
    do_int3() should be marked as NOKPROBE_SYMBOL.
    
    Fixes: 21e28290b317 ("x86/traps: Split int3 handler up")
    Signed-off-by: Li Huafei <lihuafei1@huawei.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220310120915.63349-1-lihuafei1@huawei.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 248c6347720200b9e5f79a4339ddbe4ef0074d36
Author: Jarkko Sakkinen <jarkko@kernel.org>
Date:   Fri Mar 4 00:38:58 2022 +0200

    x86/sgx: Free backing memory after faulting the enclave page
    
    commit 08999b2489b4c9b939d7483dbd03702ee4576d96 upstream.
    
    There is a limited amount of SGX memory (EPC) on each system.  When that
    memory is used up, SGX has its own swapping mechanism which is similar
    in concept but totally separate from the core mm/* code.  Instead of
    swapping to disk, SGX swaps from EPC to normal RAM.  That normal RAM
    comes from a shared memory pseudo-file and can itself be swapped by the
    core mm code.  There is a hierarchy like this:
    
            EPC <-> shmem <-> disk
    
    After data is swapped back in from shmem to EPC, the shmem backing
    storage needs to be freed.  Currently, the backing shmem is not freed.
    This effectively wastes the shmem while the enclave is running.  The
    memory is recovered when the enclave is destroyed and the backing
    storage freed.
    
    Sort this out by freeing memory with shmem_truncate_range(), as soon as
    a page is faulted back to the EPC.  In addition, free the memory for
    PCMD pages as soon as all PCMD's in a page have been marked as unused
    by zeroing its contents.
    
    Cc: stable@vger.kernel.org
    Fixes: 1728ab54b4be ("x86/sgx: Add a page reclaimer")
    Reported-by: Dave Hansen <dave.hansen@linux.intel.com>
    Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
    Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
    Link: https://lkml.kernel.org/r/20220303223859.273187-1-jarkko@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 173dc5ec61f8cdb18c2773016bc50d6740f884a0
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Thu Mar 3 12:23:23 2022 +0100

    x86/module: Fix the paravirt vs alternative order
    
    commit 5adf349439d29f92467e864f728dfc23180f3ef9 upstream.
    
    Ever since commit
    
      4e6292114c74 ("x86/paravirt: Add new features for paravirt patching")
    
    there is an ordering dependency between patching paravirt ops and
    patching alternatives, the module loader still violates this.
    
    Fixes: 4e6292114c74 ("x86/paravirt: Add new features for paravirt patching")
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Reviewed-by: Miroslav Benes <mbenes@suse.cz>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220303112825.068773913@infradead.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ba4b13aae3cfd8a2d54bf25bf7ef329725da6d27
Author: Ross Philipson <ross.philipson@oracle.com>
Date:   Wed Feb 23 21:07:36 2022 -0500

    x86/boot: Add setup_indirect support in early_memremap_is_setup_data()
    
    commit 445c1470b6ef96440e7cfc42dfc160f5004fd149 upstream.
    
    The x86 boot documentation describes the setup_indirect structures and
    how they are used. Only one of the two functions in ioremap.c that needed
    to be modified to be aware of the introduction of setup_indirect
    functionality was updated. Adds comparable support to the other function
    where it was missing.
    
    Fixes: b3c72fc9a78e ("x86/boot: Introduce setup_indirect")
    Signed-off-by: Ross Philipson <ross.philipson@oracle.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/1645668456-22036-3-git-send-email-ross.philipson@oracle.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b46bfa5c526de39d5b5529272c8a7acc9505b92c
Author: Ross Philipson <ross.philipson@oracle.com>
Date:   Wed Feb 23 21:07:35 2022 -0500

    x86/boot: Fix memremap of setup_indirect structures
    
    commit 7228918b34615ef6317edcd9a058a057bc54aa32 upstream.
    
    As documented, the setup_indirect structure is nested inside
    the setup_data structures in the setup_data list. The code currently
    accesses the fields inside the setup_indirect structure but only
    the sizeof(struct setup_data) is being memremapped. No crash
    occurred but this is just due to how the area is remapped under the
    covers.
    
    Properly memremap both the setup_data and setup_indirect structures
    in these cases before accessing them.
    
    Fixes: b3c72fc9a78e ("x86/boot: Introduce setup_indirect")
    Signed-off-by: Ross Philipson <ross.philipson@oracle.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/1645668456-22036-2-git-send-email-ross.philipson@oracle.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ab36cca5ce68896595a0ace2d6dd5e5db8b96c5d
Author: David Howells <dhowells@redhat.com>
Date:   Fri Mar 11 13:24:47 2022 +0000

    watch_queue: Make comment about setting ->defunct more accurate
    
    commit 4edc0760412b0c4ecefc7e02cb855b310b122825 upstream.
    
    watch_queue_clear() has a comment stating that setting ->defunct to true
    preventing new additions as well as preventing notifications.  Whilst
    the latter is true, the first bit is superfluous since at the time this
    function is called, the pipe cannot be accessed to add new event
    sources.
    
    Remove the "new additions" bit from the comment.
    
    Fixes: c73be61cede5 ("pipe: Add general notification queue support")
    Reported-by: Jann Horn <jannh@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 36198e3972f454ea19329315588c5a7de73a12fa
Author: David Howells <dhowells@redhat.com>
Date:   Fri Mar 11 13:24:36 2022 +0000

    watch_queue: Fix lack of barrier/sync/lock between post and read
    
    commit 2ed147f015af2b48f41c6f0b6746aa9ea85c19f3 upstream.
    
    There's nothing to synchronise post_one_notification() versus
    pipe_read().  Whilst posting is done under pipe->rd_wait.lock, the
    reader only takes pipe->mutex which cannot bar notification posting as
    that may need to be made from contexts that cannot sleep.
    
    Fix this by setting pipe->head with a barrier in post_one_notification()
    and reading pipe->head with a barrier in pipe_read().
    
    If that's not sufficient, the rd_wait.lock will need to be taken,
    possibly in a ->confirm() op so that it only applies to notifications.
    The lock would, however, have to be dropped before copy_page_to_iter()
    is invoked.
    
    Fixes: c73be61cede5 ("pipe: Add general notification queue support")
    Reported-by: Jann Horn <jannh@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d7e05190cdefc4be775f783316681e69594294b0
Author: David Howells <dhowells@redhat.com>
Date:   Fri Mar 11 13:24:29 2022 +0000

    watch_queue: Free the alloc bitmap when the watch_queue is torn down
    
    commit 7ea1a0124b6da246b5bc8c66cddaafd36acf3ecb upstream.
    
    Free the watch_queue note allocation bitmap when the watch_queue is
    destroyed.
    
    Fixes: c73be61cede5 ("pipe: Add general notification queue support")
    Reported-by: Jann Horn <jannh@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6cb5c7e1b33e5ae01c4c9fd993e1f33a817c9735
Author: David Howells <dhowells@redhat.com>
Date:   Fri Mar 11 13:24:22 2022 +0000

    watch_queue: Fix the alloc bitmap size to reflect notes allocated
    
    commit 3b4c0371928c17af03e8397ac842346624017ce6 upstream.
    
    Currently, watch_queue_set_size() sets the number of notes available in
    wqueue->nr_notes according to the number of notes allocated, but sets
    the size of the bitmap to the unrounded number of notes originally asked
    for.
    
    Fix this by setting the bitmap size to the number of notes we're
    actually going to make available (ie. the number allocated).
    
    Fixes: c73be61cede5 ("pipe: Add general notification queue support")
    Reported-by: Jann Horn <jannh@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2f331b8dffbba4033bcc00e29ae97feeefeb219b
Author: David Howells <dhowells@redhat.com>
Date:   Fri Mar 11 13:24:08 2022 +0000

    watch_queue: Fix to always request a pow-of-2 pipe ring size
    
    commit 96a4d8912b28451cd62825fd7caa0e66e091d938 upstream.
    
    The pipe ring size must always be a power of 2 as the head and tail
    pointers are masked off by AND'ing with the size of the ring - 1.
    watch_queue_set_size(), however, lets you specify any number of notes
    between 1 and 511.  This number is passed through to pipe_resize_ring()
    without checking/forcing its alignment.
    
    Fix this by rounding the number of slots required up to the nearest
    power of two.  The request is meant to guarantee that at least that many
    notifications can be generated before the queue is full, so rounding
    down isn't an option, but, alternatively, it may be better to give an
    error if we aren't allowed to allocate that much ring space.
    
    Fixes: c73be61cede5 ("pipe: Add general notification queue support")
    Reported-by: Jann Horn <jannh@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 70bbc08533ab38c0889b0a001106b62699f38874
Author: David Howells <dhowells@redhat.com>
Date:   Fri Mar 11 13:23:46 2022 +0000

    watch_queue: Fix to release page in ->release()
    
    commit c1853fbadcba1497f4907971e7107888e0714c81 upstream.
    
    When a pipe ring descriptor points to a notification message, the
    refcount on the backing page is incremented by the generic get function,
    but the release function, which marks the bitmap, doesn't drop the page
    ref.
    
    Fix this by calling generic_pipe_buf_release() at the end of
    watch_queue_pipe_buf_release().
    
    Fixes: c73be61cede5 ("pipe: Add general notification queue support")
    Reported-by: Jann Horn <jannh@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eef9afda9a16328beb562e09ba2d19f8ec0713eb
Author: David Howells <dhowells@redhat.com>
Date:   Fri Mar 11 13:23:38 2022 +0000

    watch_queue, pipe: Free watchqueue state after clearing pipe ring
    
    commit db8facfc9fafacefe8a835416a6b77c838088f8b upstream.
    
    In free_pipe_info(), free the watchqueue state after clearing the pipe
    ring as each pipe ring descriptor has a release function, and in the
    case of a notification message, this is watch_queue_pipe_buf_release()
    which tries to mark the allocation bitmap that was previously released.
    
    Fix this by moving the put of the pipe's ref on the watch queue to after
    the ring has been cleared.  We still need to call watch_queue_clear()
    before doing that to make sure that the pipe is disconnected from any
    notification sources first.
    
    Fixes: c73be61cede5 ("pipe: Add general notification queue support")
    Reported-by: Jann Horn <jannh@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b36588ebbcef74583824c08352e75838d6fb4ff2
Author: David Howells <dhowells@redhat.com>
Date:   Fri Mar 11 13:23:31 2022 +0000

    watch_queue: Fix filter limit check
    
    commit c993ee0f9f81caf5767a50d1faeba39a0dc82af2 upstream.
    
    In watch_queue_set_filter(), there are a couple of places where we check
    that the filter type value does not exceed what the type_filter bitmap
    can hold.  One place calculates the number of bits by:
    
       if (tf[i].type >= sizeof(wfilter->type_filter) * 8)
    
    which is fine, but the second does:
    
       if (tf[i].type >= sizeof(wfilter->type_filter) * BITS_PER_LONG)
    
    which is not.  This can lead to a couple of out-of-bounds writes due to
    a too-large type:
    
     (1) __set_bit() on wfilter->type_filter
     (2) Writing more elements in wfilter->filters[] than we allocated.
    
    Fix this by just using the proper WATCH_TYPE__NR instead, which is the
    number of types we actually know about.
    
    The bug may cause an oops looking something like:
    
      BUG: KASAN: slab-out-of-bounds in watch_queue_set_filter+0x659/0x740
      Write of size 4 at addr ffff88800d2c66bc by task watch_queue_oob/611
      ...
      Call Trace:
       <TASK>
       dump_stack_lvl+0x45/0x59
       print_address_description.constprop.0+0x1f/0x150
       ...
       kasan_report.cold+0x7f/0x11b
       ...
       watch_queue_set_filter+0x659/0x740
       ...
       __x64_sys_ioctl+0x127/0x190
       do_syscall_64+0x43/0x90
       entry_SYSCALL_64_after_hwframe+0x44/0xae
    
      Allocated by task 611:
       kasan_save_stack+0x1e/0x40
       __kasan_kmalloc+0x81/0xa0
       watch_queue_set_filter+0x23a/0x740
       __x64_sys_ioctl+0x127/0x190
       do_syscall_64+0x43/0x90
       entry_SYSCALL_64_after_hwframe+0x44/0xae
    
      The buggy address belongs to the object at ffff88800d2c66a0
       which belongs to the cache kmalloc-32 of size 32
      The buggy address is located 28 bytes inside of
       32-byte region [ffff88800d2c66a0, ffff88800d2c66c0)
    
    Fixes: c73be61cede5 ("pipe: Add general notification queue support")
    Reported-by: Jann Horn <jannh@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c21b0de7661af4159b6008e6aab8df9adb3464b9
Author: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Date:   Fri Mar 11 17:13:17 2022 +0000

    ARM: fix Thumb2 regression with Spectre BHB
    
    commit 6c7cb60bff7aec24b834343ff433125f469886a3 upstream.
    
    When building for Thumb2, the vectors make use of a local label. Sadly,
    the Spectre BHB code also uses a local label with the same number which
    results in the Thumb2 reference pointing at the wrong place. Fix this
    by changing the number used for the Spectre BHB local label.
    
    Fixes: b9baf5c8c5c3 ("ARM: Spectre-BHB workaround")
    Tested-by: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a0347a63d1bdd9b31a3eb2ba8d72d80bdd2a4d83
Author: Dima Chumak <dchumak@nvidia.com>
Date:   Mon Jan 17 15:32:16 2022 +0200

    net/mlx5: Fix offloading with ESWITCH_IPV4_TTL_MODIFY_ENABLE
    
    commit 39bab83b119faac4bf7f07173a42ed35be95147e upstream.
    
    Only prio 1 is supported for nic mode when there is no ignore flow level
    support in firmware. But for switchdev mode, which supports fixed number
    of statically pre-allocated prios, this restriction is not relevant so
    it can be relaxed.
    
    Fixes: d671e109bd85 ("net/mlx5: Fix tc max supported prio for nic mode")
    Signed-off-by: Dima Chumak <dchumak@nvidia.com>
    Reviewed-by: Roi Dayan <roid@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 290902a5258048b5b820d25bc6bfc2e7216efbe0
Author: Michael S. Tsirkin <mst@redhat.com>
Date:   Fri Jan 14 14:58:41 2022 -0500

    virtio: acknowledge all features before access
    
    commit 4fa59ede95195f267101a1b8916992cf3f245cdb upstream.
    
    The feature negotiation was designed in a way that
    makes it possible for devices to know which config
    fields will be accessed by drivers.
    
    This is broken since commit 404123c2db79 ("virtio: allow drivers to
    validate features") with fallout in at least block and net.  We have a
    partial work-around in commit 2f9a174f918e ("virtio: write back
    F_VERSION_1 before validate") which at least lets devices find out which
    format should config space have, but this is a partial fix: guests
    should not access config space without acknowledging features since
    otherwise we'll never be able to change the config space format.
    
    To fix, split finalize_features from virtio_finalize_features and
    call finalize_features with all feature bits before validation,
    and then - if validation changed any bits - once again after.
    
    Since virtio_finalize_features no longer writes out features
    rename it to virtio_features_ok - since that is what it does:
    checks that features are ok with the device.
    
    As a side effect, this also reduces the amount of hypervisor accesses -
    we now only acknowledge features once unless we are clearing any
    features when validating (which is uncommon).
    
    IRC I think that this was more or less always the intent in the spec but
    unfortunately the way the spec is worded does not say this explicitly, I
    plan to address this at the spec level, too.
    
    Acked-by: Jason Wang <jasowang@redhat.com>
    Cc: stable@vger.kernel.org
    Fixes: 404123c2db79 ("virtio: allow drivers to validate features")
    Fixes: 2f9a174f918e ("virtio: write back F_VERSION_1 before validate")
    Cc: "Halil Pasic" <pasic@linux.ibm.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c6b1706df7c041a1e7b288b159a79c45544cd681
Author: Michael S. Tsirkin <mst@redhat.com>
Date:   Fri Jan 14 14:56:15 2022 -0500

    virtio: unexport virtio_finalize_features
    
    commit 838d6d3461db0fdbf33fc5f8a69c27b50b4a46da upstream.
    
    virtio_finalize_features is only used internally within virtio.
    No reason to export it.
    
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Reviewed-by: Cornelia Huck <cohuck@redhat.com>
    Acked-by: Jason Wang <jasowang@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 62b27d925655999350d0ea775a025919fd88d27f
Author: Halil Pasic <pasic@linux.ibm.com>
Date:   Sat Mar 5 18:07:14 2022 +0100

    swiotlb: rework "fix info leak with DMA_FROM_DEVICE"
    
    commit aa6f8dcbab473f3a3c7454b74caa46d36cdc5d13 upstream.
    
    Unfortunately, we ended up merging an old version of the patch "fix info
    leak with DMA_FROM_DEVICE" instead of merging the latest one. Christoph
    (the swiotlb maintainer), he asked me to create an incremental fix
    (after I have pointed this out the mix up, and asked him for guidance).
    So here we go.
    
    The main differences between what we got and what was agreed are:
    * swiotlb_sync_single_for_device is also required to do an extra bounce
    * We decided not to introduce DMA_ATTR_OVERWRITE until we have exploiters
    * The implantation of DMA_ATTR_OVERWRITE is flawed: DMA_ATTR_OVERWRITE
      must take precedence over DMA_ATTR_SKIP_CPU_SYNC
    
    Thus this patch removes DMA_ATTR_OVERWRITE, and makes
    swiotlb_sync_single_for_device() bounce unconditionally (that is, also
    when dir == DMA_TO_DEVICE) in order do avoid synchronising back stale
    data from the swiotlb buffer.
    
    Let me note, that if the size used with dma_sync_* API is less than the
    size used with dma_[un]map_*, under certain circumstances we may still
    end up with swiotlb not being transparent. In that sense, this is no
    perfect fix either.
    
    To get this bullet proof, we would have to bounce the entire
    mapping/bounce buffer. For that we would have to figure out the starting
    address, and the size of the mapping in
    swiotlb_sync_single_for_device(). While this does seem possible, there
    seems to be no firm consensus on how things are supposed to work.
    
    Signed-off-by: Halil Pasic <pasic@linux.ibm.com>
    Fixes: ddbd89deb7d3 ("swiotlb: fix info leak with DMA_FROM_DEVICE")
    Cc: stable@vger.kernel.org
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cf04a86d52ae6681ea22ae45b08666458652c7b6
Author: Paul Semel <semelpaul@gmail.com>
Date:   Tue Mar 8 10:30:58 2022 +0100

    arm64: kasan: fix include error in MTE functions
    
    commit b859ebedd1e730bbda69142fca87af4e712649a1 upstream.
    
    Fix `error: expected string literal in 'asm'`.
    This happens when compiling an ebpf object file that includes
    `net/net_namespace.h` from linux kernel headers.
    
    Include trace:
         include/net/net_namespace.h:10
         include/linux/workqueue.h:9
         include/linux/timer.h:8
         include/linux/debugobjects.h:6
         include/linux/spinlock.h:90
         include/linux/workqueue.h:9
         arch/arm64/include/asm/spinlock.h:9
         arch/arm64/include/generated/asm/qrwlock.h:1
         include/asm-generic/qrwlock.h:14
         arch/arm64/include/asm/processor.h:33
         arch/arm64/include/asm/kasan.h:9
         arch/arm64/include/asm/mte-kasan.h:45
         arch/arm64/include/asm/mte-def.h:14
    
    Signed-off-by: Paul Semel <paul.semel@datadoghq.com>
    Fixes: 2cb34276427a ("arm64: kasan: simplify and inline MTE functions")
    Cc: <stable@vger.kernel.org> # 5.12.x
    Link: https://lore.kernel.org/r/bacb5387-2992-97e4-0c48-1ed925905bee@gmail.com
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8b2dc214251aade1126cbb9418b14587c1692b8c
Author: Catalin Marinas <catalin.marinas@arm.com>
Date:   Thu Mar 3 18:00:44 2022 +0000

    arm64: Ensure execute-only permissions are not allowed without EPAN
    
    commit 6e2edd6371a497a6350bb735534c9bda2a31f43d upstream.
    
    Commit 18107f8a2df6 ("arm64: Support execute-only permissions with
    Enhanced PAN") re-introduced execute-only permissions when EPAN is
    available. When EPAN is not available, arch_filter_pgprot() is supposed
    to change a PAGE_EXECONLY permission into PAGE_READONLY_EXEC. However,
    if BTI or MTE are present, such check does not detect the execute-only
    pgprot in the presence of PTE_GP (BTI) or MT_NORMAL_TAGGED (MTE),
    allowing the user to request PROT_EXEC with PROT_BTI or PROT_MTE.
    
    Remove the arch_filter_pgprot() function, change the default VM_EXEC
    permissions to PAGE_READONLY_EXEC and update the protection_map[] array
    at core_initcall() if EPAN is detected.
    
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Fixes: 18107f8a2df6 ("arm64: Support execute-only permissions with Enhanced PAN")
    Cc: <stable@vger.kernel.org> # 5.13.x
    Acked-by: Will Deacon <will@kernel.org>
    Reviewed-by: Vladimir Murzin <vladimir.murzin@arm.com>
    Tested-by: Vladimir Murzin <vladimir.murzin@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 92258a3538fa29c8caa6ca61cdf5857da8628b23
Author: Pali Rohár <pali@kernel.org>
Date:   Thu Mar 10 11:39:23 2022 +0100

    arm64: dts: marvell: armada-37xx: Remap IO space to bus address 0x0
    
    commit a1cc1697bb56cdf880ad4d17b79a39ef2c294bc9 upstream.
    
    Legacy and old PCI I/O based cards do not support 32-bit I/O addressing.
    
    Since commit 64f160e19e92 ("PCI: aardvark: Configure PCIe resources from
    'ranges' DT property") kernel can set different PCIe address on CPU and
    different on the bus for the one A37xx address mapping without any firmware
    support in case the bus address does not conflict with other A37xx mapping.
    
    So remap I/O space to the bus address 0x0 to enable support for old legacy
    I/O port based cards which have hardcoded I/O ports in low address space.
    
    Note that DDR on A37xx is mapped to bus address 0x0. And mapping of I/O
    space can be set to address 0x0 too because MEM space and I/O space are
    separate and so do not conflict.
    
    Remapping IO space on Turris Mox to different address is not possible to
    due bootloader bug.
    
    Signed-off-by: Pali Rohár <pali@kernel.org>
    Reported-by: Arnd Bergmann <arnd@arndb.de>
    Fixes: 76f6386b25cc ("arm64: dts: marvell: Add Aardvark PCIe support for Armada 3700")
    Cc: stable@vger.kernel.org # 64f160e19e92 ("PCI: aardvark: Configure PCIe resources from 'ranges' DT property")
    Cc: stable@vger.kernel.org # 514ef1e62d65 ("arm64: dts: marvell: armada-37xx: Extend PCIe MEM space")
    Reviewed-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4e10787d18379d9b296290c2288097feddef16d4
Author: Daniel Bristot de Oliveira <bristot@kernel.org>
Date:   Wed Mar 9 14:13:02 2022 +0100

    tracing/osnoise: Do not unregister events twice
    
    commit f0cfe17bcc1dd2f0872966b554a148e888833ee9 upstream.
    
    Nicolas reported that using:
    
     # trace-cmd record -e all -M 10 -p osnoise --poll
    
    Resulted in the following kernel warning:
    
     ------------[ cut here ]------------
     WARNING: CPU: 0 PID: 1217 at kernel/tracepoint.c:404 tracepoint_probe_unregister+0x280/0x370
     [...]
     CPU: 0 PID: 1217 Comm: trace-cmd Not tainted 5.17.0-rc6-next-20220307-nico+ #19
     RIP: 0010:tracepoint_probe_unregister+0x280/0x370
     [...]
     CR2: 00007ff919b29497 CR3: 0000000109da4005 CR4: 0000000000170ef0
     Call Trace:
      <TASK>
      osnoise_workload_stop+0x36/0x90
      tracing_set_tracer+0x108/0x260
      tracing_set_trace_write+0x94/0xd0
      ? __check_object_size.part.0+0x10a/0x150
      ? selinux_file_permission+0x104/0x150
      vfs_write+0xb5/0x290
      ksys_write+0x5f/0xe0
      do_syscall_64+0x3b/0x90
      entry_SYSCALL_64_after_hwframe+0x44/0xae
     RIP: 0033:0x7ff919a18127
     [...]
     ---[ end trace 0000000000000000 ]---
    
    The warning complains about an attempt to unregister an
    unregistered tracepoint.
    
    This happens on trace-cmd because it first stops tracing, and
    then switches the tracer to nop. Which is equivalent to:
    
      # cd /sys/kernel/tracing/
      # echo osnoise > current_tracer
      # echo 0 > tracing_on
      # echo nop > current_tracer
    
    The osnoise tracer stops the workload when no trace instance
    is actually collecting data. This can be caused both by
    disabling tracing or disabling the tracer itself.
    
    To avoid unregistering events twice, use the existing
    trace_osnoise_callback_enabled variable to check if the events
    (and the workload) are actually active before trying to
    deactivate them.
    
    Link: https://lore.kernel.org/all/c898d1911f7f9303b7e14726e7cc9678fbfb4a0e.camel@redhat.com/
    Link: https://lkml.kernel.org/r/938765e17d5a781c2df429a98f0b2e7cc317b022.1646823913.git.bristot@kernel.org
    
    Cc: stable@vger.kernel.org
    Cc: Marcelo Tosatti <mtosatti@redhat.com>
    Fixes: 2fac8d6486d5 ("tracing/osnoise: Allow multiple instances of the same tracer")
    Reported-by: Nicolas Saenz Julienne <nsaenzju@redhat.com>
    Signed-off-by: Daniel Bristot de Oliveira <bristot@kernel.org>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d76e75586ddc266bc80867866adb0c2da97c28a2
Author: Nicolas Saenz Julienne <nsaenzju@redhat.com>
Date:   Mon Mar 7 19:07:40 2022 +0100

    tracing/osnoise: Force quiescent states while tracing
    
    commit caf4c86bf136845982c5103b2661751b40c474c0 upstream.
    
    At the moment running osnoise on a nohz_full CPU or uncontested FIFO
    priority and a PREEMPT_RCU kernel might have the side effect of
    extending grace periods too much. This will entice RCU to force a
    context switch on the wayward CPU to end the grace period, all while
    introducing unwarranted noise into the tracer. This behaviour is
    unavoidable as overly extending grace periods might exhaust the system's
    memory.
    
    This same exact problem is what extended quiescent states (EQS) were
    created for, conversely, rcu_momentary_dyntick_idle() emulates them by
    performing a zero duration EQS. So let's make use of it.
    
    In the common case rcu_momentary_dyntick_idle() is fairly inexpensive:
    atomically incrementing a local per-CPU counter and doing a store. So it
    shouldn't affect osnoise's measurements (which has a 1us granularity),
    so we'll call it unanimously.
    
    The uncommon case involve calling rcu_momentary_dyntick_idle() after
    having the osnoise process:
    
     - Receive an expedited quiescent state IPI with preemption disabled or
       during an RCU critical section. (activates rdp->cpu_no_qs.b.exp
       code-path).
    
     - Being preempted within in an RCU critical section and having the
       subsequent outermost rcu_read_unlock() called with interrupts
       disabled. (t->rcu_read_unlock_special.b.blocked code-path).
    
    Neither of those are possible at the moment, and are unlikely to be in
    the future given the osnoise's loop design. On top of this, the noise
    generated by the situations described above is unavoidable, and if not
    exposed by rcu_momentary_dyntick_idle() will be eventually seen in
    subsequent rcu_read_unlock() calls or schedule operations.
    
    Link: https://lkml.kernel.org/r/20220307180740.577607-1-nsaenzju@redhat.com
    
    Cc: stable@vger.kernel.org
    Fixes: bce29ac9ce0b ("trace: Add osnoise tracer")
    Signed-off-by: Nicolas Saenz Julienne <nsaenzju@redhat.com>
    Acked-by: Paul E. McKenney <paulmck@kernel.org>
    Acked-by: Daniel Bristot de Oliveira <bristot@kernel.org>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4f46ec48bff243ebc5b1a789a8e7f9f196e83255
Author: Emil Renner Berthing <kernel@esmil.dk>
Date:   Wed Feb 23 20:12:57 2022 +0100

    riscv: Fix auipc+jalr relocation range checks
    
    commit 0966d385830de3470b7131db8e86c0c5bc9c52dc upstream.
    
    RISC-V can do PC-relative jumps with a 32bit range using the following
    two instructions:
    
            auipc   t0, imm20       ; t0 = PC + imm20 * 2^12
            jalr    ra, t0, imm12   ; ra = PC + 4, PC = t0 + imm12
    
    Crucially both the 20bit immediate imm20 and the 12bit immediate imm12
    are treated as two's-complement signed values. For this reason the
    immediates are usually calculated like this:
    
            imm20 = (offset + 0x800) >> 12
            imm12 = offset & 0xfff
    
    ..where offset is the signed offset from the auipc instruction. When
    the 11th bit of offset is 0 the addition of 0x800 doesn't change the top
    20 bits and imm12 considered positive. When the 11th bit is 1 the carry
    of the addition by 0x800 means imm20 is one higher, but since imm12 is
    then considered negative the two's complement representation means it
    all cancels out nicely.
    
    However, this addition by 0x800 (2^11) means an offset greater than or
    equal to 2^31 - 2^11 would overflow so imm20 is considered negative and
    result in a backwards jump. Similarly the lower range of offset is also
    moved down by 2^11 and hence the true 32bit range is
    
            [-2^31 - 2^11, 2^31 - 2^11)
    
    Signed-off-by: Emil Renner Berthing <kernel@esmil.dk>
    Fixes: e2c0cdfba7f6 ("RISC-V: User-facing API")
    Cc: stable@vger.kernel.org
    Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 700b81b8f11e95d0e03c15b42f2d1cf6dd7afcc2
Author: Rong Chen <rong.chen@amlogic.com>
Date:   Wed Feb 16 20:42:39 2022 +0800

    mmc: meson: Fix usage of meson_mmc_post_req()
    
    commit f0d2f15362f02444c5d7ffd5a5eb03e4aa54b685 upstream.
    
    Currently meson_mmc_post_req() is called in meson_mmc_request() right
    after meson_mmc_start_cmd(). This could lead to DMA unmapping before the request
    is actually finished.
    
    To fix, don't call meson_mmc_post_req() until meson_mmc_request_done().
    
    Signed-off-by: Rong Chen <rong.chen@amlogic.com>
    Reviewed-by: Kevin Hilman <khilman@baylibre.com>
    Fixes: 79ed05e329c3 ("mmc: meson-gx: add support for descriptor chain mode")
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20220216124239.4007667-1-rong.chen@amlogic.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f10316c1e99f5f214dc62e5313aae4f680d05fa4
Author: Jisheng Zhang <jszhang@kernel.org>
Date:   Fri Feb 11 00:49:43 2022 +0800

    riscv: alternative only works on !XIP_KERNEL
    
    commit c80ee64a8020ef1a6a92109798080786829b8994 upstream.
    
    The alternative mechanism needs runtime code patching, it can't work
    on XIP_KERNEL. And the errata workarounds are implemented via the
    alternative mechanism. So add !XIP_KERNEL dependency for alternative
    and erratas.
    
    Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
    Fixes: 44c922572952 ("RISC-V: enable XIP")
    Cc: stable@vger.kernel.org
    Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c049b0b7d4022aa273c336f0d4d5ce0c77c57da4
Author: Robert Hancock <robert.hancock@calian.com>
Date:   Thu Mar 3 12:10:27 2022 -0600

    net: macb: Fix lost RX packet wakeup race in NAPI receive
    
    commit 0bf476fc3624e3a72af4ba7340d430a91c18cd67 upstream.
    
    There is an oddity in the way the RSR register flags propagate to the
    ISR register (and the actual interrupt output) on this hardware: it
    appears that RSR register bits only result in ISR being asserted if the
    interrupt was actually enabled at the time, so enabling interrupts with
    RSR bits already set doesn't trigger an interrupt to be raised. There
    was already a partial fix for this race in the macb_poll function where
    it checked for RSR bits being set and re-triggered NAPI receive.
    However, there was a still a race window between checking RSR and
    actually enabling interrupts, where a lost wakeup could happen. It's
    necessary to check again after enabling interrupts to see if RSR was set
    just prior to the interrupt being enabled, and re-trigger receive in that
    case.
    
    This issue was noticed in a point-to-point UDP request-response protocol
    which periodically saw timeouts or abnormally high response times due to
    received packets not being processed in a timely fashion. In many
    applications, more packets arriving, including TCP retransmissions, would
    cause the original packet to be processed, thus masking the issue.
    
    Fixes: 02f7a34f34e3 ("net: macb: Re-enable RX interrupt only when RX is done")
    Cc: stable@vger.kernel.org
    Co-developed-by: Scott McNutt <scott.mcnutt@siriusxm.com>
    Signed-off-by: Scott McNutt <scott.mcnutt@siriusxm.com>
    Signed-off-by: Robert Hancock <robert.hancock@calian.com>
    Tested-by: Claudiu Beznea <claudiu.beznea@microchip.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d39dc79513e99147b4c158a8a9e46743e23944f5
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Mon Feb 28 10:43:31 2022 +0300

    staging: gdm724x: fix use after free in gdm_lte_rx()
    
    commit fc7f750dc9d102c1ed7bbe4591f991e770c99033 upstream.
    
    The netif_rx_ni() function frees the skb so we can't dereference it to
    save the skb->len.
    
    Fixes: 61e121047645 ("staging: gdm7240: adding LTE USB driver")
    Cc: stable <stable@vger.kernel.org>
    Reported-by: kernel test robot <lkp@intel.com>
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Link: https://lore.kernel.org/r/20220228074331.GA13685@kili
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eaa3d08792b5859f9670b23ab6d85b218f159272
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Wed Mar 2 11:16:36 2022 +0100

    staging: rtl8723bs: Fix access-point mode deadlock
    
    commit 8f4347081be32e67b0873827e0138ab0fdaaf450 upstream.
    
    Commit 54659ca026e5 ("staging: rtl8723bs: remove possible deadlock when
    disconnect (v2)") split the locking of pxmitpriv->lock vs sleep_q/lock
    into 2 locks in attempt to fix a lockdep reported issue with the locking
    order of the sta_hash_lock vs pxmitpriv->lock.
    
    But in the end this turned out to not fully solve the sta_hash_lock issue
    so commit a7ac783c338b ("staging: rtl8723bs: remove a second possible
    deadlock") was added to fix this in another way.
    
    The original fix was kept as it was still seen as a good thing to have,
    but now it turns out that it creates a deadlock in access-point mode:
    
    [Feb20 23:47] ======================================================
    [  +0.074085] WARNING: possible circular locking dependency detected
    [  +0.074077] 5.16.0-1-amd64 #1 Tainted: G         C  E
    [  +0.064710] ------------------------------------------------------
    [  +0.074075] ksoftirqd/3/29 is trying to acquire lock:
    [  +0.060542] ffffb8b30062ab00 (&pxmitpriv->lock){+.-.}-{2:2}, at: rtw_xmit_classifier+0x8a/0x140 [r8723bs]
    [  +0.114921]
                  but task is already holding lock:
    [  +0.069908] ffffb8b3007ab704 (&psta->sleep_q.lock){+.-.}-{2:2}, at: wakeup_sta_to_xmit+0x3b/0x300 [r8723bs]
    [  +0.116976]
                  which lock already depends on the new lock.
    
    [  +0.098037]
                  the existing dependency chain (in reverse order) is:
    [  +0.089704]
                  -> #1 (&psta->sleep_q.lock){+.-.}-{2:2}:
    [  +0.077232]        _raw_spin_lock_bh+0x34/0x40
    [  +0.053261]        xmitframe_enqueue_for_sleeping_sta+0xc1/0x2f0 [r8723bs]
    [  +0.082572]        rtw_xmit+0x58b/0x940 [r8723bs]
    [  +0.056528]        _rtw_xmit_entry+0xba/0x350 [r8723bs]
    [  +0.062755]        dev_hard_start_xmit+0xf1/0x320
    [  +0.056381]        sch_direct_xmit+0x9e/0x360
    [  +0.052212]        __dev_queue_xmit+0xce4/0x1080
    [  +0.055334]        ip6_finish_output2+0x18f/0x6e0
    [  +0.056378]        ndisc_send_skb+0x2c8/0x870
    [  +0.052209]        ndisc_send_ns+0xd3/0x210
    [  +0.050130]        addrconf_dad_work+0x3df/0x5a0
    [  +0.055338]        process_one_work+0x274/0x5a0
    [  +0.054296]        worker_thread+0x52/0x3b0
    [  +0.050124]        kthread+0x16c/0x1a0
    [  +0.044925]        ret_from_fork+0x1f/0x30
    [  +0.049092]
                  -> #0 (&pxmitpriv->lock){+.-.}-{2:2}:
    [  +0.074101]        __lock_acquire+0x10f5/0x1d80
    [  +0.054298]        lock_acquire+0xd7/0x300
    [  +0.049088]        _raw_spin_lock_bh+0x34/0x40
    [  +0.053248]        rtw_xmit_classifier+0x8a/0x140 [r8723bs]
    [  +0.066949]        rtw_xmitframe_enqueue+0xa/0x20 [r8723bs]
    [  +0.066946]        rtl8723bs_hal_xmitframe_enqueue+0x14/0x50 [r8723bs]
    [  +0.078386]        wakeup_sta_to_xmit+0xa6/0x300 [r8723bs]
    [  +0.065903]        rtw_recv_entry+0xe36/0x1160 [r8723bs]
    [  +0.063809]        rtl8723bs_recv_tasklet+0x349/0x6c0 [r8723bs]
    [  +0.071093]        tasklet_action_common.constprop.0+0xe5/0x110
    [  +0.070966]        __do_softirq+0x16f/0x50a
    [  +0.050134]        __irq_exit_rcu+0xeb/0x140
    [  +0.051172]        irq_exit_rcu+0xa/0x20
    [  +0.047006]        common_interrupt+0xb8/0xd0
    [  +0.052214]        asm_common_interrupt+0x1e/0x40
    [  +0.056381]        finish_task_switch.isra.0+0x100/0x3a0
    [  +0.063670]        __schedule+0x3ad/0xd20
    [  +0.048047]        schedule+0x4e/0xc0
    [  +0.043880]        smpboot_thread_fn+0xc4/0x220
    [  +0.054298]        kthread+0x16c/0x1a0
    [  +0.044922]        ret_from_fork+0x1f/0x30
    [  +0.049088]
                  other info that might help us debug this:
    
    [  +0.095950]  Possible unsafe locking scenario:
    
    [  +0.070952]        CPU0                    CPU1
    [  +0.054282]        ----                    ----
    [  +0.054285]   lock(&psta->sleep_q.lock);
    [  +0.047004]                                lock(&pxmitpriv->lock);
    [  +0.074082]                                lock(&psta->sleep_q.lock);
    [  +0.077209]   lock(&pxmitpriv->lock);
    [  +0.043873]
                   *** DEADLOCK ***
    
    [  +0.070950] 1 lock held by ksoftirqd/3/29:
    [  +0.049082]  #0: ffffb8b3007ab704 (&psta->sleep_q.lock){+.-.}-{2:2}, at: wakeup_sta_to_xmit+0x3b/0x300 [r8723bs]
    
    Analysis shows that in hindsight the splitting of the lock was not
    a good idea, so revert this to fix the access-point mode deadlock.
    
    Note this is a straight-forward revert done with git revert, the commented
    out "/* spin_lock_bh(&psta_bmc->sleep_q.lock); */" lines were part of the
    code before the reverted changes.
    
    Fixes: 54659ca026e5 ("staging: rtl8723bs: remove possible deadlock when disconnect (v2)")
    Cc: stable <stable@vger.kernel.org>
    Cc: Fabio Aiuto <fabioaiuto83@gmail.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=215542
    Link: https://lore.kernel.org/r/20220302101637.26542-1-hdegoede@redhat.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 58a9bdff32fde29137731e574b17c42592875fd0
Author: Miklos Szeredi <mszeredi@redhat.com>
Date:   Mon Mar 7 16:30:44 2022 +0100

    fuse: fix pipe buffer lifetime for direct_io
    
    commit 0c4bcfdecb1ac0967619ee7ff44871d93c08c909 upstream.
    
    In FOPEN_DIRECT_IO mode, fuse_file_write_iter() calls
    fuse_direct_write_iter(), which normally calls fuse_direct_io(), which then
    imports the write buffer with fuse_get_user_pages(), which uses
    iov_iter_get_pages() to grab references to userspace pages instead of
    actually copying memory.
    
    On the filesystem device side, these pages can then either be read to
    userspace (via fuse_dev_read()), or splice()d over into a pipe using
    fuse_dev_splice_read() as pipe buffers with &nosteal_pipe_buf_ops.
    
    This is wrong because after fuse_dev_do_read() unlocks the FUSE request,
    the userspace filesystem can mark the request as completed, causing write()
    to return. At that point, the userspace filesystem should no longer have
    access to the pipe buffer.
    
    Fix by copying pages coming from the user address space to new pipe
    buffers.
    
    Reported-by: Jann Horn <jannh@google.com>
    Fixes: c3021629a0d8 ("fuse: support splice() reading from fuse device")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d71d62b62110e35e2f188291822dadb2f51e74dc
Author: Miklos Szeredi <mszeredi@redhat.com>
Date:   Fri Feb 18 11:47:51 2022 +0100

    fuse: fix fileattr op failure
    
    commit a679a61520d8a7b0211a1da990404daf5cc80b72 upstream.
    
    The fileattr API conversion broke lsattr on ntfs3g.
    
    Previously the ioctl(... FS_IOC_GETFLAGS) returned an EINVAL error, but
    after the conversion the error returned by the fuse filesystem was not
    propagated back to the ioctl() system call, resulting in success being
    returned with bogus values.
    
    Fix by checking for outarg.result in fuse_priv_ioctl(), just as generic
    ioctl code does.
    
    Reported-by: Jean-Pierre André <jean-pierre.andre@wanadoo.fr>
    Fixes: 72227eac177d ("fuse: convert to fileattr")
    Cc: <stable@vger.kernel.org> # v5.13
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 34b6fde1188ea1f465572543224645dc3e2c977a
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Fri Mar 11 11:49:12 2022 -0800

    ARM: Spectre-BHB: provide empty stub for non-config
    
    commit 68453767131a5deec1e8f9ac92a9042f929e585d upstream.
    
    When CONFIG_GENERIC_CPU_VULNERABILITIES is not set, references
    to spectre_v2_update_state() cause a build error, so provide an
    empty stub for that function when the Kconfig option is not set.
    
    Fixes this build error:
    
      arm-linux-gnueabi-ld: arch/arm/mm/proc-v7-bugs.o: in function `cpu_v7_bugs_init':
      proc-v7-bugs.c:(.text+0x52): undefined reference to `spectre_v2_update_state'
      arm-linux-gnueabi-ld: proc-v7-bugs.c:(.text+0x82): undefined reference to `spectre_v2_update_state'
    
    Fixes: b9baf5c8c5c3 ("ARM: Spectre-BHB workaround")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Reported-by: kernel test robot <lkp@intel.com>
    Cc: Russell King <rmk+kernel@armlinux.org.uk>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: patches@armlinux.org.uk
    Acked-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7e4bd0cd16eead6a812b0424cc2220e5dd40c0d6
Author: Mike Kravetz <mike.kravetz@oracle.com>
Date:   Fri Feb 25 19:11:26 2022 -0800

    selftests/memfd: clean up mapping in mfd_fail_write
    
    [ Upstream commit fda153c89af344d21df281009a9d046cf587ea0f ]
    
    Running the memfd script ./run_hugetlbfs_test.sh will often end in error
    as follows:
    
        memfd-hugetlb: CREATE
        memfd-hugetlb: BASIC
        memfd-hugetlb: SEAL-WRITE
        memfd-hugetlb: SEAL-FUTURE-WRITE
        memfd-hugetlb: SEAL-SHRINK
        fallocate(ALLOC) failed: No space left on device
        ./run_hugetlbfs_test.sh: line 60: 166855 Aborted                 (core dumped) ./memfd_test hugetlbfs
        opening: ./mnt/memfd
        fuse: DONE
    
    If no hugetlb pages have been preallocated, run_hugetlbfs_test.sh will
    allocate 'just enough' pages to run the test.  In the SEAL-FUTURE-WRITE
    test the mfd_fail_write routine maps the file, but does not unmap.  As a
    result, two hugetlb pages remain reserved for the mapping.  When the
    fallocate call in the SEAL-SHRINK test attempts allocate all hugetlb
    pages, it is short by the two reserved pages.
    
    Fix by making sure to unmap in mfd_fail_write.
    
    Link: https://lkml.kernel.org/r/20220219004340.56478-1-mike.kravetz@oracle.com
    Signed-off-by: Mike Kravetz <mike.kravetz@oracle.com>
    Cc: Joel Fernandes <joel@joelfernandes.org>
    Cc: Shuah Khan <shuah@kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2246b5ebca527eca50e18663578aaa9f2c570f64
Author: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Date:   Fri Feb 25 19:11:08 2022 -0800

    selftest/vm: fix map_fixed_noreplace test failure
    
    [ Upstream commit f39c58008dee7ab5fc94c3f1995a21e886801df0 ]
    
    On the latest RHEL the test fails due to executable mapped at 256MB
    address
    
         # ./map_fixed_noreplace
        mmap() @ 0x10000000-0x10050000 p=0xffffffffffffffff result=File exists
        10000000-10010000 r-xp 00000000 fd:04 34905657                           /root/rpmbuild/BUILD/kernel-5.14.0-56.el9/linux-5.14.0-56.el9.ppc64le/tools/testing/selftests/vm/map_fixed_noreplace
        10010000-10020000 r--p 00000000 fd:04 34905657                           /root/rpmbuild/BUILD/kernel-5.14.0-56.el9/linux-5.14.0-56.el9.ppc64le/tools/testing/selftests/vm/map_fixed_noreplace
        10020000-10030000 rw-p 00010000 fd:04 34905657                           /root/rpmbuild/BUILD/kernel-5.14.0-56.el9/linux-5.14.0-56.el9.ppc64le/tools/testing/selftests/vm/map_fixed_noreplace
        10029b90000-10029bc0000 rw-p 00000000 00:00 0                            [heap]
        7fffbb510000-7fffbb750000 r-xp 00000000 fd:04 24534                      /usr/lib64/libc.so.6
        7fffbb750000-7fffbb760000 r--p 00230000 fd:04 24534                      /usr/lib64/libc.so.6
        7fffbb760000-7fffbb770000 rw-p 00240000 fd:04 24534                      /usr/lib64/libc.so.6
        7fffbb780000-7fffbb7a0000 r--p 00000000 00:00 0                          [vvar]
        7fffbb7a0000-7fffbb7b0000 r-xp 00000000 00:00 0                          [vdso]
        7fffbb7b0000-7fffbb800000 r-xp 00000000 fd:04 24514                      /usr/lib64/ld64.so.2
        7fffbb800000-7fffbb810000 r--p 00040000 fd:04 24514                      /usr/lib64/ld64.so.2
        7fffbb810000-7fffbb820000 rw-p 00050000 fd:04 24514                      /usr/lib64/ld64.so.2
        7fffd93f0000-7fffd9420000 rw-p 00000000 00:00 0                          [stack]
        Error: couldn't map the space we need for the test
    
    Fix this by finding a free address using mmap instead of hardcoding
    BASE_ADDRESS.
    
    Link: https://lkml.kernel.org/r/20220217083417.373823-1-aneesh.kumar@linux.ibm.com
    Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Cc: Jann Horn <jannh@google.com>
    Cc: Shuah Khan <shuah@kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit eefb9defa43d1525fcb2138de9578614157cbc1e
Author: Christophe Leroy <christophe.leroy@csgroup.eu>
Date:   Mon Dec 20 16:38:06 2021 +0000

    tracing: Fix selftest config check for function graph start up test
    
    [ Upstream commit c5229a0bd47814770c895e94fbc97ad21819abfe ]
    
    CONFIG_DYNAMIC_FTRACE_WITH_DIRECT_CALLS is required to test
    direct tramp.
    
    Link: https://lkml.kernel.org/r/bdc7e594e13b0891c1d61bc8d56c94b1890eaed7.1640017960.git.christophe.leroy@csgroup.eu
    
    Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3237183c829be05fd067962e2508b3e4b1beb977
Author: Daniel Bristot de Oliveira <bristot@kernel.org>
Date:   Fri Feb 18 16:17:38 2022 +0100

    tracing/osnoise: Make osnoise_main to sleep for microseconds
    
    [ Upstream commit dd990352f01ee9a6c6eee152e5d11c021caccfe4 ]
    
    osnoise's runtime and period are in the microseconds scale, but it is
    currently sleeping in the millisecond's scale. This behavior roots in the
    usage of hwlat as the skeleton for osnoise.
    
    Make osnoise to sleep in the microseconds scale. Also, move the sleep to
    a specialized function.
    
    Link: https://lkml.kernel.org/r/302aa6c7bdf2d131719b22901905e9da122a11b2.1645197336.git.bristot@kernel.org
    
    Cc: Ingo Molnar <mingo@redhat.com>
    Signed-off-by: Daniel Bristot de Oliveira <bristot@kernel.org>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2a44a82a8fd10b99e7be35833af61c631f108c41
Author: Sven Schnelle <svens@linux.ibm.com>
Date:   Mon Feb 14 14:44:56 2022 +0100

    tracing: Ensure trace buffer is at least 4096 bytes large
    
    [ Upstream commit 7acf3a127bb7c65ff39099afd78960e77b2ca5de ]
    
    Booting the kernel with 'trace_buf_size=1' give a warning at
    boot during the ftrace selftests:
    
    [    0.892809] Running postponed tracer tests:
    [    0.892893] Testing tracer function:
    [    0.901899] Callback from call_rcu_tasks_trace() invoked.
    [    0.983829] Callback from call_rcu_tasks_rude() invoked.
    [    1.072003] .. bad ring buffer .. corrupted trace buffer ..
    [    1.091944] Callback from call_rcu_tasks() invoked.
    [    1.097695] PASSED
    [    1.097701] Testing dynamic ftrace: .. filter failed count=0 ..FAILED!
    [    1.353474] ------------[ cut here ]------------
    [    1.353478] WARNING: CPU: 0 PID: 1 at kernel/trace/trace.c:1951 run_tracer_selftest+0x13c/0x1b0
    
    Therefore enforce a minimum of 4096 bytes to make the selftest pass.
    
    Link: https://lkml.kernel.org/r/20220214134456.1751749-1-svens@linux.ibm.com
    
    Signed-off-by: Sven Schnelle <svens@linux.ibm.com>
    Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ee89f39c5e85dc539c4e50669830c549199bc52a
Author: Niels Dossche <dossche.niels@gmail.com>
Date:   Wed Feb 23 14:19:56 2022 +0100

    ipv6: prevent a possible race condition with lifetimes
    
    [ Upstream commit 6c0d8833a605e195ae219b5042577ce52bf71fff ]
    
    valid_lft, prefered_lft and tstamp are always accessed under the lock
    "lock" in other places. Reading these without taking the lock may result
    in inconsistencies regarding the calculation of the valid and preferred
    variables since decisions are taken on these fields for those variables.
    
    Signed-off-by: Niels Dossche <dossche.niels@gmail.com>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Signed-off-by: Niels Dossche <niels.dossche@ugent.be>
    Link: https://lore.kernel.org/r/20220223131954.6570-1-niels.dossche@ugent.be
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 728d6b528d66aa66e9a81fe3504d369318278957
Author: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Date:   Tue Feb 22 01:18:17 2022 +0100

    Revert "xen-netback: Check for hotplug-status existence before watching"
    
    [ Upstream commit e8240addd0a3919e0fd7436416afe9aa6429c484 ]
    
    This reverts commit 2afeec08ab5c86ae21952151f726bfe184f6b23d.
    
    The reasoning in the commit was wrong - the code expected to setup the
    watch even if 'hotplug-status' didn't exist. In fact, it relied on the
    watch being fired the first time - to check if maybe 'hotplug-status' is
    already set to 'connected'. Not registering a watch for non-existing
    path (which is the case if hotplug script hasn't been executed yet),
    made the backend not waiting for the hotplug script to execute. This in
    turns, made the netfront think the interface is fully operational, while
    in fact it was not (the vif interface on xen-netback side might not be
    configured yet).
    
    This was a workaround for 'hotplug-status' erroneously being removed.
    But since that is reverted now, the workaround is not necessary either.
    
    More discussion at
    https://lore.kernel.org/xen-devel/afedd7cb-a291-e773-8b0d-4db9b291fa98@ipxe.org/T/#u
    
    Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
    Reviewed-by: Paul Durrant <paul@xen.org>
    Reviewed-by: Michael Brown <mbrown@fensystems.co.uk>
    Link: https://lore.kernel.org/r/20220222001817.2264967-2-marmarek@invisiblethingslab.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5f469346d25aa31254388f1c5756272ca7037625
Author: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Date:   Tue Feb 22 01:18:16 2022 +0100

    Revert "xen-netback: remove 'hotplug-status' once it has served its purpose"
    
    [ Upstream commit 0f4558ae91870692ce7f509c31c9d6ee721d8cdc ]
    
    This reverts commit 1f2565780e9b7218cf92c7630130e82dcc0fe9c2.
    
    The 'hotplug-status' node should not be removed as long as the vif
    device remains configured. Otherwise the xen-netback would wait for
    re-running the network script even if it was already called (in case of
    the frontent re-connecting). But also, it _should_ be removed when the
    vif device is destroyed (for example when unbinding the driver) -
    otherwise hotplug script would not configure the device whenever it
    re-appear.
    
    Moving removal of the 'hotplug-status' node was a workaround for nothing
    calling network script after xen-netback module is reloaded. But when
    vif interface is re-created (on xen-netback unbind/bind for example),
    the script should be called, regardless of who does that - currently
    this case is not handled by the toolstack, and requires manual
    script call. Keeping hotplug-status=connected to skip the call is wrong
    and leads to not configured interface.
    
    More discussion at
    https://lore.kernel.org/xen-devel/afedd7cb-a291-e773-8b0d-4db9b291fa98@ipxe.org/T/#u
    
    Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
    Reviewed-by: Paul Durrant <paul@xen.org>
    Link: https://lore.kernel.org/r/20220222001817.2264967-1-marmarek@invisiblethingslab.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cb29021be49858059138f75d6311a7c35a9379b2
Author: Guchun Chen <guchun.chen@amd.com>
Date:   Fri Feb 18 13:05:26 2022 +0800

    drm/amdgpu: bypass tiling flag check in virtual display case (v2)
    
    [ Upstream commit e2b993302f40c4eb714ecf896dd9e1c5be7d4cd7 ]
    
    vkms leverages common amdgpu framebuffer creation, and
    also as it does not support FB modifier, there is no need
    to check tiling flags when initing framebuffer when virtual
    display is enabled.
    
    This can fix below calltrace:
    
    amdgpu 0000:00:08.0: GFX9+ requires FB check based on format modifier
    WARNING: CPU: 0 PID: 1023 at drivers/gpu/drm/amd/amdgpu/amdgpu_display.c:1150 amdgpu_display_framebuffer_init+0x8e7/0xb40 [amdgpu]
    
    v2: check adev->enable_virtual_display instead as vkms can be
            enabled in bare metal as well.
    
    Signed-off-by: Leslie Shi <Yuliang.Shi@amd.com>
    Signed-off-by: Guchun Chen <guchun.chen@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 5b9d2a069dc8331b1198d0774f0f35a583fd47d7
Author: Shreeya Patel <shreeya.patel@collabora.com>
Date:   Thu Feb 17 01:56:55 2022 +0530

    gpio: Return EPROBE_DEFER if gc->to_irq is NULL
    
    [ Upstream commit ae42f9288846353982e2eab181fb41e7fd8bf60f ]
    
    We are racing the registering of .to_irq when probing the
    i2c driver. This results in random failure of touchscreen
    devices.
    
    Following explains the race condition better.
    
    [gpio driver] gpio driver registers gpio chip
    [gpio consumer] gpio is acquired
    [gpio consumer] gpiod_to_irq() fails with -ENXIO
    [gpio driver] gpio driver registers irqchip
    gpiod_to_irq works at this point, but -ENXIO is fatal
    
    We could see the following errors in dmesg logs when gc->to_irq is NULL
    
    [2.101857] i2c_hid i2c-FTS3528:00: HID over i2c has not been provided an Int IRQ
    [2.101953] i2c_hid: probe of i2c-FTS3528:00 failed with error -22
    
    To avoid this situation, defer probing until to_irq is registered.
    Returning -EPROBE_DEFER would be the first step towards avoiding
    the failure of devices due to the race in registration of .to_irq.
    Final solution to this issue would be to avoid using gc irq members
    until they are fully initialized.
    
    This issue has been reported many times in past and people have been
    using workarounds like changing the pinctrl_amd to built-in instead
    of loading it as a module or by adding a softdep for pinctrl_amd into
    the config file.
    
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=209413
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Reported-by: kernel test robot <lkp@intel.com>
    Signed-off-by: Shreeya Patel <shreeya.patel@collabora.com>
    Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit da881c5f264d04065b6b8504f411380844b4ffc8
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Tue Feb 22 11:08:01 2022 -0500

    PCI: Mark all AMD Navi10 and Navi14 GPU ATS as broken
    
    [ Upstream commit 3f1271b54edcc692da5a3663f2aa2a64781f9bc3 ]
    
    There are enough VBIOS escapes without the proper workaround that some
    users still hit this.  Microsoft never productized ATS on Windows so OEM
    platforms that were Windows-only didn't always validate ATS.
    
    The advantages of ATS are not worth it compared to the potential
    instabilities on harvested boards.  Disable ATS on all Navi10 and Navi14
    boards.
    
    Symptoms include:
    
      amdgpu 0000:07:00.0: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0007 address=0xffffc02000 flags=0x0000]
      AMD-Vi: Event logged [IO_PAGE_FAULT device=07:00.0 domain=0x0007 address=0xffffc02000 flags=0x0000]
      [drm:amdgpu_job_timedout [amdgpu]] *ERROR* ring sdma0 timeout, signaled seq=6047, emitted seq=6049
      amdgpu 0000:07:00.0: amdgpu: GPU reset begin!
      amdgpu 0000:07:00.0: amdgpu: GPU reset succeeded, trying to resume
      amdgpu 0000:07:00.0: [drm:amdgpu_ring_test_helper [amdgpu]] *ERROR* ring sdma0 test failed (-110)
      [drm:amdgpu_device_ip_resume_phase2 [amdgpu]] *ERROR* resume of IP block <sdma_v4_0> failed -110
      amdgpu 0000:07:00.0: amdgpu: GPU reset(1) failed
    
    Related commits:
    
      e8946a53e2a6 ("PCI: Mark AMD Navi14 GPU ATS as broken")
      a2da5d8cc0b0 ("PCI: Mark AMD Raven iGPU ATS as broken in some platforms")
      45beb31d3afb ("PCI: Mark AMD Navi10 GPU rev 0x00 ATS as broken")
      5e89cd303e3a ("PCI: Mark AMD Navi14 GPU rev 0xc5 ATS as broken")
      d28ca864c493 ("PCI: Mark AMD Stoney Radeon R7 GPU ATS as broken")
      9b44b0b09dec ("PCI: Mark AMD Stoney GPU ATS as broken")
    
    [bhelgaas: add symptoms and related commits]
    Bug: https://gitlab.freedesktop.org/drm/amd/-/issues/1760
    Link: https://lore.kernel.org/r/20220222160801.841643-1-alexander.deucher@amd.com
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Acked-by: Christian König <christian.koenig@amd.com>
    Acked-by: Guchun Chen <guchun.chen@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9c581b0cd7b70ea9eaf85c3755e327c51f8c51ea
Author: Varun Prakash <varun@chelsio.com>
Date:   Sat Jan 22 22:27:44 2022 +0530

    nvme-tcp: send H2CData PDUs based on MAXH2CDATA
    
    [ Upstream commit c2700d2886a87f83f31e0a301de1d2350b52c79b ]
    
    As per NVMe/TCP specification (revision 1.0a, section 3.6.2.3)
    Maximum Host to Controller Data length (MAXH2CDATA): Specifies the
    maximum number of PDU-Data bytes per H2CData PDU in bytes. This value
    is a multiple of dwords and should be no less than 4,096.
    
    Current code sets H2CData PDU data_length to r2t_length,
    it does not check MAXH2CDATA value. Fix this by setting H2CData PDU
    data_length to min(req->h2cdata_left, queue->maxh2cdata).
    
    Also validate MAXH2CDATA value returned by target in ICResp PDU,
    if it is not a multiple of dword or if it is less than 4096 return
    -EINVAL from nvme_tcp_init_connection().
    
    Signed-off-by: Varun Prakash <varun@chelsio.com>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c48932f23f9832ef1482625a4e0a837a22bcc80a
Author: Vikash Chandola <vikash.chandola@linux.intel.com>
Date:   Tue Feb 22 13:12:53 2022 +0000

    hwmon: (pmbus) Clear pmbus fault/warning bits after read
    
    [ Upstream commit 35f165f08950a876f1b95a61d79c93678fba2fd6 ]
    
    Almost all fault/warning bits in pmbus status registers remain set even
    after fault/warning condition are removed. As per pmbus specification
    these faults must be cleared by user.
    Modify hwmon behavior to clear fault/warning bit after fetching data if
    fault/warning bit was set. This allows to get fresh data in next read.
    
    Signed-off-by: Vikash Chandola <vikash.chandola@linux.intel.com>
    Link: https://lore.kernel.org/r/20220222131253.2426834-1-vikash.chandola@linux.intel.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3a79f380b3e10edf6caa9aac90163a5d7a282204
Author: suresh kumar <suresh2514@gmail.com>
Date:   Thu Feb 17 07:25:18 2022 +0530

    net-sysfs: add check for netdevice being present to speed_show
    
    [ Upstream commit 4224cfd7fb6523f7a9d1c8bb91bb5df1e38eb624 ]
    
    When bringing down the netdevice or system shutdown, a panic can be
    triggered while accessing the sysfs path because the device is already
    removed.
    
        [  755.549084] mlx5_core 0000:12:00.1: Shutdown was called
        [  756.404455] mlx5_core 0000:12:00.0: Shutdown was called
        ...
        [  757.937260] BUG: unable to handle kernel NULL pointer dereference at           (null)
        [  758.031397] IP: [<ffffffff8ee11acb>] dma_pool_alloc+0x1ab/0x280
    
        crash> bt
        ...
        PID: 12649  TASK: ffff8924108f2100  CPU: 1   COMMAND: "amsd"
        ...
         #9 [ffff89240e1a38b0] page_fault at ffffffff8f38c778
            [exception RIP: dma_pool_alloc+0x1ab]
            RIP: ffffffff8ee11acb  RSP: ffff89240e1a3968  RFLAGS: 00010046
            RAX: 0000000000000246  RBX: ffff89243d874100  RCX: 0000000000001000
            RDX: 0000000000000000  RSI: 0000000000000246  RDI: ffff89243d874090
            RBP: ffff89240e1a39c0   R8: 000000000001f080   R9: ffff8905ffc03c00
            R10: ffffffffc04680d4  R11: ffffffff8edde9fd  R12: 00000000000080d0
            R13: ffff89243d874090  R14: ffff89243d874080  R15: 0000000000000000
            ORIG_RAX: ffffffffffffffff  CS: 0010  SS: 0018
        #10 [ffff89240e1a39c8] mlx5_alloc_cmd_msg at ffffffffc04680f3 [mlx5_core]
        #11 [ffff89240e1a3a18] cmd_exec at ffffffffc046ad62 [mlx5_core]
        #12 [ffff89240e1a3ab8] mlx5_cmd_exec at ffffffffc046b4fb [mlx5_core]
        #13 [ffff89240e1a3ae8] mlx5_core_access_reg at ffffffffc0475434 [mlx5_core]
        #14 [ffff89240e1a3b40] mlx5e_get_fec_caps at ffffffffc04a7348 [mlx5_core]
        #15 [ffff89240e1a3bb0] get_fec_supported_advertised at ffffffffc04992bf [mlx5_core]
        #16 [ffff89240e1a3c08] mlx5e_get_link_ksettings at ffffffffc049ab36 [mlx5_core]
        #17 [ffff89240e1a3ce8] __ethtool_get_link_ksettings at ffffffff8f25db46
        #18 [ffff89240e1a3d48] speed_show at ffffffff8f277208
        #19 [ffff89240e1a3dd8] dev_attr_show at ffffffff8f0b70e3
        #20 [ffff89240e1a3df8] sysfs_kf_seq_show at ffffffff8eedbedf
        #21 [ffff89240e1a3e18] kernfs_seq_show at ffffffff8eeda596
        #22 [ffff89240e1a3e28] seq_read at ffffffff8ee76d10
        #23 [ffff89240e1a3e98] kernfs_fop_read at ffffffff8eedaef5
        #24 [ffff89240e1a3ed8] vfs_read at ffffffff8ee4e3ff
        #25 [ffff89240e1a3f08] sys_read at ffffffff8ee4f27f
        #26 [ffff89240e1a3f50] system_call_fastpath at ffffffff8f395f92
    
        crash> net_device.state ffff89443b0c0000
          state = 0x5  (__LINK_STATE_START| __LINK_STATE_NOCARRIER)
    
    To prevent this scenario, we also make sure that the netdevice is present.
    
    Signed-off-by: suresh kumar <suresh2514@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4356343fb70c899901bce33acedf4fede797d21f
Author: Duoming Zhou <duoming@zju.edu.cn>
Date:   Thu Feb 17 09:43:03 2022 +0800

    drivers: hamradio: 6pack: fix UAF bug caused by mod_timer()
    
    [ Upstream commit efe4186e6a1b54bf38b9e05450d43b0da1fd7739 ]
    
    When a 6pack device is detaching, the sixpack_close() will act to cleanup
    necessary resources. Although del_timer_sync() in sixpack_close()
    won't return if there is an active timer, one could use mod_timer() in
    sp_xmit_on_air() to wake up timer again by calling userspace syscall such
    as ax25_sendmsg(), ax25_connect() and ax25_ioctl().
    
    This unexpected waked handler, sp_xmit_on_air(), realizes nothing about
    the undergoing cleanup and may still call pty_write() to use driver layer
    resources that have already been released.
    
    One of the possible race conditions is shown below:
    
          (USE)                      |      (FREE)
    ax25_sendmsg()                   |
     ax25_queue_xmit()               |
      ...                            |
      sp_xmit()                      |
       sp_encaps()                   | sixpack_close()
        sp_xmit_on_air()             |  del_timer_sync(&sp->tx_t)
         mod_timer(&sp->tx_t,...)    |  ...
                                     |  unregister_netdev()
                                     |  ...
         (wait a while)              | tty_release()
                                     |  tty_release_struct()
                                     |   release_tty()
        sp_xmit_on_air()             |    tty_kref_put(tty_struct) //FREE
         pty_write(tty_struct) //USE |    ...
    
    The corresponding fail log is shown below:
    ===============================================================
    BUG: KASAN: use-after-free in __run_timers.part.0+0x170/0x470
    Write of size 8 at addr ffff88800a652ab8 by task swapper/2/0
    ...
    Call Trace:
      ...
      queue_work_on+0x3f/0x50
      pty_write+0xcd/0xe0pty_write+0xcd/0xe0
      sp_xmit_on_air+0xb2/0x1f0
      call_timer_fn+0x28/0x150
      __run_timers.part.0+0x3c2/0x470
      run_timer_softirq+0x3b/0x80
      __do_softirq+0xf1/0x380
      ...
    
    This patch reorders the del_timer_sync() after the unregister_netdev()
    to avoid UAF bugs. Because the unregister_netdev() is well synchronized,
    it flushs out any pending queues, waits the refcount of net_device
    decreases to zero and removes net_device from kernel. There is not any
    running routines after executing unregister_netdev(). Therefore, we could
    not arouse timer from userspace again.
    
    Signed-off-by: Duoming Zhou <duoming@zju.edu.cn>
    Reviewed-by: Lin Ma <linma@zju.edu.cn>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4e68c4b475672592c71b4a7d1f1aff93c419e451
Author: Wanpeng Li <wanpengli@tencent.com>
Date:   Fri Feb 18 00:10:38 2022 -0800

    x86/kvm: Don't use pv tlb/ipi/sched_yield if on 1 vCPU
    
    [ Upstream commit ec756e40e271866f951d77c5e923d8deb6002b15 ]
    
    Inspired by commit 3553ae5690a (x86/kvm: Don't use pvqspinlock code if
    only 1 vCPU), on a VM with only 1 vCPU, there is no need to enable
    pv tlb/ipi/sched_yield and we can save the memory for __pv_cpu_mask.
    
    Signed-off-by: Wanpeng Li <wanpengli@tencent.com>
    Message-Id: <1645171838-2855-1-git-send-email-wanpengli@tencent.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0fc4186cd5a69e8fb7042b88c8ce4beadbb0d809
Author: Nikhil Gupta <nikhil.gupta@nxp.com>
Date:   Fri Jan 28 09:53:21 2022 +0530

    of/fdt: move elfcorehdr reservation early for crash dump kernel
    
    [ Upstream commit 132507ed04ce0c5559be04dd378fec4f3bbc00e8 ]
    
    elfcorehdr_addr is fixed address passed to Second kernel which may be conflicted
    with potential reserved memory in Second kernel,so fdt_reserve_elfcorehdr() ahead
    of fdt_init_reserved_mem() can relieve this situation.
    
    Signed-off-by: Nikhil Gupta <nikhil.gupta@nxp.com>
    Signed-off-by: Rob Herring <robh@kernel.org>
    Link: https://lore.kernel.org/r/20220128042321.15228-1-nikhil.gupta@nxp.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1ed68d776246f167aee9cd79f63f089c40a5e2a3
Author: Maxime Ripard <maxime@cerno.tech>
Date:   Thu Jan 27 12:14:52 2022 +0100

    drm/vc4: hdmi: Unregister codec device on unbind
    
    [ Upstream commit e40945ab7c7f966d0c37b7bd7b0596497dfe228d ]
    
    On bind we will register the HDMI codec device but we don't unregister
    it on unbind, leading to a device leakage. Unregister our device at
    unbind.
    
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220127111452.222002-1-maxime@cerno.tech
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 55b06ea6851c8cb29e56aa7cb94f0bc75a69dfa1
Author: Jon Lin <jon.lin@rock-chips.com>
Date:   Wed Feb 16 09:40:24 2022 +0800

    spi: rockchip: terminate dma transmission when slave abort
    
    [ Upstream commit 80808768e41324d2e23de89972b5406c1020e6e4 ]
    
    After slave abort, all DMA should be stopped, or it will affect the
    next transmission and maybe abort again.
    
    Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
    Link: https://lore.kernel.org/r/20220216014028.8123-3-jon.lin@rock-chips.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 390975262b082cf2ededd6890dbb4498aa9b0f9c
Author: Jon Lin <jon.lin@rock-chips.com>
Date:   Wed Feb 16 09:40:23 2022 +0800

    spi: rockchip: Fix error in getting num-cs property
    
    [ Upstream commit 9382df0a98aad5bbcd4d634790305a1d786ad224 ]
    
    Get num-cs u32 from dts of_node property rather than u16.
    
    Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
    Link: https://lore.kernel.org/r/20220216014028.8123-2-jon.lin@rock-chips.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 30e14ba65ef1c82f322780cad1f66b3831549c07
Author: Anton Romanov <romanton@google.com>
Date:   Wed Feb 16 18:26:54 2022 +0000

    kvm: x86: Disable KVM_HC_CLOCK_PAIRING if tsc is in always catchup mode
    
    [ Upstream commit 3a55f729240a686aa8af00af436306c0cd532522 ]
    
    If vcpu has tsc_always_catchup set each request updates pvclock data.
    KVM_HC_CLOCK_PAIRING consumers such as ptp_kvm_x86 rely on tsc read on
    host's side and do hypercall inside pvclock_read_retry loop leading to
    infinite loop in such situation.
    
    v3:
        Removed warn
        Changed return code to KVM_EFAULT
    v2:
        Added warn
    
    Signed-off-by: Anton Romanov <romanton@google.com>
    Message-Id: <20220216182653.506850-1-romanton@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e0fe243d3c936beb02697440a1e4c5a26da3fd30
Author: Wanpeng Li <wanpengli@tencent.com>
Date:   Tue Feb 15 02:15:42 2022 -0800

    KVM: Fix lockdep false negative during host resume
    
    [ Upstream commit 4cb9a998b1ce25fad74a82f5a5c45a4ef40de337 ]
    
    I saw the below splatting after the host suspended and resumed.
    
       WARNING: CPU: 0 PID: 2943 at kvm/arch/x86/kvm/../../../virt/kvm/kvm_main.c:5531 kvm_resume+0x2c/0x30 [kvm]
       CPU: 0 PID: 2943 Comm: step_after_susp Tainted: G        W IOE     5.17.0-rc3+ #4
       RIP: 0010:kvm_resume+0x2c/0x30 [kvm]
       Call Trace:
        <TASK>
        syscore_resume+0x90/0x340
        suspend_devices_and_enter+0xaee/0xe90
        pm_suspend.cold+0x36b/0x3c2
        state_store+0x82/0xf0
        kernfs_fop_write_iter+0x1b6/0x260
        new_sync_write+0x258/0x370
        vfs_write+0x33f/0x510
        ksys_write+0xc9/0x160
        do_syscall_64+0x3b/0xc0
        entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    lockdep_is_held() can return -1 when lockdep is disabled which triggers
    this warning. Let's use lockdep_assert_not_held() which can detect
    incorrect calls while holding a lock and it also avoids false negatives
    when lockdep is disabled.
    
    Signed-off-by: Wanpeng Li <wanpengli@tencent.com>
    Message-Id: <1644920142-81249-1-git-send-email-wanpengli@tencent.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 509d24f6aa9d00de6463cb3e65d477cb0a5b5629
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Tue Dec 14 19:49:13 2021 +0200

    pinctrl: tigerlake: Revert "Add Alder Lake-M ACPI ID"
    
    [ Upstream commit 6f66db29e2415cbe8759c48584f9cae19b3c2651 ]
    
    It appears that last minute change moved ACPI ID of Alder Lake-M
    to the INTC1055, which is already in the driver.
    
    This ID on the other hand will be used elsewhere.
    
    This reverts commit 258435a1c8187f559549e515d2f77fa0b57bcd27.
    
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e8dc267ee5eb00477d6e879a89528b1ceb836aaf
Author: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Date:   Mon Feb 14 17:19:48 2022 +0300

    usb: dwc3: pci: add support for the Intel Raptor Lake-S
    
    [ Upstream commit 038438a25c45d5ac996e95a22fa9e76ff3d1f8c7 ]
    
    This patch adds the necessary PCI ID for Intel Raptor Lake-S
    devices.
    
    Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Link: https://lore.kernel.org/r/20220214141948.18637-1-heikki.krogerus@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 270475d6d2410ec66e971bf181afe1958dad565e
Author: Halil Pasic <pasic@linux.ibm.com>
Date:   Fri Feb 11 02:12:52 2022 +0100

    swiotlb: fix info leak with DMA_FROM_DEVICE
    
    [ Upstream commit ddbd89deb7d32b1fbb879f48d68fda1a8ac58e8e ]
    
    The problem I'm addressing was discovered by the LTP test covering
    cve-2018-1000204.
    
    A short description of what happens follows:
    1) The test case issues a command code 00 (TEST UNIT READY) via the SG_IO
       interface with: dxfer_len == 524288, dxdfer_dir == SG_DXFER_FROM_DEV
       and a corresponding dxferp. The peculiar thing about this is that TUR
       is not reading from the device.
    2) In sg_start_req() the invocation of blk_rq_map_user() effectively
       bounces the user-space buffer. As if the device was to transfer into
       it. Since commit a45b599ad808 ("scsi: sg: allocate with __GFP_ZERO in
       sg_build_indirect()") we make sure this first bounce buffer is
       allocated with GFP_ZERO.
    3) For the rest of the story we keep ignoring that we have a TUR, so the
       device won't touch the buffer we prepare as if the we had a
       DMA_FROM_DEVICE type of situation. My setup uses a virtio-scsi device
       and the  buffer allocated by SG is mapped by the function
       virtqueue_add_split() which uses DMA_FROM_DEVICE for the "in" sgs (here
       scatter-gather and not scsi generics). This mapping involves bouncing
       via the swiotlb (we need swiotlb to do virtio in protected guest like
       s390 Secure Execution, or AMD SEV).
    4) When the SCSI TUR is done, we first copy back the content of the second
       (that is swiotlb) bounce buffer (which most likely contains some
       previous IO data), to the first bounce buffer, which contains all
       zeros.  Then we copy back the content of the first bounce buffer to
       the user-space buffer.
    5) The test case detects that the buffer, which it zero-initialized,
      ain't all zeros and fails.
    
    One can argue that this is an swiotlb problem, because without swiotlb
    we leak all zeros, and the swiotlb should be transparent in a sense that
    it does not affect the outcome (if all other participants are well
    behaved).
    
    Copying the content of the original buffer into the swiotlb buffer is
    the only way I can think of to make swiotlb transparent in such
    scenarios. So let's do just that if in doubt, but allow the driver
    to tell us that the whole mapped buffer is going to be overwritten,
    in which case we can preserve the old behavior and avoid the performance
    impact of the extra bounce.
    
    Signed-off-by: Halil Pasic <pasic@linux.ibm.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f0f2f2a009c44be3d8f8f1ec0679bd8c3d0bd380
Author: Kumar Kartikeya Dwivedi <memxor@gmail.com>
Date:   Wed Feb 9 12:33:24 2022 +0530

    selftests/bpf: Add test for bpf_timer overwriting crash
    
    [ Upstream commit a7e75016a0753c24d6c995bc02501ae35368e333 ]
    
    Add a test that validates that timer value is not overwritten when doing
    a copy_map_value call in the kernel. Without the prior fix, this test
    triggers a crash.
    
    Signed-off-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Link: https://lore.kernel.org/bpf/20220209070324.1093182-3-memxor@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7e51b3e00c33f9ff21fdafe530c59247ccb79403
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Wed Mar 9 22:04:47 2022 +0100

    net: phy: meson-gxl: improve link-up behavior
    
    [ Upstream commit 2c87c6f9fbddc5b84d67b2fa3f432fcac6d99d93 ]
    
    Sometimes the link comes up but no data flows. This patch fixes
    this behavior. It's not clear what's the root cause of the issue.
    
    According to the tests one other link-up issue remains.
    In very rare cases the link isn't even reported as up.
    
    Fixes: 84c8f773d2dc ("net: phy: meson-gxl: remove the use of .ack_callback()")
    Tested-by: Erico Nunes <nunes.erico@gmail.com>
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Link: https://lore.kernel.org/r/e3473452-a1f9-efcf-5fdd-02b6f44c3fcd@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4b77baeddb66b2e8f75321840ea34b82e3944d64
Author: Jeremy Linton <jeremy.linton@arm.com>
Date:   Wed Mar 9 22:55:35 2022 -0600

    net: bcmgenet: Don't claim WOL when its not available
    
    [ Upstream commit 00b022f8f876a3a036b0df7f971001bef6398605 ]
    
    Some of the bcmgenet platforms don't correctly support WOL, yet
    ethtool returns:
    
    "Supports Wake-on: gsf"
    
    which is false.
    
    Ideally if there isn't a wol_irq, or there is something else that
    keeps the device from being able to wakeup it should display:
    
    "Supports Wake-on: d"
    
    This patch checks whether the device can wakup, before using the
    hard-coded supported flags. This corrects the ethtool reporting, as
    well as the WOL configuration because ethtool verifies that the mode
    is supported before attempting it.
    
    Fixes: c51de7f3976b ("net: bcmgenet: add Wake-on-LAN support code")
    Signed-off-by: Jeremy Linton <jeremy.linton@arm.com>
    Tested-by: Peter Robinson <pbrobinson@gmail.com>
    Acked-by: Florian Fainelli <f.fainelli@gmail.com>
    Link: https://lore.kernel.org/r/20220310045535.224450-1-jeremy.linton@arm.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 84c831803785c2c3bec5c28c0e8a0b72f6b41d4d
Author: Jianglei Nie <niejianglei2021@163.com>
Date:   Wed Mar 9 20:18:24 2022 +0800

    net: arc_emac: Fix use after free in arc_mdio_probe()
    
    [ Upstream commit bc0e610a6eb0d46e4123fafdbe5e6141d9fff3be ]
    
    If bus->state is equal to MDIOBUS_ALLOCATED, mdiobus_free(bus) will free
    the "bus". But bus->name is still used in the next line, which will lead
    to a use after free.
    
    We can fix it by putting the name in a local variable and make the
    bus->name point to the rodata section "name",then use the name in the
    error message without referring to bus to avoid the uaf.
    
    Fixes: 95b5fc03c189 ("net: arc_emac: Make use of the helper function dev_err_probe()")
    Signed-off-by: Jianglei Nie <niejianglei2021@163.com>
    Link: https://lore.kernel.org/r/20220309121824.36529-1-niejianglei2021@163.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d828b0fe6631f3ae8709ac9a10c77c5836c76a08
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Mar 9 16:11:45 2022 -0800

    sctp: fix kernel-infoleak for SCTP sockets
    
    [ Upstream commit 633593a808980f82d251d0ca89730d8bb8b0220c ]
    
    syzbot reported a kernel infoleak [1] of 4 bytes.
    
    After analysis, it turned out r->idiag_expires is not initialized
    if inet_sctp_diag_fill() calls inet_diag_msg_common_fill()
    
    Make sure to clear idiag_timer/idiag_retrans/idiag_expires
    and let inet_diag_msg_sctpasoc_fill() fill them again if needed.
    
    [1]
    
    BUG: KMSAN: kernel-infoleak in instrument_copy_to_user include/linux/instrumented.h:121 [inline]
    BUG: KMSAN: kernel-infoleak in copyout lib/iov_iter.c:154 [inline]
    BUG: KMSAN: kernel-infoleak in _copy_to_iter+0x6ef/0x25a0 lib/iov_iter.c:668
     instrument_copy_to_user include/linux/instrumented.h:121 [inline]
     copyout lib/iov_iter.c:154 [inline]
     _copy_to_iter+0x6ef/0x25a0 lib/iov_iter.c:668
     copy_to_iter include/linux/uio.h:162 [inline]
     simple_copy_to_iter+0xf3/0x140 net/core/datagram.c:519
     __skb_datagram_iter+0x2d5/0x11b0 net/core/datagram.c:425
     skb_copy_datagram_iter+0xdc/0x270 net/core/datagram.c:533
     skb_copy_datagram_msg include/linux/skbuff.h:3696 [inline]
     netlink_recvmsg+0x669/0x1c80 net/netlink/af_netlink.c:1977
     sock_recvmsg_nosec net/socket.c:948 [inline]
     sock_recvmsg net/socket.c:966 [inline]
     __sys_recvfrom+0x795/0xa10 net/socket.c:2097
     __do_sys_recvfrom net/socket.c:2115 [inline]
     __se_sys_recvfrom net/socket.c:2111 [inline]
     __x64_sys_recvfrom+0x19d/0x210 net/socket.c:2111
     do_syscall_x64 arch/x86/entry/common.c:51 [inline]
     do_syscall_64+0x54/0xd0 arch/x86/entry/common.c:82
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    Uninit was created at:
     slab_post_alloc_hook mm/slab.h:737 [inline]
     slab_alloc_node mm/slub.c:3247 [inline]
     __kmalloc_node_track_caller+0xe0c/0x1510 mm/slub.c:4975
     kmalloc_reserve net/core/skbuff.c:354 [inline]
     __alloc_skb+0x545/0xf90 net/core/skbuff.c:426
     alloc_skb include/linux/skbuff.h:1158 [inline]
     netlink_dump+0x3e5/0x16c0 net/netlink/af_netlink.c:2248
     __netlink_dump_start+0xcf8/0xe90 net/netlink/af_netlink.c:2373
     netlink_dump_start include/linux/netlink.h:254 [inline]
     inet_diag_handler_cmd+0x2e7/0x400 net/ipv4/inet_diag.c:1341
     sock_diag_rcv_msg+0x24a/0x620
     netlink_rcv_skb+0x40c/0x7e0 net/netlink/af_netlink.c:2494
     sock_diag_rcv+0x63/0x80 net/core/sock_diag.c:277
     netlink_unicast_kernel net/netlink/af_netlink.c:1317 [inline]
     netlink_unicast+0x1093/0x1360 net/netlink/af_netlink.c:1343
     netlink_sendmsg+0x14d9/0x1720 net/netlink/af_netlink.c:1919
     sock_sendmsg_nosec net/socket.c:705 [inline]
     sock_sendmsg net/socket.c:725 [inline]
     sock_write_iter+0x594/0x690 net/socket.c:1061
     do_iter_readv_writev+0xa7f/0xc70
     do_iter_write+0x52c/0x1500 fs/read_write.c:851
     vfs_writev fs/read_write.c:924 [inline]
     do_writev+0x645/0xe00 fs/read_write.c:967
     __do_sys_writev fs/read_write.c:1040 [inline]
     __se_sys_writev fs/read_write.c:1037 [inline]
     __x64_sys_writev+0xe5/0x120 fs/read_write.c:1037
     do_syscall_x64 arch/x86/entry/common.c:51 [inline]
     do_syscall_64+0x54/0xd0 arch/x86/entry/common.c:82
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    Bytes 68-71 of 2508 are uninitialized
    Memory access of size 2508 starts at ffff888114f9b000
    Data copied to user address 00007f7fe09ff2e0
    
    CPU: 1 PID: 3478 Comm: syz-executor306 Not tainted 5.17.0-rc4-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    
    Fixes: 8f840e47f190 ("sctp: add the sctp_diag.c file")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Cc: Vlad Yasevich <vyasevich@gmail.com>
    Cc: Neil Horman <nhorman@tuxdriver.com>
    Cc: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Reviewed-by: Xin Long <lucien.xin@gmail.com>
    Link: https://lore.kernel.org/r/20220310001145.297371-1-eric.dumazet@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 16a93eb15c18ec395cbe4f7d94c2b4b946eaeb63
Author: Clément Léger <clement.leger@bootlin.com>
Date:   Wed Mar 9 15:22:28 2022 +0100

    net: phy: DP83822: clear MISR2 register to disable interrupts
    
    [ Upstream commit 37c9d66c95564c85a001d8a035354f0220a1e1c3 ]
    
    MISR1 was cleared twice but the original author intention was probably
    to clear MISR1 & MISR2 to completely disable interrupts. Fix it to
    clear MISR2.
    
    Fixes: 87461f7a58ab ("net: phy: DP83822 initial driver submission")
    Signed-off-by: Clément Léger <clement.leger@bootlin.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Link: https://lore.kernel.org/r/20220309142228.761153-1-clement.leger@bootlin.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0e1b9a2078e07fb1e6e91bf8badfd89ecab1e848
Author: Miaoqian Lin <linmq006@gmail.com>
Date:   Thu Mar 10 01:53:13 2022 +0000

    gianfar: ethtool: Fix refcount leak in gfar_get_ts_info
    
    [ Upstream commit 2ac5b58e645c66932438bb021cb5b52097ce70b0 ]
    
    The of_find_compatible_node() function returns a node pointer with
    refcount incremented, We should use of_node_put() on it when done
    Add the missing of_node_put() to release the refcount.
    
    Fixes: 7349a74ea75c ("net: ethernet: gianfar_ethtool: get phc index through drvdata")
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Reviewed-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
    Reviewed-by: Claudiu Manoil <claudiu.manoil@nxp.com>
    Link: https://lore.kernel.org/r/20220310015313.14938-1-linmq006@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 126df633bc7e97c41665788fe6d1b2c379e69615
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Tue Mar 8 11:55:48 2022 -0800

    mm: gup: make fault_in_safe_writeable() use fixup_user_fault()
    
    [ Upstream commit fe673d3f5bf1fc50cdc4b754831db91a2ec10126 ]
    
    Instead of using GUP, make fault_in_safe_writeable() actually force a
    'handle_mm_fault()' using the same fixup_user_fault() machinery that
    futexes already use.
    
    Using the GUP machinery meant that fault_in_safe_writeable() did not do
    everything that a real fault would do, ranging from not auto-expanding
    the stack segment, to not updating accessed or dirty flags in the page
    tables (GUP sets those flags on the pages themselves).
    
    The latter causes problems on architectures (like s390) that do accessed
    bit handling in software, which meant that fault_in_safe_writeable()
    didn't actually do all the fault handling it needed to, and trying to
    access the user address afterwards would still cause faults.
    
    Reported-and-tested-by: Andreas Gruenbacher <agruenba@redhat.com>
    Fixes: cdd591fc86e3 ("iov_iter: Introduce fault_in_iov_iter_writeable")
    Link: https://lore.kernel.org/all/CAHc6FU5nP+nziNGG0JAF1FUx-GV7kKFvM7aZuU_XD2_1v4vnvg@mail.gmail.com/
    Acked-by: David Hildenbrand <david@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e032e16bed3a33745af41d71afb45a4d9981d020
Author: Mark Featherston <mark@embeddedTS.com>
Date:   Wed Mar 9 17:16:16 2022 -0800

    gpio: ts4900: Do not set DAT and OE together
    
    [ Upstream commit 03fe003547975680fdb9ff5ab0e41cb68276c4f2 ]
    
    This works around an issue with the hardware where both OE and
    DAT are exposed in the same register. If both are updated
    simultaneously, the harware makes no guarantees that OE or DAT
    will actually change in any given order and may result in a
    glitch of a few ns on a GPIO pin when changing direction and value
    in a single write.
    
    Setting direction to input now only affects OE bit. Setting
    direction to output updates DAT first, then OE.
    
    Fixes: 9c6686322d74 ("gpio: add Technologic I2C-FPGA gpio support")
    Signed-off-by: Mark Featherston <mark@embeddedTS.com>
    Signed-off-by: Kris Bahnsen <kris@embeddedTS.com>
    Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dfd04b2dfa2e748c0bde09a973e45770fca2a1c1
Author: Guillaume Nault <gnault@redhat.com>
Date:   Tue Mar 8 23:15:03 2022 +0100

    selftests: pmtu.sh: Kill nettest processes launched in subshell.
    
    [ Upstream commit 94a4a4fe4c696413932eed8bdec46574de9576b8 ]
    
    When using "run_cmd <command> &", then "$!" refers to the PID of the
    subshell used to run <command>, not the command itself. Therefore
    nettest_pids actually doesn't contain the list of the nettest commands
    running in the background. So cleanup() can't kill them and the nettest
    processes run until completion (fortunately they have a 5s timeout).
    
    Fix this by defining a new command for running processes in the
    background, for which "$!" really refers to the PID of the command run.
    
    Also, double quote variables on the modified lines, to avoid shellcheck
    warnings.
    
    Fixes: ece1278a9b81 ("selftests: net: add ESP-in-UDP PMTU test")
    Signed-off-by: Guillaume Nault <gnault@redhat.com>
    Reviewed-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8b3d2fd14a53852319eccb0e986d80dfb9a7be06
Author: Guillaume Nault <gnault@redhat.com>
Date:   Tue Mar 8 23:15:00 2022 +0100

    selftests: pmtu.sh: Kill tcpdump processes launched by subshell.
    
    [ Upstream commit 18dfc667550fe9c032a6dcc3402b50e691e18029 ]
    
    The cleanup() function takes care of killing processes launched by the
    test functions. It relies on variables like ${tcpdump_pids} to get the
    relevant PIDs. But tests are run in their own subshell, so updated
    *_pids values are invisible to other shells. Therefore cleanup() never
    sees any process to kill:
    
    $ ./tools/testing/selftests/net/pmtu.sh -t pmtu_ipv4_exception
    TEST: ipv4: PMTU exceptions                                         [ OK ]
    TEST: ipv4: PMTU exceptions - nexthop objects                       [ OK ]
    
    $ pgrep -af tcpdump
    6084 tcpdump -s 0 -i veth_A-R1 -w pmtu_ipv4_exception_veth_A-R1.pcap
    6085 tcpdump -s 0 -i veth_R1-A -w pmtu_ipv4_exception_veth_R1-A.pcap
    6086 tcpdump -s 0 -i veth_R1-B -w pmtu_ipv4_exception_veth_R1-B.pcap
    6087 tcpdump -s 0 -i veth_B-R1 -w pmtu_ipv4_exception_veth_B-R1.pcap
    6088 tcpdump -s 0 -i veth_A-R2 -w pmtu_ipv4_exception_veth_A-R2.pcap
    6089 tcpdump -s 0 -i veth_R2-A -w pmtu_ipv4_exception_veth_R2-A.pcap
    6090 tcpdump -s 0 -i veth_R2-B -w pmtu_ipv4_exception_veth_R2-B.pcap
    6091 tcpdump -s 0 -i veth_B-R2 -w pmtu_ipv4_exception_veth_B-R2.pcap
    6228 tcpdump -s 0 -i veth_A-R1 -w pmtu_ipv4_exception_veth_A-R1.pcap
    6229 tcpdump -s 0 -i veth_R1-A -w pmtu_ipv4_exception_veth_R1-A.pcap
    6230 tcpdump -s 0 -i veth_R1-B -w pmtu_ipv4_exception_veth_R1-B.pcap
    6231 tcpdump -s 0 -i veth_B-R1 -w pmtu_ipv4_exception_veth_B-R1.pcap
    6232 tcpdump -s 0 -i veth_A-R2 -w pmtu_ipv4_exception_veth_A-R2.pcap
    6233 tcpdump -s 0 -i veth_R2-A -w pmtu_ipv4_exception_veth_R2-A.pcap
    6234 tcpdump -s 0 -i veth_R2-B -w pmtu_ipv4_exception_veth_R2-B.pcap
    6235 tcpdump -s 0 -i veth_B-R2 -w pmtu_ipv4_exception_veth_B-R2.pcap
    
    Fix this by running cleanup() in the context of the test subshell.
    Now that each test cleans the environment after completion, there's no
    need for calling cleanup() again when the next test starts. So let's
    drop it from the setup() function. This is okay because cleanup() is
    also called when pmtu.sh starts, so even the first test starts in a
    clean environment.
    
    Also, use tcpdump's immediate mode. Otherwise it might not have time to
    process buffered packets, resulting in missing packets or even empty
    pcap files for short tests.
    
    Note: PAUSE_ON_FAIL is still evaluated before cleanup(), so one can
    still inspect the test environment upon failure when using -p.
    
    Fixes: a92a0a7b8e7c ("selftests: pmtu: Simplify cleanup and namespace names")
    Signed-off-by: Guillaume Nault <gnault@redhat.com>
    Reviewed-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7194737e1be8fdc89d2a9382bd2f371f7ee2eda8
Author: Pavel Skripkin <paskripkin@gmail.com>
Date:   Tue Mar 8 21:50:07 2022 +0300

    NFC: port100: fix use-after-free in port100_send_complete
    
    [ Upstream commit f80cfe2f26581f188429c12bd937eb905ad3ac7b ]
    
    Syzbot reported UAF in port100_send_complete(). The root case is in
    missing usb_kill_urb() calls on error handling path of ->probe function.
    
    port100_send_complete() accesses devm allocated memory which will be
    freed on probe failure. We should kill this urbs before returning an
    error from probe function to prevent reported use-after-free
    
    Fail log:
    
    BUG: KASAN: use-after-free in port100_send_complete+0x16e/0x1a0 drivers/nfc/port100.c:935
    Read of size 1 at addr ffff88801bb59540 by task ksoftirqd/2/26
    ...
    Call Trace:
     <TASK>
     __dump_stack lib/dump_stack.c:88 [inline]
     dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106
     print_address_description.constprop.0.cold+0x8d/0x303 mm/kasan/report.c:255
     __kasan_report mm/kasan/report.c:442 [inline]
     kasan_report.cold+0x83/0xdf mm/kasan/report.c:459
     port100_send_complete+0x16e/0x1a0 drivers/nfc/port100.c:935
     __usb_hcd_giveback_urb+0x2b0/0x5c0 drivers/usb/core/hcd.c:1670
    
    ...
    
    Allocated by task 1255:
     kasan_save_stack+0x1e/0x40 mm/kasan/common.c:38
     kasan_set_track mm/kasan/common.c:45 [inline]
     set_alloc_info mm/kasan/common.c:436 [inline]
     ____kasan_kmalloc mm/kasan/common.c:515 [inline]
     ____kasan_kmalloc mm/kasan/common.c:474 [inline]
     __kasan_kmalloc+0xa6/0xd0 mm/kasan/common.c:524
     alloc_dr drivers/base/devres.c:116 [inline]
     devm_kmalloc+0x96/0x1d0 drivers/base/devres.c:823
     devm_kzalloc include/linux/device.h:209 [inline]
     port100_probe+0x8a/0x1320 drivers/nfc/port100.c:1502
    
    Freed by task 1255:
     kasan_save_stack+0x1e/0x40 mm/kasan/common.c:38
     kasan_set_track+0x21/0x30 mm/kasan/common.c:45
     kasan_set_free_info+0x20/0x30 mm/kasan/generic.c:370
     ____kasan_slab_free mm/kasan/common.c:366 [inline]
     ____kasan_slab_free+0xff/0x140 mm/kasan/common.c:328
     kasan_slab_free include/linux/kasan.h:236 [inline]
     __cache_free mm/slab.c:3437 [inline]
     kfree+0xf8/0x2b0 mm/slab.c:3794
     release_nodes+0x112/0x1a0 drivers/base/devres.c:501
     devres_release_all+0x114/0x190 drivers/base/devres.c:530
     really_probe+0x626/0xcc0 drivers/base/dd.c:670
    
    Reported-and-tested-by: syzbot+16bcb127fb73baeecb14@syzkaller.appspotmail.com
    Fixes: 0347a6ab300a ("NFC: port100: Commands mechanism implementation")
    Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
    Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
    Link: https://lore.kernel.org/r/20220308185007.6987-1-paskripkin@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 06793f98019a36efb1b1aab2832d4bdc1bb2f2ef
Author: Ben Ben-Ishay <benishay@nvidia.com>
Date:   Wed Mar 2 17:07:08 2022 +0200

    net/mlx5e: SHAMPO, reduce TIR indication
    
    [ Upstream commit 99a2b9be077ae3a5d97fbf5f7782e0f2e9812978 ]
    
    SHAMPO is an RQ / WQ feature, an indication was added to the TIR in the
    first place to enforce suitability between connected TIR and RQ, this
    enforcement does not exist in current the Firmware implementation and was
    redundant in the first place.
    
    Fixes: 83439f3c37aa ("net/mlx5e: Add HW-GRO offload")
    Signed-off-by: Ben Ben-Ishay <benishay@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 171caa1f2f5eb7acb8c5e5e4fdd9dc3daa6f8642
Author: Roi Dayan <roid@nvidia.com>
Date:   Wed Feb 16 13:56:57 2022 +0200

    net/mlx5e: Lag, Only handle events from highest priority multipath entry
    
    [ Upstream commit ad11c4f1d8fd1f03639460e425a36f7fd0ea83f5 ]
    
    There could be multiple multipath entries but changing the port affinity
    for each one doesn't make much sense and there should be a default one.
    So only track the entry with lowest priority value.
    The commit doesn't affect existing users with a single entry.
    
    Fixes: 544fe7c2e654 ("net/mlx5e: Activate HW multipath and handle port affinity based on FIB events")
    Signed-off-by: Roi Dayan <roid@nvidia.com>
    Reviewed-by: Maor Dickman <maord@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0401bfb27a91d7bdd74b1635c1aae57cbb128da6
Author: Moshe Shemesh <moshe@nvidia.com>
Date:   Fri Feb 4 11:47:44 2022 +0200

    net/mlx5: Fix a race on command flush flow
    
    [ Upstream commit 063bd355595428750803d8736a9bb7c8db67d42d ]
    
    Fix a refcount use after free warning due to a race on command entry.
    Such race occurs when one of the commands releases its last refcount and
    frees its index and entry while another process running command flush
    flow takes refcount to this command entry. The process which handles
    commands flush may see this command as needed to be flushed if the other
    process released its refcount but didn't release the index yet. Fix it
    by adding the needed spin lock.
    
    It fixes the following warning trace:
    
    refcount_t: addition on 0; use-after-free.
    WARNING: CPU: 11 PID: 540311 at lib/refcount.c:25 refcount_warn_saturate+0x80/0xe0
    ...
    RIP: 0010:refcount_warn_saturate+0x80/0xe0
    ...
    Call Trace:
     <TASK>
     mlx5_cmd_trigger_completions+0x293/0x340 [mlx5_core]
     mlx5_cmd_flush+0x3a/0xf0 [mlx5_core]
     enter_error_state+0x44/0x80 [mlx5_core]
     mlx5_fw_fatal_reporter_err_work+0x37/0xe0 [mlx5_core]
     process_one_work+0x1be/0x390
     worker_thread+0x4d/0x3d0
     ? rescuer_thread+0x350/0x350
     kthread+0x141/0x160
     ? set_kthread_struct+0x40/0x40
     ret_from_fork+0x1f/0x30
     </TASK>
    
    Fixes: 50b2412b7e78 ("net/mlx5: Avoid possible free of command entry while timeout comp handler")
    Signed-off-by: Moshe Shemesh <moshe@nvidia.com>
    Reviewed-by: Eran Ben Elisha <eranbe@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7bb1dc826dfa00d1f3b50d1a2973baff67d5cbfc
Author: Mohammad Kabat <mohammadkab@nvidia.com>
Date:   Thu Mar 25 14:38:55 2021 +0200

    net/mlx5: Fix size field in bufferx_reg struct
    
    [ Upstream commit ac77998b7ac3044f0509b097da9637184598980d ]
    
    According to HW spec the field "size" should be 16 bits
    in bufferx register.
    
    Fixes: e281682bf294 ("net/mlx5_core: HW data structs/types definitions cleanup")
    Signed-off-by: Mohammad Kabat <mohammadkab@nvidia.com>
    Reviewed-by: Moshe Shemesh <moshe@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1d83a95214bc516bd8778fa423cb8383d925f8c8
Author: Duoming Zhou <duoming@zju.edu.cn>
Date:   Tue Mar 8 16:12:23 2022 +0800

    ax25: Fix NULL pointer dereference in ax25_kill_by_device
    
    [ Upstream commit 71171ac8eb34ce7fe6b3267dce27c313ab3cb3ac ]
    
    When two ax25 devices attempted to establish connection, the requester use ax25_create(),
    ax25_bind() and ax25_connect() to initiate connection. The receiver use ax25_rcv() to
    accept connection and use ax25_create_cb() in ax25_rcv() to create ax25_cb, but the
    ax25_cb->sk is NULL. When the receiver is detaching, a NULL pointer dereference bug
    caused by sock_hold(sk) in ax25_kill_by_device() will happen. The corresponding
    fail log is shown below:
    
    ===============================================================
    BUG: KASAN: null-ptr-deref in ax25_device_event+0xfd/0x290
    Call Trace:
    ...
    ax25_device_event+0xfd/0x290
    raw_notifier_call_chain+0x5e/0x70
    dev_close_many+0x174/0x220
    unregister_netdevice_many+0x1f7/0xa60
    unregister_netdevice_queue+0x12f/0x170
    unregister_netdev+0x13/0x20
    mkiss_close+0xcd/0x140
    tty_ldisc_release+0xc0/0x220
    tty_release_struct+0x17/0xa0
    tty_release+0x62d/0x670
    ...
    
    This patch add condition check in ax25_kill_by_device(). If s->sk is
    NULL, it will goto if branch to kill device.
    
    Fixes: 4e0f718daf97 ("ax25: improve the incomplete fix to avoid UAF and NPD bugs")
    Reported-by: Thomas Osterried <thomas@osterried.de>
    Signed-off-by: Duoming Zhou <duoming@zju.edu.cn>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4cc66bf17220ff9631f9fa99b02a872e0ad5a08b
Author: Miaoqian Lin <linmq006@gmail.com>
Date:   Tue Mar 8 07:42:47 2022 +0000

    net: marvell: prestera: Add missing of_node_put() in prestera_switch_set_base_mac_addr
    
    [ Upstream commit c9ffa3e2bc451816ce0295e40063514fabf2bd36 ]
    
    This node pointer is returned by of_find_compatible_node() with
    refcount incremented. Calling of_node_put() to aovid the refcount leak.
    
    Fixes: 501ef3066c89 ("net: marvell: prestera: Add driver for Prestera family ASIC devices")
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5d07fca06b2e80c4ee70966c3fd27db8d1bb2c68
Author: Jiasheng Jiang <jiasheng@iscas.ac.cn>
Date:   Tue Mar 8 14:57:39 2022 +0800

    net: ethernet: lpc_eth: Handle error for clk_enable
    
    [ Upstream commit 2169b79258c8be803d2595d6456b1e77129fe154 ]
    
    As the potential failure of the clk_enable(),
    it should be better to check it and return error
    if fails.
    
    Fixes: b7370112f519 ("lpc32xx: Added ethernet driver")
    Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit af6d58401ccbb6d98966e001dff09de3ccbd9ec8
Author: Jiasheng Jiang <jiasheng@iscas.ac.cn>
Date:   Tue Mar 8 14:40:07 2022 +0800

    net: ethernet: ti: cpts: Handle error for clk_enable
    
    [ Upstream commit 6babfc6e6fab068018c36e8f6605184b8c0b349d ]
    
    As the potential failure of the clk_enable(),
    it should be better to check it and return error
    if fails.
    
    Fixes: 8a2c9a5ab4b9 ("net: ethernet: ti: cpts: rework initialization/deinitialization")
    Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 688a5ec2274c4f53755101b48efdbb18a358ac42
Author: Tung Nguyen <tung.q.nguyen@dektech.com.au>
Date:   Tue Mar 8 02:11:59 2022 +0000

    tipc: fix incorrect order of state message data sanity check
    
    [ Upstream commit c79fcc27be90b308b3fa90811aefafdd4078668c ]
    
    When receiving a state message, function tipc_link_validate_msg()
    is called to validate its header portion. Then, its data portion
    is validated before it can be accessed correctly. However, current
    data sanity  check is done after the message header is accessed to
    update some link variables.
    
    This commit fixes this issue by moving the data sanity check to
    the beginning of state message handling and right after the header
    sanity check.
    
    Fixes: 9aa422ad3266 ("tipc: improve size validations for received domain records")
    Acked-by: Jon Maloy <jmaloy@redhat.com>
    Signed-off-by: Tung Nguyen <tung.q.nguyen@dektech.com.au>
    Link: https://lore.kernel.org/r/20220308021200.9245-1-tung.q.nguyen@dektech.com.au
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1852854ee349881efb78ccdbbb237838975902e4
Author: Miaoqian Lin <linmq006@gmail.com>
Date:   Tue Mar 8 02:47:49 2022 +0000

    ethernet: Fix error handling in xemaclite_of_probe
    
    [ Upstream commit b19ab4b38b06aae12442b2de95ccf58b5dc53584 ]
    
    This node pointer is returned by of_parse_phandle() with refcount
    incremented in this function. Calling of_node_put() to avoid the
    refcount leak. As the remove function do.
    
    Fixes: 5cdaaa12866e ("net: emaclite: adding MDIO and phy lib support")
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Link: https://lore.kernel.org/r/20220308024751.2320-1-linmq006@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ed08eabf8dce84fabf620d0cbf85c7ac27eb0291
Author: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
Date:   Tue Feb 22 11:43:04 2022 +0000

    ice: Fix curr_link_speed advertised speed
    
    [ Upstream commit ad35ffa252af67d4cc7c744b9377a2b577748e3f ]
    
    Change curr_link_speed advertised speed, due to
    link_info.link_speed is not equal phy.curr_user_speed_req.
    Without this patch it is impossible to set advertised
    speed to same as link_speed.
    
    Testing Hints: Try to set advertised speed
    to 25G only with 25G default link (use ethtool -s 0x80000000)
    
    Fixes: 48cb27f2fd18 ("ice: Implement handlers for ethtool PHY/link operations")
    Signed-off-by: Grzegorz Siwik <grzegorz.siwik@intel.com>
    Signed-off-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
    Tested-by: Gurucharan <gurucharanx.g@intel.com> (A Contingent worker at Intel)
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 40e8acfdcd271d8d0a321564c3c50cf10cc995b9
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Sun Jan 16 19:46:20 2022 +0100

    ice: Don't use GFP_KERNEL in atomic context
    
    [ Upstream commit 3d97f1afd8d831e0c0dc1157418f94b8faa97b54 ]
    
    ice_misc_intr() is an irq handler. It should not sleep.
    
    Use GFP_ATOMIC instead of GFP_KERNEL when allocating some memory.
    
    Fixes: 348048e724a0 ("ice: Implement iidc operations")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Tested-by: Leszek Kaliszczuk <leszek.kaliszczuk@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6a3122b1155c150872b9811688e720776c834856
Author: Dave Ertman <david.m.ertman@intel.com>
Date:   Fri Feb 18 12:39:25 2022 -0800

    ice: Fix error with handling of bonding MTU
    
    [ Upstream commit 97b0129146b1544bbb0773585327896da3bb4e0a ]
    
    When a bonded interface is destroyed, .ndo_change_mtu can be called
    during the tear-down process while the RTNL lock is held.  This is a
    problem since the auxiliary driver linked to the LAN driver needs to be
    notified of the MTU change, and this requires grabbing a device_lock on
    the auxiliary_device's dev.  Currently this is being attempted in the
    same execution context as the call to .ndo_change_mtu which is causing a
    dead-lock.
    
    Move the notification of the changed MTU to a separate execution context
    (watchdog service task) and eliminate the "before" notification.
    
    Fixes: 348048e724a0e ("ice: Implement iidc operations")
    Signed-off-by: Dave Ertman <david.m.ertman@intel.com>
    Tested-by: Jonathan Toppins <jtoppins@redhat.com>
    Tested-by: Gurucharan G <gurucharanx.g@intel.com> (A Contingent worker at Intel)
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e7ce48d4343819267fe7ec1468bd03d72837acf8
Author: Jacob Keller <jacob.e.keller@intel.com>
Date:   Wed Feb 16 16:51:36 2022 -0800

    ice: stop disabling VFs due to PF error responses
    
    [ Upstream commit 79498d5af8e458102242d1667cf44df1f1564e63 ]
    
    The ice_vc_send_msg_to_vf function has logic to detect "failure"
    responses being sent to a VF. If a VF is sent more than
    ICE_DFLT_NUM_INVAL_MSGS_ALLOWED then the VF is marked as disabled.
    Almost identical logic also existed in the i40e driver.
    
    This logic was added to the ice driver in commit 1071a8358a28 ("ice:
    Implement virtchnl commands for AVF support") which itself copied from
    the i40e implementation in commit 5c3c48ac6bf5 ("i40e: implement virtual
    device interface").
    
    Neither commit provides a proper explanation or justification of the
    check. In fact, later commits to i40e changed the logic to allow
    bypassing the check in some specific instances.
    
    The "logic" for this seems to be that error responses somehow indicate a
    malicious VF. This is not really true. The PF might be sending an error
    for any number of reasons such as lack of resources, etc.
    
    Additionally, this causes the PF to log an info message for every failed
    VF response which may confuse users, and can spam the kernel log.
    
    This behavior is not documented as part of any requirement for our
    products and other operating system drivers such as the FreeBSD
    implementation of our drivers do not include this type of check.
    
    In fact, the change from dev_err to dev_info in i40e commit 18b7af57d9c1
    ("i40e: Lower some message levels") explains that these messages
    typically don't actually indicate a real issue. It is quite likely that
    a user who hits this in practice will be very confused as the VF will be
    disabled without an obvious way to recover.
    
    We already have robust malicious driver detection logic using actual
    hardware detection mechanisms that detect and prevent invalid device
    usage. Remove the logic since its not a documented requirement and the
    behavior is not intuitive.
    
    Fixes: 1071a8358a28 ("ice: Implement virtchnl commands for AVF support")
    Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
    Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 707dc94bd3fdf518b0d1a31af2ed2da1fc0f3654
Author: Jacob Keller <jacob.e.keller@intel.com>
Date:   Wed Feb 16 16:51:35 2022 -0800

    i40e: stop disabling VFs due to PF error responses
    
    [ Upstream commit 5710ab79166504013f7c0ae6a57e7d2fd26e5c43 ]
    
    The i40e_vc_send_msg_to_vf_ex (and its wrapper i40e_vc_send_msg_to_vf)
    function has logic to detect "failure" responses sent to the VF. If a VF
    is sent more than I40E_DEFAULT_NUM_INVALID_MSGS_ALLOWED, then the VF is
    marked as disabled. In either case, a dev_info message is printed
    stating that a VF opcode failed.
    
    This logic originates from the early implementation of VF support in
    commit 5c3c48ac6bf5 ("i40e: implement virtual device interface").
    
    That commit did not go far enough. The "logic" for this behavior seems
    to be that error responses somehow indicate a malicious VF. This is not
    really true. The PF might be sending an error for any number of reasons
    such as lacking resources, an unsupported operation, etc. This does not
    indicate a malicious VF. We already have a separate robust malicious VF
    detection which relies on hardware logic to detect and prevent a variety
    of behaviors.
    
    There is no justification for this behavior in the original
    implementation. In fact, a later commit 18b7af57d9c1 ("i40e: Lower some
    message levels") reduced the opcode failure message from a dev_err to a
    dev_info. In addition, recent commit 01cbf50877e6 ("i40e: Fix to not
    show opcode msg on unsuccessful VF MAC change") changed the logic to
    allow quieting it for expected failures.
    
    That commit prevented this logic from kicking in for specific
    circumstances. This change did not go far enough. The behavior is not
    documented nor is it part of any requirement for our products. Other
    operating systems such as the FreeBSD implementation of our driver do
    not include this logic.
    
    It is clear this check does not make sense, and causes problems which
    led to ugly workarounds.
    
    Fix this by just removing the entire logic and the need for the
    i40e_vc_send_msg_to_vf_ex function.
    
    Fixes: 01cbf50877e6 ("i40e: Fix to not show opcode msg on unsuccessful VF MAC change")
    Fixes: 5c3c48ac6bf5 ("i40e: implement virtual device interface")
    Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
    Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 09998f5ef23ab43ebdbf59f592c619d3b6bb2463
Author: Michal Maloszewski <michal.maloszewski@intel.com>
Date:   Mon Jan 24 13:35:43 2022 +0000

    iavf: Fix handling of vlan strip virtual channel messages
    
    [ Upstream commit 2cf29e55894886965722e6625f6a03630b4db31d ]
    
    Modify netdev->features for vlan stripping based on virtual
    channel messages received from the PF. Change is needed
    to synchronize vlan strip status between PF sysfs and iavf ethtool.
    
    Fixes: 5951a2b9812d ("iavf: Fix VLAN feature flags after VFR")
    Signed-off-by: Norbert Ciosek <norbertx.ciosek@intel.com>
    Signed-off-by: Michal Maloszewski <michal.maloszewski@intel.com>
    Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7af5408f8b4457fb079cbe8b53f3d76a10e1146e
Author: Joel Stanley <joel@jms.id.au>
Date:   Tue Mar 8 10:36:31 2022 +1030

    ARM: dts: aspeed: Fix AST2600 quad spi group
    
    [ Upstream commit 2f6edb6bcb2f3f41d876e0eba2ba97f87a0296ea ]
    
    Requesting quad mode for the FMC resulted in an error:
    
      &fmc {
             status = "okay";
     +       pinctrl-names = "default";
     +       pinctrl-0 = <&pinctrl_fwqspi_default>'
    
    [    0.742963] aspeed-g6-pinctrl 1e6e2000.syscon:pinctrl: invalid function FWQSPID in map table
    
    
    This is because the quad mode pins are a group of pins, not a function.
    
    After applying this patch we can request the pins and the QSPI data
    lines are muxed:
    
     # cat /sys/kernel/debug/pinctrl/1e6e2000.syscon\:pinctrl-aspeed-g6-pinctrl/pinmux-pins |grep 1e620000.spi
     pin 196 (AE12): device 1e620000.spi function FWSPID group FWQSPID
     pin 197 (AF12): device 1e620000.spi function FWSPID group FWQSPID
     pin 240 (Y1): device 1e620000.spi function FWSPID group FWQSPID
     pin 241 (Y2): device 1e620000.spi function FWSPID group FWQSPID
     pin 242 (Y3): device 1e620000.spi function FWSPID group FWQSPID
     pin 243 (Y4): device 1e620000.spi function FWSPID group FWQSPID
    
    Fixes: f510f04c8c83 ("ARM: dts: aspeed: Add AST2600 pinmux nodes")
    Signed-off-by: Joel Stanley <joel@jms.id.au>
    Reviewed-by: Andrew Jeffery <andrew@aj.id.au>
    Link: https://lore.kernel.org/r/20220304011010.974863-1-joel@jms.id.au
    Link: https://lore.kernel.org/r/20220304011010.974863-1-joel@jms.id.au'
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 811aace34e5b62176feb35f842273f41a2123349
Author: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Date:   Mon Mar 7 12:13:30 2022 +0000

    net: dsa: mt7530: fix incorrect test in mt753x_phylink_validate()
    
    [ Upstream commit e5417cbf7ab5df1632e68fe7d9e6331fc0e7dbd6 ]
    
    Discussing one of the tests in mt753x_phylink_validate() with Landen
    Chao confirms that the "||" should be "&&". Fix this.
    
    Fixes: c288575f7810 ("net: dsa: mt7530: Add the support of MT7531 switch")
    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Link: https://lore.kernel.org/r/E1nRCF0-00CiXD-7q@rmk-PC.armlinux.org.uk
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 13c3b2dfcf12b6fbfac8579591225873e0560dd8
Author: Jernej Skrabec <jernej.skrabec@gmail.com>
Date:   Mon Feb 28 19:14:36 2022 +0100

    drm/sun4i: mixer: Fix P010 and P210 format numbers
    
    [ Upstream commit 9470c29faa91c804aa04de4c10634bf02462bfa5 ]
    
    It turns out that DE3 manual has inverted YUV and YVU format numbers for
    P010 and P210. Invert them.
    
    This was tested by playing video decoded to P010 and additionally
    confirmed by looking at BSP driver source.
    
    Fixes: 169ca4b38932 ("drm/sun4i: Add separate DE3 VI layer formats")
    Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com>
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220228181436.1424550-1-jernej.skrabec@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3240a3070dec90b7f9b23ccaabb81d112887006b
Author: Jouni Högander <jouni.hogander@intel.com>
Date:   Fri Feb 25 09:02:28 2022 +0200

    drm/i915/psr: Set "SF Partial Frame Enable" also on full update
    
    [ Upstream commit 804f468853179b9b58af05c153c411931aa5b310 ]
    
    Currently we are observing occasional screen flickering when
    PSR2 selective fetch is enabled. More specifically glitch seems
    to happen on full frame update when cursor moves to coords
    x = -1 or y = -1.
    
    According to Bspec SF Single full frame should not be set if
    SF Partial Frame Enable is not set. This happened to be true for
    ADLP as PSR2_MAN_TRK_CTL_ENABLE is always set and for ADL_P it's
    actually "SF Partial Frame Enable" (Bit 31).
    
    Setting "SF Partial Frame Enable" bit also on full update seems to
    fix screen flickering.
    
    Also make code more clear by setting PSR2_MAN_TRK_CTL_ENABLE
    only if not on ADL_P. Bit 31 has different meaning in ADL_P.
    
    Bspec: 49274
    
    v2: Fix Mihai Harpau email address
    v3: Modify commit message and remove unnecessary comment
    
    Tested-by: Lyude Paul <lyude@redhat.com>
    Fixes: 7f6002e58025 ("drm/i915/display: Enable PSR2 selective fetch by default")
    Reported-by: Lyude Paul <lyude@redhat.com>
    Cc: Mihai Harpau <mharpau@gmail.com>
    Cc: José Roberto de Souza <jose.souza@intel.com>
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Bugzilla: https://gitlab.freedesktop.org/drm/intel/-/issues/5077
    Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
    Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
    Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20220225070228.855138-1-jouni.hogander@intel.com
    (cherry picked from commit 8d5516d18b323cf7274d1cf5fe76f4a691f879c6)
    Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7e24b2eab93baf3707f254773ef2e4edc28238c5
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Mon Mar 7 13:56:23 2022 +0200

    gpiolib: acpi: Convert ACPI value of debounce to microseconds
    
    [ Upstream commit 660c619b9d7ccd28648ee3766cdbe94ec7b27402 ]
    
    It appears that GPIO ACPI library uses ACPI debounce values directly.
    However, the GPIO library APIs expect the debounce timeout to be in
    microseconds.
    
    Convert ACPI value of debounce to microseconds.
    
    While at it, document this detail where it is appropriate.
    
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=215664
    Reported-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Fixes: 8dcb7a15a585 ("gpiolib: acpi: Take into account debounce settings")
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Tested-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f342974fe2cee844a9b8d85ab23d5cc3d7052732
Author: Fabio Estevam <festevam@denx.de>
Date:   Sat Mar 5 17:47:20 2022 -0300

    smsc95xx: Ignore -ENODEV errors when device is unplugged
    
    [ Upstream commit c70c453abcbf3ecbaadd4c3236a5119b8da365cf ]
    
    According to Documentation/driver-api/usb/URB.rst when a device
    is unplugged usb_submit_urb() returns -ENODEV.
    
    This error code propagates all the way up to usbnet_read_cmd() and
    usbnet_write_cmd() calls inside the smsc95xx.c driver during
    Ethernet cable unplug, unbind or reboot.
    
    This causes the following errors to be shown on reboot, for example:
    
    ci_hdrc ci_hdrc.1: remove, state 1
    usb usb2: USB disconnect, device number 1
    usb 2-1: USB disconnect, device number 2
    usb 2-1.1: USB disconnect, device number 3
    smsc95xx 2-1.1:1.0 eth1: unregister 'smsc95xx' usb-ci_hdrc.1-1.1, smsc95xx USB 2.0 Ethernet
    smsc95xx 2-1.1:1.0 eth1: Failed to read reg index 0x00000114: -19
    smsc95xx 2-1.1:1.0 eth1: Error reading MII_ACCESS
    smsc95xx 2-1.1:1.0 eth1: __smsc95xx_mdio_read: MII is busy
    smsc95xx 2-1.1:1.0 eth1: Failed to read reg index 0x00000114: -19
    smsc95xx 2-1.1:1.0 eth1: Error reading MII_ACCESS
    smsc95xx 2-1.1:1.0 eth1: __smsc95xx_mdio_read: MII is busy
    smsc95xx 2-1.1:1.0 eth1: hardware isn't capable of remote wakeup
    usb 2-1.4: USB disconnect, device number 4
    ci_hdrc ci_hdrc.1: USB bus 2 deregistered
    ci_hdrc ci_hdrc.0: remove, state 4
    usb usb1: USB disconnect, device number 1
    ci_hdrc ci_hdrc.0: USB bus 1 deregistered
    imx2-wdt 30280000.watchdog: Device shutdown: Expect reboot!
    reboot: Restarting system
    
    Ignore the -ENODEV errors inside __smsc95xx_mdio_read() and
    __smsc95xx_phy_wait_not_busy() and do not print error messages
    when -ENODEV is returned.
    
    Fixes: a049a30fc27c ("net: usb: Correct PHY handling of smsc95xx")
    Signed-off-by: Fabio Estevam <festevam@denx.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 74ca449b3858ce4f76d8bdeb7d2edc0f7e40f82d
Author: Tom Rix <trix@redhat.com>
Date:   Sat Mar 5 07:06:42 2022 -0800

    qed: return status of qed_iov_get_link
    
    [ Upstream commit d9dc0c84ad2d4cc911ba252c973d1bf18d5eb9cf ]
    
    Clang static analysis reports this issue
    qed_sriov.c:4727:19: warning: Assigned value is
      garbage or undefined
      ivi->max_tx_rate = tx_rate ? tx_rate : link.speed;
                       ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    link is only sometimes set by the call to qed_iov_get_link()
    qed_iov_get_link fails without setting link or returning
    status.  So change the decl to return status.
    
    Fixes: 73390ac9d82b ("qed*: support ndo_get_vf_config")
    Signed-off-by: Tom Rix <trix@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d9d4122ea35e6ec6b7b3034de690b1d8e656bf98
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Nov 15 09:05:52 2021 -0800

    net: gro: move skb_gro_receive_list to udp_offload.c
    
    [ Upstream commit 0b935d7f8c07bf0a192712bdbf76dbf45ef8b115 ]
    
    This helper is used once, no need to keep it in fat net/core/skbuff.c
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9a6e4c5d7edf2b8c1a97ae2c5dfe106b0366f02c
Author: Steffen Klassert <steffen.klassert@secunet.com>
Date:   Mon Mar 7 13:11:40 2022 +0100

    esp: Fix BEET mode inter address family tunneling on GSO
    
    [ Upstream commit 053c8fdf2c930efdff5496960842bbb5c34ad43a ]
    
    The xfrm{4,6}_beet_gso_segment() functions did not correctly set the
    SKB_GSO_IPXIP4 and SKB_GSO_IPXIP6 gso types for the address family
    tunneling case. Fix this by setting these gso types.
    
    Fixes: 384a46ea7bdc7 ("esp4: add gso_segment for esp4 beet mode")
    Fixes: 7f9e40eb18a99 ("esp6: add gso_segment for esp6 beet mode")
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9afe83f62aac348db1facb28bfc106109a06e44d
Author: Steffen Klassert <steffen.klassert@secunet.com>
Date:   Mon Mar 7 13:11:39 2022 +0100

    esp: Fix possible buffer overflow in ESP transformation
    
    [ Upstream commit ebe48d368e97d007bfeb76fcb065d6cfc4c96645 ]
    
    The maximum message size that can be send is bigger than
    the  maximum site that skb_page_frag_refill can allocate.
    So it is possible to write beyond the allocated buffer.
    
    Fix this by doing a fallback to COW in that case.
    
    v2:
    
    Avoid get get_order() costs as suggested by Linus Torvalds.
    
    Fixes: cac2661c53f3 ("esp4: Avoid skb_cow_data whenever possible")
    Fixes: 03e2a30f6a27 ("esp6: Avoid skb_cow_data whenever possible")
    Reported-by: valis <sec@valis.email>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2f4923628118bf7b6294ca66a603b74a493a940d
Author: Jia-Ju Bai <baijiaju1990@gmail.com>
Date:   Sat Mar 5 01:14:11 2022 -0800

    net: qlogic: check the return value of dma_alloc_coherent() in qed_vf_hw_prepare()
    
    [ Upstream commit e0058f0fa80f6e09c4d363779c241c45a3c56b94 ]
    
    The function dma_alloc_coherent() in qed_vf_hw_prepare() can fail, so
    its return value should be checked.
    
    Fixes: 1408cc1fa48c ("qed: Introduce VFs")
    Reported-by: TOTE Robot <oslab@tsinghua.edu.cn>
    Signed-off-by: Jia-Ju Bai <baijiaju1990@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ec4f8cd450223633c72331410ad0327199e34c81
Author: Jia-Ju Bai <baijiaju1990@gmail.com>
Date:   Sat Mar 5 00:58:16 2022 -0800

    isdn: hfcpci: check the return value of dma_set_mask() in setup_hw()
    
    [ Upstream commit d0aeb0d4a3f7d2a0df7e9545892bbeede8f2ac7e ]
    
    The function dma_set_mask() in setup_hw() can fail, so its return value
    should be checked.
    
    Fixes: 1700fe1a10dc ("Add mISDN HFC PCI driver")
    Reported-by: TOTE Robot <oslab@tsinghua.edu.cn>
    Signed-off-by: Jia-Ju Bai <baijiaju1990@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dc54ba9932aeaaa1a21fe214af1f446593a78274
Author: Zhang Min <zhang.min9@zte.com.cn>
Date:   Tue Mar 1 17:10:59 2022 +0800

    vdpa: fix use-after-free on vp_vdpa_remove
    
    [ Upstream commit eb057b44dbe35ae14527830236a92f51de8f9184 ]
    
    When vp_vdpa driver is unbind, vp_vdpa is freed in vdpa_unregister_device
    and then vp_vdpa->mdev.pci_dev is dereferenced in vp_modern_remove,
    triggering use-after-free.
    
    Call Trace of unbinding driver free vp_vdpa :
    do_syscall_64
      vfs_write
        kernfs_fop_write_iter
          device_release_driver_internal
            pci_device_remove
              vp_vdpa_remove
                vdpa_unregister_device
                  kobject_release
                    device_release
                      kfree
    
    Call Trace of dereference vp_vdpa->mdev.pci_dev:
    vp_modern_remove
      pci_release_selected_regions
        pci_release_region
          pci_resource_len
            pci_resource_end
              (dev)->resource[(bar)].end
    
    Signed-off-by: Zhang Min <zhang.min9@zte.com.cn>
    Signed-off-by: Yi Wang <wang.yi59@zte.com.cn>
    Link: https://lore.kernel.org/r/20220301091059.46869-1-wang.yi59@zte.com.cn
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Fixes: 64b9f64f80a6 ("vdpa: introduce virtio pci driver")
    Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0842aaadc163b7a73e3721fc738f2179370c04a4
Author: Xie Yongji <xieyongji@bytedance.com>
Date:   Fri Mar 4 18:00:58 2022 +0800

    virtio-blk: Remove BUG_ON() in virtio_queue_rq()
    
    [ Upstream commit e030759a1ddcbf61d42b6e996bfeb675e0032d8b ]
    
    Currently we have a BUG_ON() to make sure the number of sg
    list does not exceed queue_max_segments() in virtio_queue_rq().
    However, the block layer uses queue_max_discard_segments()
    instead of queue_max_segments() to limit the sg list for
    discard requests. So the BUG_ON() might be triggered if
    virtio-blk device reports a larger value for max discard
    segment than queue_max_segments(). To fix it, let's simply
    remove the BUG_ON() which has become unnecessary after commit
    02746e26c39e("virtio-blk: avoid preallocating big SGL for data").
    And the unused vblk->sg_elems can also be removed together.
    
    Fixes: 1f23816b8eb8 ("virtio_blk: add discard and write zeroes support")
    Suggested-by: Christoph Hellwig <hch@infradead.org>
    Signed-off-by: Xie Yongji <xieyongji@bytedance.com>
    Reviewed-by: Max Gurtovoy <mgurtovoy@nvidia.com>
    Link: https://lore.kernel.org/r/20220304100058.116-2-xieyongji@bytedance.com
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bb2269ff820b572c5a1ab962ba55009046aeea1f
Author: Xie Yongji <xieyongji@bytedance.com>
Date:   Fri Mar 4 18:00:57 2022 +0800

    virtio-blk: Don't use MAX_DISCARD_SEGMENTS if max_discard_seg is zero
    
    [ Upstream commit dacc73ed0b88f1a787ec20385f42ca9dd9eddcd0 ]
    
    Currently the value of max_discard_segment will be set to
    MAX_DISCARD_SEGMENTS (256) with no basis in hardware if device
    set 0 to max_discard_seg in configuration space. It's incorrect
    since the device might not be able to handle such large descriptors.
    To fix it, let's follow max_segments restrictions in this case.
    
    Fixes: 1f23816b8eb8 ("virtio_blk: add discard and write zeroes support")
    Signed-off-by: Xie Yongji <xieyongji@bytedance.com>
    Link: https://lore.kernel.org/r/20220304100058.116-1-xieyongji@bytedance.com
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d9a747e6b6561280bf1791bb24c5e9e082193dad
Author: Anirudh Rayabharam <mail@anirudhrb.com>
Date:   Sat Mar 5 15:25:25 2022 +0530

    vhost: fix hung thread due to erroneous iotlb entries
    
    [ Upstream commit e2ae38cf3d91837a493cb2093c87700ff3cbe667 ]
    
    In vhost_iotlb_add_range_ctx(), range size can overflow to 0 when
    start is 0 and last is ULONG_MAX. One instance where it can happen
    is when userspace sends an IOTLB message with iova=size=uaddr=0
    (vhost_process_iotlb_msg). So, an entry with size = 0, start = 0,
    last = ULONG_MAX ends up in the iotlb. Next time a packet is sent,
    iotlb_access_ok() loops indefinitely due to that erroneous entry.
    
            Call Trace:
             <TASK>
             iotlb_access_ok+0x21b/0x3e0 drivers/vhost/vhost.c:1340
             vq_meta_prefetch+0xbc/0x280 drivers/vhost/vhost.c:1366
             vhost_transport_do_send_pkt+0xe0/0xfd0 drivers/vhost/vsock.c:104
             vhost_worker+0x23d/0x3d0 drivers/vhost/vhost.c:372
             kthread+0x2e9/0x3a0 kernel/kthread.c:377
             ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:295
             </TASK>
    
    Reported by syzbot at:
            https://syzkaller.appspot.com/bug?extid=0abd373e2e50d704db87
    
    To fix this, do two things:
    
    1. Return -EINVAL in vhost_chr_write_iter() when userspace asks to map
       a range with size 0.
    2. Fix vhost_iotlb_add_range_ctx() to handle the range [0, ULONG_MAX]
       by splitting it into two entries.
    
    Fixes: 0bbe30668d89e ("vhost: factor out IOTLB")
    Reported-by: syzbot+0abd373e2e50d704db87@syzkaller.appspotmail.com
    Tested-by: syzbot+0abd373e2e50d704db87@syzkaller.appspotmail.com
    Signed-off-by: Anirudh Rayabharam <mail@anirudhrb.com>
    Link: https://lore.kernel.org/r/20220305095525.5145-1-mail@anirudhrb.com
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 640445d6fc059d4514ffea79eb4196299e0e2d0f
Author: Alexey Khoroshilov <khoroshilov@ispras.ru>
Date:   Fri Mar 4 21:25:36 2022 +0300

    mISDN: Fix memory leak in dsp_pipeline_build()
    
    [ Upstream commit c6a502c2299941c8326d029cfc8a3bc8a4607ad5 ]
    
    dsp_pipeline_build() allocates dup pointer by kstrdup(cfg),
    but then it updates dup variable by strsep(&dup, "|").
    As a result when it calls kfree(dup), the dup variable contains NULL.
    
    Found by Linux Driver Verification project (linuxtesting.org) with SVACE.
    
    Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
    Fixes: 960366cf8dbb ("Add mISDN DSP")
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit eb8330efb17f60d84d4471849d8b02e57becef09
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Thu Mar 3 08:54:15 2022 +0100

    net: phy: meson-gxl: fix interrupt handling in forced mode
    
    [ Upstream commit a502a8f04097e038c3daa16c5202a9538116d563 ]
    
    This PHY doesn't support a link-up interrupt source. If aneg is enabled
    we use the "aneg complete" interrupt for this purpose, but if aneg is
    disabled link-up isn't signaled currently.
    According to a vendor driver there's an additional "energy detect"
    interrupt source that can be used to signal link-up if aneg is disabled.
    We can safely ignore this interrupt source if aneg is enabled.
    
    This patch was tested on a TX3 Mini TV box with S905W (even though
    boot message says it's a S905D).
    
    This issue has been existing longer, but due to changes in phylib and
    the driver the patch applies only from the commit marked as fixed.
    
    Fixes: 84c8f773d2dc ("net: phy: meson-gxl: remove the use of .ack_callback()")
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Link: https://lore.kernel.org/r/04cac530-ea1b-850e-6cfa-144a55c4d75d@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 553a0b06448cddd27962d483bfa9bc7052f66847
Author: Xie Yongji <xieyongji@bytedance.com>
Date:   Fri Jan 21 16:39:39 2022 +0800

    vduse: Fix returning wrong type in vduse_domain_alloc_iova()
    
    [ Upstream commit b9d102dafec6af1c07b610faf0a6d4e8aee14ae0 ]
    
    This fixes the following smatch warnings:
    
    drivers/vdpa/vdpa_user/iova_domain.c:305 vduse_domain_alloc_iova() warn: should 'iova_pfn << shift' be a 64 bit type?
    
    Fixes: 8c773d53fb7b ("vduse: Implement an MMU-based software IOTLB")
    Reported-by: kernel test robot <lkp@intel.com>
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Xie Yongji <xieyongji@bytedance.com>
    Link: https://lore.kernel.org/r/20220121083940.102-1-xieyongji@bytedance.com
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Acked-by: Jason Wang <jasowang@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9f6effca75626c7a7c7620dabcb1a254ca530230
Author: Si-Wei Liu <si-wei.liu@oracle.com>
Date:   Fri Jan 14 19:28:01 2022 -0500

    vdpa/mlx5: add validation for VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET command
    
    [ Upstream commit ed0f849fc3a63ed2ddf5e72cdb1de3bdbbb0f8eb ]
    
    When control vq receives a VIRTIO_NET_CTRL_MQ_VQ_PAIRS_SET command
    request from the driver, presently there is no validation against the
    number of queue pairs to configure, or even if multiqueue had been
    negotiated or not is unverified. This may lead to kernel panic due to
    uninitialized resource for the queues were there any bogus request
    sent down by untrusted driver. Tie up the loose ends there.
    
    Fixes: 52893733f2c5 ("vdpa/mlx5: Add multiqueue support")
    Signed-off-by: Si-Wei Liu <si-wei.liu@oracle.com>
    Link: https://lore.kernel.org/r/1642206481-30721-4-git-send-email-si-wei.liu@oracle.com
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Reviewed-by: Eli Cohen <elic@nvidia.com>
    Acked-by: Jason Wang <jasowang@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f4f59fdbc748805b08c13dae14c01f0518c77c94
Author: Tung Nguyen <tung.q.nguyen@dektech.com.au>
Date:   Fri Mar 4 03:25:18 2022 +0000

    tipc: fix kernel panic when enabling bearer
    
    [ Upstream commit be4977b847f5d5cedb64d50eaaf2218c3a55a3a3 ]
    
    When enabling a bearer on a node, a kernel panic is observed:
    
    [    4.498085] RIP: 0010:tipc_mon_prep+0x4e/0x130 [tipc]
    ...
    [    4.520030] Call Trace:
    [    4.520689]  <IRQ>
    [    4.521236]  tipc_link_build_proto_msg+0x375/0x750 [tipc]
    [    4.522654]  tipc_link_build_state_msg+0x48/0xc0 [tipc]
    [    4.524034]  __tipc_node_link_up+0xd7/0x290 [tipc]
    [    4.525292]  tipc_rcv+0x5da/0x730 [tipc]
    [    4.526346]  ? __netif_receive_skb_core+0xb7/0xfc0
    [    4.527601]  tipc_l2_rcv_msg+0x5e/0x90 [tipc]
    [    4.528737]  __netif_receive_skb_list_core+0x20b/0x260
    [    4.530068]  netif_receive_skb_list_internal+0x1bf/0x2e0
    [    4.531450]  ? dev_gro_receive+0x4c2/0x680
    [    4.532512]  napi_complete_done+0x6f/0x180
    [    4.533570]  virtnet_poll+0x29c/0x42e [virtio_net]
    ...
    
    The node in question is receiving activate messages in another
    thread after changing bearer status to allow message sending/
    receiving in current thread:
    
             thread 1           |              thread 2
             --------           |              --------
                                |
    tipc_enable_bearer()        |
      test_and_set_bit_lock()   |
        tipc_bearer_xmit_skb()  |
                                | tipc_l2_rcv_msg()
                                |   tipc_rcv()
                                |     __tipc_node_link_up()
                                |       tipc_link_build_state_msg()
                                |         tipc_link_build_proto_msg()
                                |           tipc_mon_prep()
                                |           {
                                |             ...
                                |             // null-pointer dereference
                                |             u16 gen = mon->dom_gen;
                                |             ...
                                |           }
      // Not being executed yet |
      tipc_mon_create()         |
      {                         |
        ...                     |
        // allocate             |
        mon = kzalloc();        |
        ...                     |
      }                         |
    
    Monitoring pointer in thread 2 is dereferenced before monitoring data
    is allocated in thread 1. This causes kernel panic.
    
    This commit fixes it by allocating the monitoring data before enabling
    the bearer to receive messages.
    
    Fixes: 35c55c9877f8 ("tipc: add neighbor monitoring framework")
    Reported-by: Shuang Li <shuali@redhat.com>
    Acked-by: Jon Maloy <jmaloy@redhat.com>
    Signed-off-by: Tung Nguyen <tung.q.nguyen@dektech.com.au>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1d1719ac4b8ecaafd4902674f1c44d5e484d54a0
Author: Pali Rohár <pali@kernel.org>
Date:   Mon Jan 17 19:20:06 2022 +0100

    arm64: dts: armada-3720-turris-mox: Add missing ethernet0 alias
    
    [ Upstream commit a0e897d1b36793fe0ab899f2fe93dff25c82f418 ]
    
    U-Boot uses ethernet* aliases for setting MAC addresses. Therefore define
    also alias for ethernet0.
    
    Fixes: 7109d817db2e ("arm64: dts: marvell: add DTS for Turris Mox")
    Signed-off-by: Pali Rohár <pali@kernel.org>
    Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 381ac58e7001bfe6eebc779e9f25e5e757fb3754
Author: Jia-Ju Bai <baijiaju1990@gmail.com>
Date:   Thu Feb 24 19:41:10 2022 -0800

    HID: nintendo: check the return value of alloc_workqueue()
    
    [ Upstream commit fe23b6bbeac40de957724b90a88d46fb336e29a9 ]
    
    The function alloc_workqueue() in nintendo_hid_probe() can fail, but
    there is no check of its return value. To fix this bug, its return value
    should be checked with new error handling code.
    
    Fixes: c4eae84feff3e ("HID: nintendo: add rumble support")
    Reported-by: TOTE Robot <oslab@tsinghua.edu.cn>
    Signed-off-by: Jia-Ju Bai <baijiaju1990@gmail.com>
    Reviewed-by: Silvan Jegen <s.jegen@gmail.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cbcf790ce88ee25b8f58924b22b1de6b4b34dbd8
Author: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date:   Fri Feb 25 17:18:58 2022 -0800

    HID: vivaldi: fix sysfs attributes leak
    
    [ Upstream commit cc71d37fd1f11e0495b1cf580909ebea37eaa886 ]
    
    The driver creates the top row map sysfs attribute in input_configured()
    method; unfortunately we do not have a callback that is executed when HID
    interface is unbound, thus we are leaking these sysfs attributes, for
    example when device is disconnected.
    
    To fix it let's switch to managed version of adding sysfs attributes which
    will ensure that they are destroyed when the driver is unbound.
    
    Fixes: 14c9c014babe ("HID: add vivaldi HID driver")
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Tested-by: Stephen Boyd <swboyd@chromium.org>
    Reviewed-by: Stephen Boyd <swboyd@chromium.org>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 64ace2c0d0d56b35498be176138d3104385755b8
Author: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Date:   Fri Jan 28 15:20:56 2022 +0100

    soc: mediatek: mt8192-mmsys: Fix dither to dsi0 path's input sel
    
    [ Upstream commit c432cd598a185afefba1ac3b0ee226f222f71341 ]
    
    In commit d687e056a18f ("soc: mediatek: mmsys: Add mt8192 mmsys routing table"),
    the mmsys routing table for mt8192 was introduced but the input selector
    for DITHER->DSI0 has no value assigned to it.
    
    This means that we are clearing bit 0 instead of setting it, blocking
    communication between these two blocks; due to that, any display that
    is connected to DSI0 will not work, as no data will go through.
    The effect of that issue is that, during bootup, the DRM will block for
    some time, while atomically waiting for a vblank that never happens;
    later, the situation doesn't get better, leaving the display in a
    non-functional state.
    
    To fix this issue, fix the route entry in the table by assigning the
    dither input selector to MT8192_DISP_DSI0_SEL_IN.
    
    Fixes: d687e056a18f ("soc: mediatek: mmsys: Add mt8192 mmsys routing table")
    Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Tested-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
    Reviewed-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
    Link: https://lore.kernel.org/r/20220128142056.359900-1-angelogioacchino.delregno@collabora.com
    Signed-off-by: Matthias Brugger <matthias.bgg@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d55c569f2c8767a83e3778e98502d1af9c362dea
Author: Taniya Das <tdas@codeaurora.org>
Date:   Thu Feb 24 00:26:06 2022 +0530

    clk: qcom: dispcc: Update the transition delay for MDSS GDSC
    
    [ Upstream commit 6e6fec3f961c00ca34ffb4bf2ad9febb4b499f8d ]
    
    On SC7180 we observe black screens because the gdsc is being
    enabled/disabled very rapidly and the GDSC FSM state does not work as
    expected. This is due to the fact that the GDSC reset value is being
    updated from SW.
    
    The recommended transition delay for mdss core gdsc updated for
    SC7180/SC7280/SM8250.
    
    Fixes: dd3d06622138 ("clk: qcom: Add display clock controller driver for SC7180")
    Fixes: 1a00c962f9cd ("clk: qcom: Add display clock controller driver for SC7280")
    Fixes: 80a18f4a8567 ("clk: qcom: Add display clock controller driver for SM8150 and SM8250")
    Signed-off-by: Taniya Das <tdas@codeaurora.org>
    Link: https://lore.kernel.org/r/20220223185606.3941-2-tdas@codeaurora.org
    Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    [sboyd@kernel.org: lowercase hex]
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 530302b5950c2293844eb3008ce07b4d25f6a873
Author: Taniya Das <tdas@codeaurora.org>
Date:   Thu Feb 24 00:26:05 2022 +0530

    clk: qcom: gdsc: Add support to update GDSC transition delay
    
    [ Upstream commit 4e7c4d3652f96f41179aab3ff53025c7a550d689 ]
    
    GDSCs have multiple transition delays which are used for the GDSC FSM
    states. Older targets/designs required these values to be updated from
    gdsc code to certain default values for the FSM state to work as
    expected. But on the newer targets/designs the values updated from the
    GDSC driver can hamper the FSM state to not work as expected.
    
    On SC7180 we observe black screens because the gdsc is being
    enabled/disabled very rapidly and the GDSC FSM state does not work as
    expected. This is due to the fact that the GDSC reset value is being
    updated from SW.
    
    Thus add support to update the transition delay from the clock
    controller gdscs as required.
    
    Fixes: 45dd0e55317cc ("clk: qcom: Add support for GDSCs)
    Signed-off-by: Taniya Das <tdas@codeaurora.org>
    Link: https://lore.kernel.org/r/20220223185606.3941-1-tdas@codeaurora.org
    Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e5b4f60993d250b9bacd417422e27e48a67fd830
Author: Maxime Ripard <maxime@cerno.tech>
Date:   Sat Feb 19 13:07:55 2022 +0100

    ARM: boot: dts: bcm2711: Fix HVS register range
    
    [ Upstream commit 515415d316168c6521d74ea8280287e28d7303e6 ]
    
    While the HVS has the same context memory size in the BCM2711 than in
    the previous SoCs, the range allocated to the registers doubled and it
    now takes 16k + 16k, compared to 8k + 16k before.
    
    The KMS driver will use the whole context RAM though, eventually
    resulting in a pointer dereference error when we access the higher half
    of the context memory since it hasn't been mapped.
    
    Fixes: 4564363351e2 ("ARM: dts: bcm2711: Enable the display pipeline")
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 56185434e1e50acecee56d8f5850135009b87947
Author: Pavel Skripkin <paskripkin@gmail.com>
Date:   Sun Feb 20 19:01:14 2022 +0300

    HID: hid-thrustmaster: fix OOB read in thrustmaster_interrupts
    
    [ Upstream commit fc3ef2e3297b3c0e2006b5d7b3d66965e3392036 ]
    
    Syzbot reported an slab-out-of-bounds Read in thrustmaster_probe() bug.
    The root case is in missing validation check of actual number of endpoints.
    
    Code should not blindly access usb_host_interface::endpoint array, since
    it may contain less endpoints than code expects.
    
    Fix it by adding missing validaion check and print an error if
    number of endpoints do not match expected number
    
    Fixes: c49c33637802 ("HID: support for initialization of some Thrustmaster wheels")
    Reported-and-tested-by: syzbot+35eebd505e97d315d01c@syzkaller.appspotmail.com
    Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ec7332452d905e546bde5ad0f48515c551717828
Author: Jiri Kosina <jkosina@suse.cz>
Date:   Thu Feb 17 14:13:49 2022 +0100

    HID: elo: Revert USB reference counting
    
    [ Upstream commit ac89895213d8950dba6ab342863a0959f73142a7 ]
    
    Commit 817b8b9c539 ("HID: elo: fix memory leak in elo_probe") introduced
    memory leak on error path, but more importantly the whole USB reference
    counting is not needed at all in the first place, as the driver itself
    doesn't change the reference counting in any way, and the associated
    usb_device is guaranteed to be kept around by USB core as long as the
    driver binding exists.
    
    Reported-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Fixes: fbf42729d0e ("HID: elo: update the reference count of the usb device structure")
    Fixes: 817b8b9c539 ("HID: elo: fix memory leak in elo_probe")
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 05480683a89125244801e7aa5d49267c6ef96152
Author: Bjorn Andersson <bjorn.andersson@linaro.org>
Date:   Wed Dec 22 08:20:58 2021 -0800

    arm64: dts: qcom: sm8350: Correct UFS symbol clocks
    
    [ Upstream commit 0fd4dcb607ce29110d6c0b481a98c4ff3d300551 ]
    
    The introduction of '9a61f813fcc8 ("clk: qcom: regmap-mux: fix parent
    clock lookup")' broke UFS support on SM8350.
    
    The cause for this is that the symbol clocks have a specified rate in
    the "freq-table-hz" table in the UFS node, which causes the UFS code to
    request a rate change, for which the "bi_tcxo" happens to provide the
    closest rate.  Prior to the change in regmap-mux it was determined
    (incorrectly) that no change was needed and everything worked.
    
    The rates of 75 and 300MHz matches the documentation for the symbol
    clocks, but we don't represent the parent clocks today. So let's mimic
    the configuration found in other platforms, by omitting the rate for the
    symbol clocks as well to avoid the rate change.
    
    While at it also fill in the dummy symbol clocks that was dropped from
    the GCC driver as it was upstreamed.
    
    Fixes: 59c7cf814783 ("arm64: dts: qcom: sm8350: Add UFS nodes")
    Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Reviewed-by: Vinod Koul <vkoul@kernel.org>
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Link: https://lore.kernel.org/r/20211222162058.3418902-1-bjorn.andersson@linaro.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 84494290927b42bac063eaa899dcabe183aa160a
Author: Konrad Dybcio <konrad.dybcio@somainline.org>
Date:   Sun Nov 14 02:27:47 2021 +0100

    arm64: dts: qcom: sm8350: Describe GCC dependency clocks
    
    [ Upstream commit 9ea9eb36b3c046fc48e737db4de69f7acd12f9be ]
    
    Add all the clock names that the GCC driver expects to get via DT, so that the
    clock handles can be filled as the development progresses.
    
    Signed-off-by: Konrad Dybcio <konrad.dybcio@somainline.org>
    Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Link: https://lore.kernel.org/r/20211114012755.112226-8-konrad.dybcio@somainline.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>