commit 18ed766f3642fa75262885462d3052ad7c8c87a2
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Aug 31 17:15:24 2022 +0200

    Linux 5.10.140
    
    Link: https://lore.kernel.org/r/20220829105756.500128871@linuxfoundation.org
    Tested-by: Florian Fainelli <f.fainelli@gmail.com>
    Tested-by: Slade Watkins <slade@sladewatkins.com>
    Tested-by: Pavel Machek (CIP) <pavel@denx.de>
    Tested-by: Salvatore Bonaccorso <carnil@debian.org>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
    Tested-by: Rudi Heitbaum <rudi@heitbaum.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e8979807178434db8ceaa84dfcd44363e71e50bb
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Thu Aug 25 23:26:47 2022 +0200

    bpf: Don't use tnum_range on array range checking for poke descriptors
    
    commit a657182a5c5150cdfacb6640aad1d2712571a409 upstream.
    
    Hsin-Wei reported a KASAN splat triggered by their BPF runtime fuzzer which
    is based on a customized syzkaller:
    
      BUG: KASAN: slab-out-of-bounds in bpf_int_jit_compile+0x1257/0x13f0
      Read of size 8 at addr ffff888004e90b58 by task syz-executor.0/1489
      CPU: 1 PID: 1489 Comm: syz-executor.0 Not tainted 5.19.0 #1
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
      1.13.0-1ubuntu1.1 04/01/2014
      Call Trace:
       <TASK>
       dump_stack_lvl+0x9c/0xc9
       print_address_description.constprop.0+0x1f/0x1f0
       ? bpf_int_jit_compile+0x1257/0x13f0
       kasan_report.cold+0xeb/0x197
       ? kvmalloc_node+0x170/0x200
       ? bpf_int_jit_compile+0x1257/0x13f0
       bpf_int_jit_compile+0x1257/0x13f0
       ? arch_prepare_bpf_dispatcher+0xd0/0xd0
       ? rcu_read_lock_sched_held+0x43/0x70
       bpf_prog_select_runtime+0x3e8/0x640
       ? bpf_obj_name_cpy+0x149/0x1b0
       bpf_prog_load+0x102f/0x2220
       ? __bpf_prog_put.constprop.0+0x220/0x220
       ? find_held_lock+0x2c/0x110
       ? __might_fault+0xd6/0x180
       ? lock_downgrade+0x6e0/0x6e0
       ? lock_is_held_type+0xa6/0x120
       ? __might_fault+0x147/0x180
       __sys_bpf+0x137b/0x6070
       ? bpf_perf_link_attach+0x530/0x530
       ? new_sync_read+0x600/0x600
       ? __fget_files+0x255/0x450
       ? lock_downgrade+0x6e0/0x6e0
       ? fput+0x30/0x1a0
       ? ksys_write+0x1a8/0x260
       __x64_sys_bpf+0x7a/0xc0
       ? syscall_enter_from_user_mode+0x21/0x70
       do_syscall_64+0x3b/0x90
       entry_SYSCALL_64_after_hwframe+0x63/0xcd
      RIP: 0033:0x7f917c4e2c2d
    
    The problem here is that a range of tnum_range(0, map->max_entries - 1) has
    limited ability to represent the concrete tight range with the tnum as the
    set of resulting states from value + mask can result in a superset of the
    actual intended range, and as such a tnum_in(range, reg->var_off) check may
    yield true when it shouldn't, for example tnum_range(0, 2) would result in
    00XX -> v = 0000, m = 0011 such that the intended set of {0, 1, 2} is here
    represented by a less precise superset of {0, 1, 2, 3}. As the register is
    known const scalar, really just use the concrete reg->var_off.value for the
    upper index check.
    
    Fixes: d2e4c1e6c294 ("bpf: Constant map key tracking for prog array pokes")
    Reported-by: Hsin-Wei Hung <hsinweih@uci.edu>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Cc: Shung-Hsi Yu <shung-hsi.yu@suse.com>
    Acked-by: John Fastabend <john.fastabend@gmail.com>
    Link: https://lore.kernel.org/r/984b37f9fdf7ac36831d2137415a4a915744c1b6.1661462653.git.daniel@iogearbox.net
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 46fcb0fc884db78a0384be92cc2a51927e6581b8
Author: Saurabh Sengar <ssengar@linux.microsoft.com>
Date:   Thu Aug 4 08:55:34 2022 -0700

    scsi: storvsc: Remove WQ_MEM_RECLAIM from storvsc_error_wq
    
    commit d957e7ffb2c72410bcc1a514153a46719255a5da upstream.
    
    storvsc_error_wq workqueue should not be marked as WQ_MEM_RECLAIM as it
    doesn't need to make forward progress under memory pressure.  Marking this
    workqueue as WQ_MEM_RECLAIM may cause deadlock while flushing a
    non-WQ_MEM_RECLAIM workqueue.  In the current state it causes the following
    warning:
    
    [   14.506347] ------------[ cut here ]------------
    [   14.506354] workqueue: WQ_MEM_RECLAIM storvsc_error_wq_0:storvsc_remove_lun is flushing !WQ_MEM_RECLAIM events_freezable_power_:disk_events_workfn
    [   14.506360] WARNING: CPU: 0 PID: 8 at <-snip->kernel/workqueue.c:2623 check_flush_dependency+0xb5/0x130
    [   14.506390] CPU: 0 PID: 8 Comm: kworker/u4:0 Not tainted 5.4.0-1086-azure #91~18.04.1-Ubuntu
    [   14.506391] Hardware name: Microsoft Corporation Virtual Machine/Virtual Machine, BIOS Hyper-V UEFI Release v4.1 05/09/2022
    [   14.506393] Workqueue: storvsc_error_wq_0 storvsc_remove_lun
    [   14.506395] RIP: 0010:check_flush_dependency+0xb5/0x130
                    <-snip->
    [   14.506408] Call Trace:
    [   14.506412]  __flush_work+0xf1/0x1c0
    [   14.506414]  __cancel_work_timer+0x12f/0x1b0
    [   14.506417]  ? kernfs_put+0xf0/0x190
    [   14.506418]  cancel_delayed_work_sync+0x13/0x20
    [   14.506420]  disk_block_events+0x78/0x80
    [   14.506421]  del_gendisk+0x3d/0x2f0
    [   14.506423]  sr_remove+0x28/0x70
    [   14.506427]  device_release_driver_internal+0xef/0x1c0
    [   14.506428]  device_release_driver+0x12/0x20
    [   14.506429]  bus_remove_device+0xe1/0x150
    [   14.506431]  device_del+0x167/0x380
    [   14.506432]  __scsi_remove_device+0x11d/0x150
    [   14.506433]  scsi_remove_device+0x26/0x40
    [   14.506434]  storvsc_remove_lun+0x40/0x60
    [   14.506436]  process_one_work+0x209/0x400
    [   14.506437]  worker_thread+0x34/0x400
    [   14.506439]  kthread+0x121/0x140
    [   14.506440]  ? process_one_work+0x400/0x400
    [   14.506441]  ? kthread_park+0x90/0x90
    [   14.506443]  ret_from_fork+0x35/0x40
    [   14.506445] ---[ end trace 2d9633159fdc6ee7 ]---
    
    Link: https://lore.kernel.org/r/1659628534-17539-1-git-send-email-ssengar@linux.microsoft.com
    Fixes: 436ad9413353 ("scsi: storvsc: Allow only one remove lun work item to be issued per lun")
    Reviewed-by: Michael Kelley <mikelley@microsoft.com>
    Signed-off-by: Saurabh Sengar <ssengar@linux.microsoft.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8d5c106fe216bf16080d7070c37adf56a9227e60
Author: Kiwoong Kim <kwmad.kim@samsung.com>
Date:   Tue Aug 2 10:42:31 2022 +0900

    scsi: ufs: core: Enable link lost interrupt
    
    commit 6d17a112e9a63ff6a5edffd1676b99e0ffbcd269 upstream.
    
    Link lost is treated as fatal error with commit c99b9b230149 ("scsi: ufs:
    Treat link loss as fatal error"), but the event isn't registered as
    interrupt source. Enable it.
    
    Link: https://lore.kernel.org/r/1659404551-160958-1-git-send-email-kwmad.kim@samsung.com
    Fixes: c99b9b230149 ("scsi: ufs: Treat link loss as fatal error")
    Reviewed-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Kiwoong Kim <kwmad.kim@samsung.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c0ba9aa95bf79aa49f1097ff1bb5884c8e08023c
Author: Stephane Eranian <eranian@google.com>
Date:   Wed Aug 3 09:00:31 2022 -0700

    perf/x86/intel/uncore: Fix broken read_counter() for SNB IMC PMU
    
    commit 11745ecfe8fea4b4a4c322967a7605d2ecbd5080 upstream.
    
    Existing code was generating bogus counts for the SNB IMC bandwidth counters:
    
    $ perf stat -a -I 1000 -e uncore_imc/data_reads/,uncore_imc/data_writes/
         1.000327813           1,024.03 MiB  uncore_imc/data_reads/
         1.000327813              20.73 MiB  uncore_imc/data_writes/
         2.000580153         261,120.00 MiB  uncore_imc/data_reads/
         2.000580153              23.28 MiB  uncore_imc/data_writes/
    
    The problem was introduced by commit:
      07ce734dd8ad ("perf/x86/intel/uncore: Clean up client IMC")
    
    Where the read_counter callback was replace to point to the generic
    uncore_mmio_read_counter() function.
    
    The SNB IMC counters are freerunnig 32-bit counters laid out contiguously in
    MMIO. But uncore_mmio_read_counter() is using a readq() call to read from
    MMIO therefore reading 64-bit from MMIO. Although this is okay for the
    uncore_perf_event_update() function because it is shifting the value based
    on the actual counter width to compute a delta, it is not okay for the
    uncore_pmu_event_start() which is simply reading the counter  and therefore
    priming the event->prev_count with a bogus value which is responsible for
    causing bogus deltas in the perf stat command above.
    
    The fix is to reintroduce the custom callback for read_counter for the SNB
    IMC PMU and use readl() instead of readq(). With the change the output of
    perf stat is back to normal:
    $ perf stat -a -I 1000 -e uncore_imc/data_reads/,uncore_imc/data_writes/
         1.000120987             296.94 MiB  uncore_imc/data_reads/
         1.000120987             138.42 MiB  uncore_imc/data_writes/
         2.000403144             175.91 MiB  uncore_imc/data_reads/
         2.000403144              68.50 MiB  uncore_imc/data_writes/
    
    Fixes: 07ce734dd8ad ("perf/x86/intel/uncore: Clean up client IMC")
    Signed-off-by: Stephane Eranian <eranian@google.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Kan Liang <kan.liang@linux.intel.com>
    Link: https://lore.kernel.org/r/20220803160031.1379788-1-eranian@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5a768c977085e75eaa7471fcefe65c01a7c1569c
Author: James Clark <james.clark@arm.com>
Date:   Thu Jul 28 10:39:46 2022 +0100

    perf python: Fix build when PYTHON_CONFIG is user supplied
    
    commit bc9e7fe313d5e56d4d5f34bcc04d1165f94f86fb upstream.
    
    The previous change to Python autodetection had a small mistake where
    the auto value was used to determine the Python binary, rather than the
    user supplied value. The Python binary is only used for one part of the
    build process, rather than the final linking, so it was producing
    correct builds in most scenarios, especially when the auto detected
    value matched what the user wanted, or the system only had a valid set
    of Pythons.
    
    Change it so that the Python binary path is derived from either the
    PYTHON_CONFIG value or PYTHON value, depending on what is specified by
    the user. This was the original intention.
    
    This error was spotted in a build failure an odd cross compilation
    environment after commit 4c41cb46a732fe82 ("perf python: Prefer
    python3") was merged.
    
    Fixes: 630af16eee495f58 ("perf tools: Use Python devtools for version autodetection rather than runtime")
    Signed-off-by: James Clark <james.clark@arm.com>
    Acked-by: Ian Rogers <irogers@google.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: James Clark <james.clark@arm.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: https://lore.kernel.org/r/20220728093946.1337642-1-james.clark@arm.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3ddbd0907f6d202e2cfd7d5b5f6ceed9361282fc
Author: Yu Kuai <yukuai3@huawei.com>
Date:   Tue Jul 26 20:22:24 2022 +0800

    blk-mq: fix io hung due to missing commit_rqs
    
    commit 65fac0d54f374625b43a9d6ad1f2c212bd41f518 upstream.
    
    Currently, in virtio_scsi, if 'bd->last' is not set to true while
    dispatching request, such io will stay in driver's queue, and driver
    will wait for block layer to dispatch more rqs. However, if block
    layer failed to dispatch more rq, it should trigger commit_rqs to
    inform driver.
    
    There is a problem in blk_mq_try_issue_list_directly() that commit_rqs
    won't be called:
    
    // assume that queue_depth is set to 1, list contains two rq
    blk_mq_try_issue_list_directly
     blk_mq_request_issue_directly
     // dispatch first rq
     // last is false
      __blk_mq_try_issue_directly
       blk_mq_get_dispatch_budget
       // succeed to get first budget
       __blk_mq_issue_directly
        scsi_queue_rq
         cmd->flags |= SCMD_LAST
          virtscsi_queuecommand
           kick = (sc->flags & SCMD_LAST) != 0
           // kick is false, first rq won't issue to disk
     queued++
    
     blk_mq_request_issue_directly
     // dispatch second rq
      __blk_mq_try_issue_directly
       blk_mq_get_dispatch_budget
       // failed to get second budget
     ret == BLK_STS_RESOURCE
      blk_mq_request_bypass_insert
     // errors is still 0
    
     if (!list_empty(list) || errors && ...)
      // won't pass, commit_rqs won't be called
    
    In this situation, first rq relied on second rq to dispatch, while
    second rq relied on first rq to complete, thus they will both hung.
    
    Fix the problem by also treat 'BLK_STS_*RESOURCE' as 'errors' since
    it means that request is not queued successfully.
    
    Same problem exists in blk_mq_dispatch_rq_list(), 'BLK_STS_*RESOURCE'
    can't be treated as 'errors' here, fix the problem by calling
    commit_rqs if queue_rq return 'BLK_STS_*RESOURCE'.
    
    Fixes: d666ba98f849 ("blk-mq: add mq_ops->commit_rqs()")
    Signed-off-by: Yu Kuai <yukuai3@huawei.com>
    Reviewed-by: Ming Lei <ming.lei@redhat.com>
    Link: https://lore.kernel.org/r/20220726122224.1790882-1-yukuai1@huaweicloud.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7ca73d0a16e382ae365d5fab7e2e47f753d18f35
Author: Salvatore Bonaccorso <carnil@debian.org>
Date:   Mon Aug 1 11:15:30 2022 +0200

    Documentation/ABI: Mention retbleed vulnerability info file for sysfs
    
    commit 00da0cb385d05a89226e150a102eb49d8abb0359 upstream.
    
    While reporting for the AMD retbleed vulnerability was added in
    
      6b80b59b3555 ("x86/bugs: Report AMD retbleed vulnerability")
    
    the new sysfs file was not mentioned so far in the ABI documentation for
    sysfs-devices-system-cpu. Fix that.
    
    Fixes: 6b80b59b3555 ("x86/bugs: Report AMD retbleed vulnerability")
    Signed-off-by: Salvatore Bonaccorso <carnil@debian.org>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Link: https://lore.kernel.org/r/20220801091529.325327-1-carnil@debian.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 189623261994fe6e7416b3648f2c0d5f71e9e3b4
Author: Zenghui Yu <yuzenghui@huawei.com>
Date:   Tue Aug 9 12:38:48 2022 +0800

    arm64: Fix match_list for erratum 1286807 on Arm Cortex-A76
    
    commit 5e1e087457c94ad7fafbe1cf6f774c6999ee29d4 upstream.
    
    Since commit 51f559d66527 ("arm64: Enable repeat tlbi workaround on KRYO4XX
    gold CPUs"), we failed to detect erratum 1286807 on Cortex-A76 because its
    entry in arm64_repeat_tlbi_list[] was accidently corrupted by this commit.
    
    Fix this issue by creating a separate entry for Kryo4xx Gold.
    
    Fixes: 51f559d66527 ("arm64: Enable repeat tlbi workaround on KRYO4XX gold CPUs")
    Cc: Shreyas K K <quic_shrekk@quicinc.com>
    Signed-off-by: Zenghui Yu <yuzenghui@huawei.com>
    Acked-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20220809043848.969-1-yuzenghui@huawei.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a5a58fab556bfe618b4c9719eb85712d78c6cb10
Author: Guoqing Jiang <guoqing.jiang@linux.dev>
Date:   Wed Aug 17 20:05:14 2022 +0800

    md: call __md_stop_writes in md_stop
    
    commit 0dd84b319352bb8ba64752d4e45396d8b13e6018 upstream.
    
    From the link [1], we can see raid1d was running even after the path
    raid_dtr -> md_stop -> __md_stop.
    
    Let's stop write first in destructor to align with normal md-raid to
    fix the KASAN issue.
    
    [1]. https://lore.kernel.org/linux-raid/CAPhsuW5gc4AakdGNdF8ubpezAuDLFOYUO_sfMZcec6hQFm8nhg@mail.gmail.com/T/#m7f12bf90481c02c6d2da68c64aeed4779b7df74a
    
    Fixes: 48df498daf62 ("md: move bitmap_destroy to the beginning of __md_stop")
    Reported-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Guoqing Jiang <guoqing.jiang@linux.dev>
    Signed-off-by: Song Liu <song@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f68f025c7e692f817d5f459253e6604bb1417977
Author: Guoqing Jiang <guoqing.jiang@linux.dev>
Date:   Wed Aug 17 20:05:13 2022 +0800

    Revert "md-raid: destroy the bitmap after destroying the thread"
    
    commit 1d258758cf06a0734482989911d184dd5837ed4e upstream.
    
    This reverts commit e151db8ecfb019b7da31d076130a794574c89f6f. Because it
    obviously breaks clustered raid as noticed by Neil though it fixed KASAN
    issue for dm-raid, let's revert it and fix KASAN issue in next commit.
    
    [1]. https://lore.kernel.org/linux-raid/a6657e08-b6a7-358b-2d2a-0ac37d49d23a@linux.dev/T/#m95ac225cab7409f66c295772483d091084a6d470
    
    Fixes: e151db8ecfb0 ("md-raid: destroy the bitmap after destroying the thread")
    Signed-off-by: Guoqing Jiang <guoqing.jiang@linux.dev>
    Signed-off-by: Song Liu <song@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 62af37c5cd7f5fd071086cab645844bf5bcdc0ef
Author: David Hildenbrand <david@redhat.com>
Date:   Thu Aug 11 12:34:34 2022 +0200

    mm/hugetlb: fix hugetlb not supporting softdirty tracking
    
    commit f96f7a40874d7c746680c0b9f57cef2262ae551f upstream.
    
    Patch series "mm/hugetlb: fix write-fault handling for shared mappings", v2.
    
    I observed that hugetlb does not support/expect write-faults in shared
    mappings that would have to map the R/O-mapped page writable -- and I
    found two case where we could currently get such faults and would
    erroneously map an anon page into a shared mapping.
    
    Reproducers part of the patches.
    
    I propose to backport both fixes to stable trees.  The first fix needs a
    small adjustment.
    
    
    This patch (of 2):
    
    Staring at hugetlb_wp(), one might wonder where all the logic for shared
    mappings is when stumbling over a write-protected page in a shared
    mapping.  In fact, there is none, and so far we thought we could get away
    with that because e.g., mprotect() should always do the right thing and
    map all pages directly writable.
    
    Looks like we were wrong:
    
    --------------------------------------------------------------------------
     #include <stdio.h>
     #include <stdlib.h>
     #include <string.h>
     #include <fcntl.h>
     #include <unistd.h>
     #include <errno.h>
     #include <sys/mman.h>
    
     #define HUGETLB_SIZE (2 * 1024 * 1024u)
    
     static void clear_softdirty(void)
     {
             int fd = open("/proc/self/clear_refs", O_WRONLY);
             const char *ctrl = "4";
             int ret;
    
             if (fd < 0) {
                     fprintf(stderr, "open(clear_refs) failed\n");
                     exit(1);
             }
             ret = write(fd, ctrl, strlen(ctrl));
             if (ret != strlen(ctrl)) {
                     fprintf(stderr, "write(clear_refs) failed\n");
                     exit(1);
             }
             close(fd);
     }
    
     int main(int argc, char **argv)
     {
             char *map;
             int fd;
    
             fd = open("/dev/hugepages/tmp", O_RDWR | O_CREAT);
             if (!fd) {
                     fprintf(stderr, "open() failed\n");
                     return -errno;
             }
             if (ftruncate(fd, HUGETLB_SIZE)) {
                     fprintf(stderr, "ftruncate() failed\n");
                     return -errno;
             }
    
             map = mmap(NULL, HUGETLB_SIZE, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
             if (map == MAP_FAILED) {
                     fprintf(stderr, "mmap() failed\n");
                     return -errno;
             }
    
             *map = 0;
    
             if (mprotect(map, HUGETLB_SIZE, PROT_READ)) {
                     fprintf(stderr, "mmprotect() failed\n");
                     return -errno;
             }
    
             clear_softdirty();
    
             if (mprotect(map, HUGETLB_SIZE, PROT_READ|PROT_WRITE)) {
                     fprintf(stderr, "mmprotect() failed\n");
                     return -errno;
             }
    
             *map = 0;
    
             return 0;
     }
    --------------------------------------------------------------------------
    
    Above test fails with SIGBUS when there is only a single free hugetlb page.
     # echo 1 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
     # ./test
     Bus error (core dumped)
    
    And worse, with sufficient free hugetlb pages it will map an anonymous page
    into a shared mapping, for example, messing up accounting during unmap
    and breaking MAP_SHARED semantics:
     # echo 2 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
     # ./test
     # cat /proc/meminfo | grep HugePages_
     HugePages_Total:       2
     HugePages_Free:        1
     HugePages_Rsvd:    18446744073709551615
     HugePages_Surp:        0
    
    Reason in this particular case is that vma_wants_writenotify() will
    return "true", removing VM_SHARED in vma_set_page_prot() to map pages
    write-protected. Let's teach vma_wants_writenotify() that hugetlb does not
    support softdirty tracking.
    
    Link: https://lkml.kernel.org/r/20220811103435.188481-1-david@redhat.com
    Link: https://lkml.kernel.org/r/20220811103435.188481-2-david@redhat.com
    Fixes: 64e455079e1b ("mm: softdirty: enable write notifications on VMAs after VM_SOFTDIRTY cleared")
    Signed-off-by: David Hildenbrand <david@redhat.com>
    Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com>
    Cc: Peter Feiner <pfeiner@google.com>
    Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Cyrill Gorcunov <gorcunov@openvz.org>
    Cc: Pavel Emelyanov <xemul@parallels.com>
    Cc: Jamie Liu <jamieliu@google.com>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Cc: Bjorn Helgaas <bhelgaas@google.com>
    Cc: Muchun Song <songmuchun@bytedance.com>
    Cc: Peter Xu <peterx@redhat.com>
    Cc: <stable@vger.kernel.org>    [3.18+]
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: David Hildenbrand <david@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6de50db104af0dc921f593fd95c55db86a52ceef
Author: Juergen Gross <jgross@suse.com>
Date:   Thu Aug 25 16:19:18 2022 +0200

    xen/privcmd: fix error exit of privcmd_ioctl_dm_op()
    
    commit c5deb27895e017a0267de0a20d140ad5fcc55a54 upstream.
    
    The error exit of privcmd_ioctl_dm_op() is calling unlock_pages()
    potentially with pages being NULL, leading to a NULL dereference.
    
    Additionally lock_pages() doesn't check for pin_user_pages_fast()
    having been completely successful, resulting in potentially not
    locking all pages into memory. This could result in sporadic failures
    when using the related memory in user mode.
    
    Fix all of that by calling unlock_pages() always with the real number
    of pinned pages, which will be zero in case pages being NULL, and by
    checking the number of pages pinned by pin_user_pages_fast() matching
    the expected number of pages.
    
    Cc: <stable@vger.kernel.org>
    Fixes: ab520be8cd5d ("xen/privcmd: Add IOCTL_PRIVCMD_DM_OP")
    Reported-by: Rustam Subkhankulov <subkhankulov@ispras.ru>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
    Link: https://lore.kernel.org/r/20220825141918.3581-1-jgross@suse.com
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8d5f8a4f25b1cb88e5a75e83e223e1197f9d734d
Author: Riwen Lu <luriwen@kylinos.cn>
Date:   Tue Aug 23 15:43:42 2022 +0800

    ACPI: processor: Remove freq Qos request for all CPUs
    
    commit 36527b9d882362567ceb4eea8666813280f30e6f upstream.
    
    The freq Qos request would be removed repeatedly if the cpufreq policy
    relates to more than one CPU. Then, it would cause the "called for unknown
    object" warning.
    
    Remove the freq Qos request for each CPU relates to the cpufreq policy,
    instead of removing repeatedly for the last CPU of it.
    
    Fixes: a1bb46c36ce3 ("ACPI: processor: Add QoS requests for all CPUs")
    Reported-by: Jeremy Linton <Jeremy.Linton@arm.com>
    Tested-by: Jeremy Linton <jeremy.linton@arm.com>
    Signed-off-by: Riwen Lu <luriwen@kylinos.cn>
    Cc: 5.4+ <stable@vger.kernel.org> # 5.4+
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 297ae7e87a87a001dd3dfeac1cb26a42fd929708
Author: Brian Foster <bfoster@redhat.com>
Date:   Tue Aug 16 11:54:07 2022 -0400

    s390: fix double free of GS and RI CBs on fork() failure
    
    commit 13cccafe0edcd03bf1c841de8ab8a1c8e34f77d9 upstream.
    
    The pointers for guarded storage and runtime instrumentation control
    blocks are stored in the thread_struct of the associated task. These
    pointers are initially copied on fork() via arch_dup_task_struct()
    and then cleared via copy_thread() before fork() returns. If fork()
    happens to fail after the initial task dup and before copy_thread(),
    the newly allocated task and associated thread_struct memory are
    freed via free_task() -> arch_release_task_struct(). This results in
    a double free of the guarded storage and runtime info structs
    because the fields in the failed task still refer to memory
    associated with the source task.
    
    This problem can manifest as a BUG_ON() in set_freepointer() (with
    CONFIG_SLAB_FREELIST_HARDENED enabled) or KASAN splat (if enabled)
    when running trinity syscall fuzz tests on s390x. To avoid this
    problem, clear the associated pointer fields in
    arch_dup_task_struct() immediately after the new task is copied.
    Note that the RI flag is still cleared in copy_thread() because it
    resides in thread stack memory and that is where stack info is
    copied.
    
    Signed-off-by: Brian Foster <bfoster@redhat.com>
    Fixes: 8d9047f8b967c ("s390/runtime instrumentation: simplify task exit handling")
    Fixes: 7b83c6297d2fc ("s390/guarded storage: simplify task exit handling")
    Cc: <stable@vger.kernel.org> # 4.15
    Reviewed-by: Gerald Schaefer <gerald.schaefer@linux.ibm.com>
    Reviewed-by: Heiko Carstens <hca@linux.ibm.com>
    Link: https://lore.kernel.org/r/20220816155407.537372-1-bfoster@redhat.com
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c60ae878782db483918eca4b398a9c8f076aed06
Author: Quanyang Wang <quanyang.wang@windriver.com>
Date:   Fri Aug 19 16:11:45 2022 +0800

    asm-generic: sections: refactor memory_intersects
    
    commit 0c7d7cc2b4fe2e74ef8728f030f0f1674f9f6aee upstream.
    
    There are two problems with the current code of memory_intersects:
    
    First, it doesn't check whether the region (begin, end) falls inside the
    region (virt, vend), that is (virt < begin && vend > end).
    
    The second problem is if vend is equal to begin, it will return true but
    this is wrong since vend (virt + size) is not the last address of the
    memory region but (virt + size -1) is.  The wrong determination will
    trigger the misreporting when the function check_for_illegal_area calls
    memory_intersects to check if the dma region intersects with stext region.
    
    The misreporting is as below (stext is at 0x80100000):
     WARNING: CPU: 0 PID: 77 at kernel/dma/debug.c:1073 check_for_illegal_area+0x130/0x168
     DMA-API: chipidea-usb2 e0002000.usb: device driver maps memory from kernel text or rodata [addr=800f0000] [len=65536]
     Modules linked in:
     CPU: 1 PID: 77 Comm: usb-storage Not tainted 5.19.0-yocto-standard #5
     Hardware name: Xilinx Zynq Platform
      unwind_backtrace from show_stack+0x18/0x1c
      show_stack from dump_stack_lvl+0x58/0x70
      dump_stack_lvl from __warn+0xb0/0x198
      __warn from warn_slowpath_fmt+0x80/0xb4
      warn_slowpath_fmt from check_for_illegal_area+0x130/0x168
      check_for_illegal_area from debug_dma_map_sg+0x94/0x368
      debug_dma_map_sg from __dma_map_sg_attrs+0x114/0x128
      __dma_map_sg_attrs from dma_map_sg_attrs+0x18/0x24
      dma_map_sg_attrs from usb_hcd_map_urb_for_dma+0x250/0x3b4
      usb_hcd_map_urb_for_dma from usb_hcd_submit_urb+0x194/0x214
      usb_hcd_submit_urb from usb_sg_wait+0xa4/0x118
      usb_sg_wait from usb_stor_bulk_transfer_sglist+0xa0/0xec
      usb_stor_bulk_transfer_sglist from usb_stor_bulk_srb+0x38/0x70
      usb_stor_bulk_srb from usb_stor_Bulk_transport+0x150/0x360
      usb_stor_Bulk_transport from usb_stor_invoke_transport+0x38/0x440
      usb_stor_invoke_transport from usb_stor_control_thread+0x1e0/0x238
      usb_stor_control_thread from kthread+0xf8/0x104
      kthread from ret_from_fork+0x14/0x2c
    
    Refactor memory_intersects to fix the two problems above.
    
    Before the 1d7db834a027e ("dma-debug: use memory_intersects()
    directly"), memory_intersects is called only by printk_late_init:
    
    printk_late_init -> init_section_intersects ->memory_intersects.
    
    There were few places where memory_intersects was called.
    
    When commit 1d7db834a027e ("dma-debug: use memory_intersects()
    directly") was merged and CONFIG_DMA_API_DEBUG is enabled, the DMA
    subsystem uses it to check for an illegal area and the calltrace above
    is triggered.
    
    [akpm@linux-foundation.org: fix nearby comment typo]
    Link: https://lkml.kernel.org/r/20220819081145.948016-1-quanyang.wang@windriver.com
    Fixes: 979559362516 ("asm/sections: add helpers to check for section data")
    Signed-off-by: Quanyang Wang <quanyang.wang@windriver.com>
    Cc: Ard Biesheuvel <ardb@kernel.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Thierry Reding <treding@nvidia.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6858933131d0dadac071c4d33335a9ea4b8e76cf
Author: Siddh Raman Pant <code@siddh.me>
Date:   Tue Aug 23 21:38:10 2022 +0530

    loop: Check for overflow while configuring loop
    
    commit c490a0b5a4f36da3918181a8acdc6991d967c5f3 upstream.
    
    The userspace can configure a loop using an ioctl call, wherein
    a configuration of type loop_config is passed (see lo_ioctl()'s
    case on line 1550 of drivers/block/loop.c). This proceeds to call
    loop_configure() which in turn calls loop_set_status_from_info()
    (see line 1050 of loop.c), passing &config->info which is of type
    loop_info64*. This function then sets the appropriate values, like
    the offset.
    
    loop_device has lo_offset of type loff_t (see line 52 of loop.c),
    which is typdef-chained to long long, whereas loop_info64 has
    lo_offset of type __u64 (see line 56 of include/uapi/linux/loop.h).
    
    The function directly copies offset from info to the device as
    follows (See line 980 of loop.c):
            lo->lo_offset = info->lo_offset;
    
    This results in an overflow, which triggers a warning in iomap_iter()
    due to a call to iomap_iter_done() which has:
            WARN_ON_ONCE(iter->iomap.offset > iter->pos);
    
    Thus, check for negative value during loop_set_status_from_info().
    
    Bug report: https://syzkaller.appspot.com/bug?id=c620fe14aac810396d3c3edc9ad73848bf69a29e
    
    Reported-and-tested-by: syzbot+a8e049cd3abd342936b6@syzkaller.appspotmail.com
    Cc: stable@vger.kernel.org
    Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org>
    Signed-off-by: Siddh Raman Pant <code@siddh.me>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/20220823160810.181275-1-code@siddh.me
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 14cbbb9c9914663d0eeca6b59c1c9d4f5a547ee0
Author: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
Date:   Wed Aug 3 14:41:32 2022 -0700

    x86/bugs: Add "unknown" reporting for MMIO Stale Data
    
    commit 7df548840c496b0141fb2404b889c346380c2b22 upstream.
    
    Older Intel CPUs that are not in the affected processor list for MMIO
    Stale Data vulnerabilities currently report "Not affected" in sysfs,
    which may not be correct. Vulnerability status for these older CPUs is
    unknown.
    
    Add known-not-affected CPUs to the whitelist. Report "unknown"
    mitigation status for CPUs that are not in blacklist, whitelist and also
    don't enumerate MSR ARCH_CAPABILITIES bits that reflect hardware
    immunity to MMIO Stale Data vulnerabilities.
    
    Mitigation is not deployed when the status is unknown.
    
      [ bp: Massage, fixup. ]
    
    Fixes: 8d50cdf8b834 ("x86/speculation/mmio: Add sysfs reporting for Processor MMIO Stale Data")
    Suggested-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Suggested-by: Tony Luck <tony.luck@intel.com>
    Signed-off-by: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/a932c154772f2121794a5f2eded1a11013114711.1657846269.git.pawan.kumar.gupta@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e3e0d117294dfd80ae788b375912e7fc307c51dd
Author: Chen Zhongjin <chenzhongjin@huawei.com>
Date:   Fri Aug 19 16:43:34 2022 +0800

    x86/unwind/orc: Unwind ftrace trampolines with correct ORC entry
    
    commit fc2e426b1161761561624ebd43ce8c8d2fa058da upstream.
    
    When meeting ftrace trampolines in ORC unwinding, unwinder uses address
    of ftrace_{regs_}call address to find the ORC entry, which gets next frame at
    sp+176.
    
    If there is an IRQ hitting at sub $0xa8,%rsp, the next frame should be
    sp+8 instead of 176. It makes unwinder skip correct frame and throw
    warnings such as "wrong direction" or "can't access registers", etc,
    depending on the content of the incorrect frame address.
    
    By adding the base address ftrace_{regs_}caller with the offset
    *ip - ops->trampoline*, we can get the correct address to find the ORC entry.
    
    Also change "caller" to "tramp_addr" to make variable name conform to
    its content.
    
    [ mingo: Clarified the changelog a bit. ]
    
    Fixes: 6be7fa3c74d1 ("ftrace, orc, x86: Handle ftrace dynamically allocated trampolines")
    Signed-off-by: Chen Zhongjin <chenzhongjin@huawei.com>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Reviewed-by: Steven Rostedt (Google) <rostedt@goodmis.org>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20220819084334.244016-1-chenzhongjin@huawei.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 090f0ac167a04d5cbc22718655f0c733a3b99775
Author: Kan Liang <kan.liang@linux.intel.com>
Date:   Tue Aug 16 05:56:11 2022 -0700

    perf/x86/lbr: Enable the branch type for the Arch LBR by default
    
    commit 32ba156df1b1c8804a4e5be5339616945eafea22 upstream.
    
    On the platform with Arch LBR, the HW raw branch type encoding may leak
    to the perf tool when the SAVE_TYPE option is not set.
    
    In the intel_pmu_store_lbr(), the HW raw branch type is stored in
    lbr_entries[].type. If the SAVE_TYPE option is set, the
    lbr_entries[].type will be converted into the generic PERF_BR_* type
    in the intel_pmu_lbr_filter() and exposed to the user tools.
    But if the SAVE_TYPE option is NOT set by the user, the current perf
    kernel doesn't clear the field. The HW raw branch type leaks.
    
    There are two solutions to fix the issue for the Arch LBR.
    One is to clear the field if the SAVE_TYPE option is NOT set.
    The other solution is to unconditionally convert the branch type and
    expose the generic type to the user tools.
    
    The latter is implemented here, because
    - The branch type is valuable information. I don't see a case where
      you would not benefit from the branch type. (Stephane Eranian)
    - Not having the branch type DOES NOT save any space in the
      branch record (Stephane Eranian)
    - The Arch LBR HW can retrieve the common branch types from the
      LBR_INFO. It doesn't require the high overhead SW disassemble.
    
    Fixes: 47125db27e47 ("perf/x86/intel/lbr: Support Architectural LBR")
    Reported-by: Stephane Eranian <eranian@google.com>
    Signed-off-by: Kan Liang <kan.liang@linux.intel.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20220816125612.2042397-1-kan.liang@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d2bd18d50c1e835d154e018adb8f56d35d622528
Author: Goldwyn Rodrigues <rgoldwyn@suse.de>
Date:   Tue Aug 16 16:42:56 2022 -0500

    btrfs: check if root is readonly while setting security xattr
    
    commit b51111271b0352aa596c5ae8faf06939e91b3b68 upstream.
    
    For a filesystem which has btrfs read-only property set to true, all
    write operations including xattr should be denied. However, security
    xattr can still be changed even if btrfs ro property is true.
    
    This happens because xattr_permission() does not have any restrictions
    on security.*, system.*  and in some cases trusted.* from VFS and
    the decision is left to the underlying filesystem. See comments in
    xattr_permission() for more details.
    
    This patch checks if the root is read-only before performing the set
    xattr operation.
    
    Testcase:
    
      DEV=/dev/vdb
      MNT=/mnt
    
      mkfs.btrfs -f $DEV
      mount $DEV $MNT
      echo "file one" > $MNT/f1
    
      setfattr -n "security.one" -v 2 $MNT/f1
      btrfs property set /mnt ro true
    
      setfattr -n "security.one" -v 1 $MNT/f1
    
      umount $MNT
    
    CC: stable@vger.kernel.org # 4.9+
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    Reviewed-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dcac6293f57136370a6f2016346f7c134fdf005d
Author: Anand Jain <anand.jain@oracle.com>
Date:   Fri Aug 12 18:32:19 2022 +0800

    btrfs: add info when mount fails due to stale replace target
    
    commit f2c3bec215694fb8bc0ef5010f2a758d1906fc2d upstream.
    
    If the replace target device reappears after the suspended replace is
    cancelled, it blocks the mount operation as it can't find the matching
    replace-item in the metadata. As shown below,
    
       BTRFS error (device sda5): replace devid present without an active replace item
    
    To overcome this situation, the user can run the command
    
       btrfs device scan --forget <replace target device>
    
    and try the mount command again. And also, to avoid repeating the issue,
    superblock on the devid=0 must be wiped.
    
       wipefs -a device-path-to-devid=0.
    
    This patch adds some info when this situation occurs.
    
    Reported-by: Samuel Greiner <samuel@balkonien.org>
    Link: https://lore.kernel.org/linux-btrfs/b4f62b10-b295-26ea-71f9-9a5c9299d42c@balkonien.org/T/
    CC: stable@vger.kernel.org # 5.0+
    Signed-off-by: Anand Jain <anand.jain@oracle.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b2d352ed4d489f9fdfe5caf7d5e62bd2c310f0a8
Author: Anand Jain <anand.jain@oracle.com>
Date:   Fri Aug 12 18:32:18 2022 +0800

    btrfs: replace: drop assert for suspended replace
    
    commit 59a3991984dbc1fc47e5651a265c5200bd85464e upstream.
    
    If the filesystem mounts with the replace-operation in a suspended state
    and try to cancel the suspended replace-operation, we hit the assert. The
    assert came from the commit fe97e2e173af ("btrfs: dev-replace: replace's
    scrub must not be running in suspended state") that was actually not
    required. So just remove it.
    
     $ mount /dev/sda5 /btrfs
    
        BTRFS info (device sda5): cannot continue dev_replace, tgtdev is missing
        BTRFS info (device sda5): you may cancel the operation after 'mount -o degraded'
    
     $ mount -o degraded /dev/sda5 /btrfs <-- success.
    
     $ btrfs replace cancel /btrfs
    
        kernel: assertion failed: ret != -ENOTCONN, in fs/btrfs/dev-replace.c:1131
        kernel: ------------[ cut here ]------------
        kernel: kernel BUG at fs/btrfs/ctree.h:3750!
    
    After the patch:
    
     $ btrfs replace cancel /btrfs
    
        BTRFS info (device sda5): suspended dev_replace from /dev/sda5 (devid 1) to <missing disk> canceled
    
    Fixes: fe97e2e173af ("btrfs: dev-replace: replace's scrub must not be running in suspended state")
    CC: stable@vger.kernel.org # 5.0+
    Signed-off-by: Anand Jain <anand.jain@oracle.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2fc3c168d5b66ff8e673c9b6b7763dd783089134
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Aug 22 15:47:09 2022 +0100

    btrfs: fix silent failure when deleting root reference
    
    commit 47bf225a8d2cccb15f7e8d4a1ed9b757dd86afd7 upstream.
    
    At btrfs_del_root_ref(), if btrfs_search_slot() returns an error, we end
    up returning from the function with a value of 0 (success). This happens
    because the function returns the value stored in the variable 'err',
    which is 0, while the error value we got from btrfs_search_slot() is
    stored in the 'ret' variable.
    
    So fix it by setting 'err' with the error value.
    
    Fixes: 8289ed9f93bef2 ("btrfs: replace the BUG_ON in btrfs_del_root_ref with proper error handling")
    CC: stable@vger.kernel.org # 5.16+
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3a351b567e204036da00db319cf0838146ea64b4
Author: Shannon Nelson <snelson@pensando.io>
Date:   Wed Aug 24 09:50:50 2022 -0700

    ionic: fix up issues with handling EAGAIN on FW cmds
    
    [ Upstream commit 0fc4dd452d6c14828eed6369155c75c0ac15bab3 ]
    
    In looping on FW update tests we occasionally see the
    FW_ACTIVATE_STATUS command fail while it is in its EAGAIN loop
    waiting for the FW activate step to finsh inside the FW.  The
    firmware is complaining that the done bit is set when a new
    dev_cmd is going to be processed.
    
    Doing a clean on the cmd registers and doorbell before exiting
    the wait-for-done and cleaning the done bit before the sleep
    prevents this from occurring.
    
    Fixes: fbfb8031533c ("ionic: Add hardware init and device commands")
    Signed-off-by: Shannon Nelson <snelson@pensando.io>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 79e2ca7aa96e80961828ab6312264633b66183cc
Author: David Howells <dhowells@redhat.com>
Date:   Wed Aug 24 17:35:45 2022 +0100

    rxrpc: Fix locking in rxrpc's sendmsg
    
    [ Upstream commit b0f571ecd7943423c25947439045f0d352ca3dbf ]
    
    Fix three bugs in the rxrpc's sendmsg implementation:
    
     (1) rxrpc_new_client_call() should release the socket lock when returning
         an error from rxrpc_get_call_slot().
    
     (2) rxrpc_wait_for_tx_window_intr() will return without the call mutex
         held in the event that we're interrupted by a signal whilst waiting
         for tx space on the socket or relocking the call mutex afterwards.
    
         Fix this by: (a) moving the unlock/lock of the call mutex up to
         rxrpc_send_data() such that the lock is not held around all of
         rxrpc_wait_for_tx_window*() and (b) indicating to higher callers
         whether we're return with the lock dropped.  Note that this means
         recvmsg() will not block on this call whilst we're waiting.
    
     (3) After dropping and regaining the call mutex, rxrpc_send_data() needs
         to go and recheck the state of the tx_pending buffer and the
         tx_total_len check in case we raced with another sendmsg() on the same
         call.
    
    Thinking on this some more, it might make sense to have different locks for
    sendmsg() and recvmsg().  There's probably no need to make recvmsg() wait
    for sendmsg().  It does mean that recvmsg() can return MSG_EOR indicating
    that a call is dead before a sendmsg() to that call returns - but that can
    currently happen anyway.
    
    Without fix (2), something like the following can be induced:
    
            WARNING: bad unlock balance detected!
            5.16.0-rc6-syzkaller #0 Not tainted
            -------------------------------------
            syz-executor011/3597 is trying to release lock (&call->user_mutex) at:
            [<ffffffff885163a3>] rxrpc_do_sendmsg+0xc13/0x1350 net/rxrpc/sendmsg.c:748
            but there are no more locks to release!
    
            other info that might help us debug this:
            no locks held by syz-executor011/3597.
            ...
            Call Trace:
             <TASK>
             __dump_stack lib/dump_stack.c:88 [inline]
             dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106
             print_unlock_imbalance_bug include/trace/events/lock.h:58 [inline]
             __lock_release kernel/locking/lockdep.c:5306 [inline]
             lock_release.cold+0x49/0x4e kernel/locking/lockdep.c:5657
             __mutex_unlock_slowpath+0x99/0x5e0 kernel/locking/mutex.c:900
             rxrpc_do_sendmsg+0xc13/0x1350 net/rxrpc/sendmsg.c:748
             rxrpc_sendmsg+0x420/0x630 net/rxrpc/af_rxrpc.c:561
             sock_sendmsg_nosec net/socket.c:704 [inline]
             sock_sendmsg+0xcf/0x120 net/socket.c:724
             ____sys_sendmsg+0x6e8/0x810 net/socket.c:2409
             ___sys_sendmsg+0xf3/0x170 net/socket.c:2463
             __sys_sendmsg+0xe5/0x1b0 net/socket.c:2492
             do_syscall_x64 arch/x86/entry/common.c:50 [inline]
             do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80
             entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    [Thanks to Hawkins Jiawei and Khalid Masum for their attempts to fix this]
    
    Fixes: bc5e3a546d55 ("rxrpc: Use MSG_WAITALL to tell sendmsg() to temporarily ignore signals")
    Reported-by: syzbot+7f0483225d0c94cb3441@syzkaller.appspotmail.com
    Signed-off-by: David Howells <dhowells@redhat.com>
    Reviewed-by: Marc Dionne <marc.dionne@auristor.com>
    Tested-by: syzbot+7f0483225d0c94cb3441@syzkaller.appspotmail.com
    cc: Hawkins Jiawei <yin31149@gmail.com>
    cc: Khalid Masum <khalid.masum.92@gmail.com>
    cc: Dan Carpenter <dan.carpenter@oracle.com>
    cc: linux-afs@lists.infradead.org
    Link: https://lore.kernel.org/r/166135894583.600315.7170979436768124075.stgit@warthog.procyon.org.uk
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c3a6e863d51bd7cacef6c68f92ccfd235c797428
Author: Jacob Keller <jacob.e.keller@intel.com>
Date:   Mon Aug 1 17:24:19 2022 -0700

    ixgbe: stop resetting SYSTIME in ixgbe_ptp_start_cyclecounter
    
    [ Upstream commit 25d7a5f5a6bb15a2dae0a3f39ea5dda215024726 ]
    
    The ixgbe_ptp_start_cyclecounter is intended to be called whenever the
    cyclecounter parameters need to be changed.
    
    Since commit a9763f3cb54c ("ixgbe: Update PTP to support X550EM_x
    devices"), this function has cleared the SYSTIME registers and reset the
    TSAUXC DISABLE_SYSTIME bit.
    
    While these need to be cleared during ixgbe_ptp_reset, it is wrong to clear
    them during ixgbe_ptp_start_cyclecounter. This function may be called
    during both reset and link status change. When link changes, the SYSTIME
    counter is still operating normally, but the cyclecounter should be updated
    to account for the possibly changed parameters.
    
    Clearing SYSTIME when link changes causes the timecounter to jump because
    the cycle counter now reads zero.
    
    Extract the SYSTIME initialization out to a new function and call this
    during ixgbe_ptp_reset. This prevents the timecounter adjustment and avoids
    an unnecessary reset of the current time.
    
    This also restores the original SYSTIME clearing that occurred during
    ixgbe_ptp_reset before the commit above.
    
    Reported-by: Steve Payne <spayne@aurora.tech>
    Reported-by: Ilya Evenbach <ievenbach@aurora.tech>
    Fixes: a9763f3cb54c ("ixgbe: Update PTP to support X550EM_x devices")
    Signed-off-by: Jacob Keller <jacob.e.keller@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 23cf93bb32e571cf1fc678c83888df9950749d64
Author: Kuniyuki Iwashima <kuniyu@amazon.com>
Date:   Tue Aug 23 10:47:00 2022 -0700

    net: Fix a data-race around sysctl_somaxconn.
    
    [ Upstream commit 3c9ba81d72047f2e81bb535d42856517b613aba7 ]
    
    While reading sysctl_somaxconn, it can be changed concurrently.
    Thus, we need to add READ_ONCE() to its reader.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9fcc4f4066208b3383824ed8f0eba6bf47c23e87
Author: Kuniyuki Iwashima <kuniyu@amazon.com>
Date:   Tue Aug 23 10:46:57 2022 -0700

    net: Fix data-races around sysctl_devconf_inherit_init_net.
    
    [ Upstream commit a5612ca10d1aa05624ebe72633e0c8c792970833 ]
    
    While reading sysctl_devconf_inherit_init_net, it can be changed
    concurrently.  Thus, we need to add READ_ONCE() to its readers.
    
    Fixes: 856c395cfa63 ("net: introduce a knob to control whether to inherit devconf config")
    Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 371a3bcf3144584c511f80e87d4c28ac2c75e9a7
Author: Kuniyuki Iwashima <kuniyu@amazon.com>
Date:   Tue Aug 23 10:46:56 2022 -0700

    net: Fix data-races around sysctl_fb_tunnels_only_for_init_net.
    
    [ Upstream commit af67508ea6cbf0e4ea27f8120056fa2efce127dd ]
    
    While reading sysctl_fb_tunnels_only_for_init_net, it can be changed
    concurrently.  Thus, we need to add READ_ONCE() to its readers.
    
    Fixes: 79134e6ce2c9 ("net: do not create fallback tunnels for non-default namespaces")
    Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c3bda708e9c40d0a88f3c86c3d9103db44b38c0b
Author: Kuniyuki Iwashima <kuniyu@amazon.com>
Date:   Tue Aug 23 10:46:55 2022 -0700

    net: Fix a data-race around netdev_budget_usecs.
    
    [ Upstream commit fa45d484c52c73f79db2c23b0cdfc6c6455093ad ]
    
    While reading netdev_budget_usecs, it can be changed concurrently.
    Thus, we need to add READ_ONCE() to its reader.
    
    Fixes: 7acf8a1e8a28 ("Replace 2 jiffies with sysctl netdev_budget_usecs to enable softirq tuning")
    Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 12a34d7f0463ebb6db01977091b5cda46d9060bc
Author: Kuniyuki Iwashima <kuniyu@amazon.com>
Date:   Tue Aug 23 10:46:53 2022 -0700

    net: Fix a data-race around netdev_budget.
    
    [ Upstream commit 2e0c42374ee32e72948559d2ae2f7ba3dc6b977c ]
    
    While reading netdev_budget, it can be changed concurrently.
    Thus, we need to add READ_ONCE() to its reader.
    
    Fixes: 51b0bdedb8e7 ("[NET]: Separate two usages of netdev_max_backlog.")
    Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 410c88314ce351c9c77ec68da1d37bd91ddd76a2
Author: Kuniyuki Iwashima <kuniyu@amazon.com>
Date:   Tue Aug 23 10:46:52 2022 -0700

    net: Fix a data-race around sysctl_net_busy_read.
    
    [ Upstream commit e59ef36f0795696ab229569c153936bfd068d21c ]
    
    While reading sysctl_net_busy_read, it can be changed concurrently.
    Thus, we need to add READ_ONCE() to its reader.
    
    Fixes: 2d48d67fa8cd ("net: poll/select low latency socket support")
    Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2c7dae6c45112ee7ead62155fed375cb2e7d7cf8
Author: Kuniyuki Iwashima <kuniyu@amazon.com>
Date:   Tue Aug 23 10:46:51 2022 -0700

    net: Fix a data-race around sysctl_net_busy_poll.
    
    [ Upstream commit c42b7cddea47503411bfb5f2f93a4154aaffa2d9 ]
    
    While reading sysctl_net_busy_poll, it can be changed concurrently.
    Thus, we need to add READ_ONCE() to its reader.
    
    Fixes: 060212928670 ("net: add low latency socket poll")
    Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8db070463e3ebedf81dfcc1d8bc51f46e751872f
Author: Kuniyuki Iwashima <kuniyu@amazon.com>
Date:   Tue Aug 23 10:46:50 2022 -0700

    net: Fix a data-race around sysctl_tstamp_allow_data.
    
    [ Upstream commit d2154b0afa73c0159b2856f875c6b4fe7cf6a95e ]
    
    While reading sysctl_tstamp_allow_data, it can be changed
    concurrently.  Thus, we need to add READ_ONCE() to its reader.
    
    Fixes: b245be1f4db1 ("net-timestamp: no-payload only sysctl")
    Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ed48223f87c5c5928b6bf56c02c75dda0a2ab0dd
Author: Kuniyuki Iwashima <kuniyu@amazon.com>
Date:   Tue Aug 23 10:46:49 2022 -0700

    net: Fix data-races around sysctl_optmem_max.
    
    [ Upstream commit 7de6d09f51917c829af2b835aba8bb5040f8e86a ]
    
    While reading sysctl_optmem_max, it can be changed concurrently.
    Thus, we need to add READ_ONCE() to its readers.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 27e8ade792655177cc74417a6ded25735f3cacf0
Author: Martin KaFai Lau <kafai@fb.com>
Date:   Thu Nov 12 13:13:01 2020 -0800

    bpf: Folding omem_charge() into sk_storage_charge()
    
    [ Upstream commit 9e838b02b0bb795793f12049307a354e28b5749c ]
    
    sk_storage_charge() is the only user of omem_charge().
    This patch simplifies it by folding omem_charge() into
    sk_storage_charge().
    
    Signed-off-by: Martin KaFai Lau <kafai@fb.com>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Acked-by: Song Liu <songliubraving@fb.com>
    Acked-by: KP Singh <kpsingh@google.com>
    Link: https://lore.kernel.org/bpf/20201112211301.2586255-1-kafai@fb.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4d4e39245dd58bb36f57f9b48a142b20d291c605
Author: Kuniyuki Iwashima <kuniyu@amazon.com>
Date:   Tue Aug 23 10:46:48 2022 -0700

    ratelimit: Fix data-races in ___ratelimit().
    
    [ Upstream commit 6bae8ceb90ba76cdba39496db936164fa672b9be ]
    
    While reading rs->interval and rs->burst, they can be changed
    concurrently via sysctl (e.g. net_ratelimit_state).  Thus, we
    need to add READ_ONCE() to their readers.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e73009ebc1233e447ae6503da51c402e4ed7ca4b
Author: Kuniyuki Iwashima <kuniyu@amazon.com>
Date:   Tue Aug 23 10:46:47 2022 -0700

    net: Fix data-races around netdev_tstamp_prequeue.
    
    [ Upstream commit 61adf447e38664447526698872e21c04623afb8e ]
    
    While reading netdev_tstamp_prequeue, it can be changed concurrently.
    Thus, we need to add READ_ONCE() to its readers.
    
    Fixes: 3b098e2d7c69 ("net: Consistent skb timestamping")
    Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3850060352f41366bdc25b091baeeb5c144b4a9e
Author: Kuniyuki Iwashima <kuniyu@amazon.com>
Date:   Tue Aug 23 10:46:46 2022 -0700

    net: Fix data-races around netdev_max_backlog.
    
    [ Upstream commit 5dcd08cd19912892586c6082d56718333e2d19db ]
    
    While reading netdev_max_backlog, it can be changed concurrently.
    Thus, we need to add READ_ONCE() to its readers.
    
    While at it, we remove the unnecessary spaces in the doc.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b498a1b0171e7152ce5a837c7f74b4c1a296586f
Author: Kuniyuki Iwashima <kuniyu@amazon.com>
Date:   Tue Aug 23 10:46:45 2022 -0700

    net: Fix data-races around weight_p and dev_weight_[rt]x_bias.
    
    [ Upstream commit bf955b5ab8f6f7b0632cdef8e36b14e4f6e77829 ]
    
    While reading weight_p, it can be changed concurrently.  Thus, we need
    to add READ_ONCE() to its reader.
    
    Also, dev_[rt]x_weight can be read/written at the same time.  So, we
    need to use READ_ONCE() and WRITE_ONCE() for its access.  Moreover, to
    use the same weight_p while changing dev_[rt]x_weight, we add a mutex
    in proc_do_dev_weight().
    
    Fixes: 3d48b53fb2ae ("net: dev_weight: TX/RX orthogonality")
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fb442c72db385695684ef5a2df930326a2c4f1b3
Author: Kuniyuki Iwashima <kuniyu@amazon.com>
Date:   Tue Aug 23 10:46:44 2022 -0700

    net: Fix data-races around sysctl_[rw]mem_(max|default).
    
    [ Upstream commit 1227c1771dd2ad44318aa3ab9e3a293b3f34ff2a ]
    
    While reading sysctl_[rw]mem_(max|default), they can be changed
    concurrently.  Thus, we need to add READ_ONCE() to its readers.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 613fd026209e6f6ee69afaf45d1bec2a11b09fea
Author: Kuniyuki Iwashima <kuniyu@amazon.com>
Date:   Fri Jul 22 11:22:00 2022 -0700

    net: Fix data-races around sysctl_[rw]mem(_offset)?.
    
    [ Upstream commit 02739545951ad4c1215160db7fbf9b7a918d3c0b ]
    
    While reading these sysctl variables, they can be changed concurrently.
    Thus, we need to add READ_ONCE() to their readers.
    
      - .sysctl_rmem
      - .sysctl_rwmem
      - .sysctl_rmem_offset
      - .sysctl_wmem_offset
      - sysctl_tcp_rmem[1, 2]
      - sysctl_tcp_wmem[1, 2]
      - sysctl_decnet_rmem[1]
      - sysctl_decnet_wmem[1]
      - sysctl_tipc_rmem[1]
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e73a29554f0b7adfb9411a0587ac56703ed23e2c
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Jul 21 03:15:28 2021 -0700

    tcp: tweak len/truesize ratio for coalesce candidates
    
    [ Upstream commit 240bfd134c592791fdceba1ce7fc3f973c33df2d ]
    
    tcp_grow_window() is using skb->len/skb->truesize to increase tp->rcv_ssthresh
    which has a direct impact on advertized window sizes.
    
    We added TCP coalescing in linux-3.4 & linux-3.5:
    
    Instead of storing skbs with one or two MSS in receive queue (or OFO queue),
    we try to append segments together to reduce memory overhead.
    
    High performance network drivers tend to cook skb with 3 parts :
    
    1) sk_buff structure (256 bytes)
    2) skb->head contains room to copy headers as needed, and skb_shared_info
    3) page fragment(s) containing the ~1514 bytes frame (or more depending on MTU)
    
    Once coalesced into a previous skb, 1) and 2) are freed.
    
    We can therefore tweak the way we compute len/truesize ratio knowing
    that skb->truesize is inflated by 1) and 2) soon to be freed.
    
    This is done only for in-order skb, or skb coalesced into OFO queue.
    
    The result is that low rate flows no longer pay the memory price of having
    low GRO aggregation factor. Same result for drivers not using GRO.
    
    This is critical to allow a big enough receiver window,
    typically tcp_rmem[2] / 2.
    
    We have been using this at Google for about 5 years, it is due time
    to make it upstream.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Soheil Hassas Yeganeh <soheil@google.com>
    Cc: Neal Cardwell <ncardwell@google.com>
    Cc: Yuchung Cheng <ycheng@google.com>
    Acked-by: Soheil Hassas Yeganeh <soheil@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c08a104a8bce832f6e7a4e8d9ac091777b9982ea
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Mon Aug 22 11:06:39 2022 +0200

    netfilter: nf_tables: disallow binding to already bound chain
    
    [ Upstream commit e02f0d3970404bfea385b6edb86f2d936db0ea2b ]
    
    Update nft_data_init() to report EINVAL if chain is already bound.
    
    Fixes: d0e2c7de92c7 ("netfilter: nf_tables: add NFT_CHAIN_BINDING")
    Reported-by: Gwangun Jung <exsociety@gmail.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6301a73bd83d94b9b3eab8581adb04e40fb5f079
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Mon Aug 8 19:30:07 2022 +0200

    netfilter: nf_tables: disallow jump to implicit chain from set element
    
    [ Upstream commit f323ef3a0d49e147365284bc1f02212e617b7f09 ]
    
    Extend struct nft_data_desc to add a flag field that specifies
    nft_data_init() is being called for set element data.
    
    Use it to disallow jump to implicit chain from set element, only jump
    to chain via immediate expression is allowed.
    
    Fixes: d0e2c7de92c7 ("netfilter: nf_tables: add NFT_CHAIN_BINDING")
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 98827687593b579f20feb60c7ce3ac8a6fbb5f2e
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Mon Aug 8 19:30:06 2022 +0200

    netfilter: nf_tables: upfront validation of data via nft_data_init()
    
    [ Upstream commit 341b6941608762d8235f3fd1e45e4d7114ed8c2c ]
    
    Instead of parsing the data and then validate that type and length are
    correct, pass a description of the expected data so it can be validated
    upfront before parsing it to bail out earlier.
    
    This patch adds a new .size field to specify the maximum size of the
    data area. The .len field is optional and it is used as an input/output
    field, it provides the specific length of the expected data in the input
    path. If then .len field is not specified, then obtained length from the
    netlink attribute is stored. This is required by cmp, bitwise, range and
    immediate, which provide no netlink attribute that describes the data
    length. The immediate expression uses the destination register type to
    infer the expected data type.
    
    Relying on opencoded validation of the expected data might lead to
    subtle bugs as described in 7e6bc1f6cabc ("netfilter: nf_tables:
    stricter validation of element data").
    
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8790eecdea019fe9a94e69271dc1633dd26c9505
Author: Jeremy Sowden <jeremy@azazel.net>
Date:   Mon Apr 4 13:04:15 2022 +0100

    netfilter: bitwise: improve error goto labels
    
    [ Upstream commit 00bd435208e5201eb935d273052930bd3b272b6f ]
    
    Replace two labels (`err1` and `err2`) with more informative ones.
    
    Signed-off-by: Jeremy Sowden <jeremy@azazel.net>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2267d38520c4aa74c9110c9ef2f6619aebc8446d
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Mon Feb 7 19:25:08 2022 +0100

    netfilter: nft_cmp: optimize comparison for 16-bytes
    
    [ Upstream commit 23f68d462984bfda47c7bf663dca347e8e3df549 ]
    
    Allow up to 16-byte comparisons with a new cmp fast version. Use two
    64-bit words and calculate the mask representing the bits to be
    compared. Make sure the comparison is 64-bit aligned and avoid
    out-of-bound memory access on registers.
    
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1d7d74a8240e5d4505f5f3f67417bb7334230c11
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Fri Dec 10 00:10:12 2021 +0100

    netfilter: nf_tables: consolidate rule verdict trace call
    
    [ Upstream commit 4765473fefd4403b5eeca371637065b561522c50 ]
    
    Add function to consolidate verdict tracing.
    
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cd962806c4493eec8a0da72d1df227dac28d3e15
Author: Colin Ian King <colin.i.king@gmail.com>
Date:   Thu Jan 28 17:59:23 2021 +0000

    netfilter: nftables: remove redundant assignment of variable err
    
    [ Upstream commit 626899a02e6afcd4b2ce5c0551092e3554cec4aa ]
    
    The variable err is being assigned a value that is never read,
    the same error number is being returned at the error return
    path via label err1.  Clean up the code by removing the assignment.
    
    Addresses-Coverity: ("Unused value")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 35519ce7bac9138b00126817c7ddb8f4ebdbc066
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Sun Aug 21 16:32:44 2022 +0200

    netfilter: nft_tunnel: restrict it to netdev family
    
    [ Upstream commit 01e4092d53bc4fe122a6e4b6d664adbd57528ca3 ]
    
    Only allow to use this expression from NFPROTO_NETDEV family.
    
    Fixes: af308b94a2a4 ("netfilter: nf_tables: add tunnel support")
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9a67c2c89c32bca7da6082c6b174457f8521121a
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Sun Aug 21 16:25:07 2022 +0200

    netfilter: nft_osf: restrict osf to ipv4, ipv6 and inet families
    
    [ Upstream commit 5f3b7aae14a706d0d7da9f9e39def52ff5fc3d39 ]
    
    As it was originally intended, restrict extension to supported families.
    
    Fixes: b96af92d6eaf ("netfilter: nf_tables: implement Passive OS fingerprint module in nft_osf")
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c907dfe4eaca9665694a0340de1458a093abe354
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Sun Aug 21 12:41:33 2022 +0200

    netfilter: nf_tables: do not leave chain stats enabled on error
    
    [ Upstream commit 43eb8949cfdffa764b92bc6c54b87cbe5b0003fe ]
    
    Error might occur later in the nf_tables_addchain() codepath, enable
    static key only after transaction has been created.
    
    Fixes: 9f08ea848117 ("netfilter: nf_tables: keep chain counters away from hot path")
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ea358cfc8e25255b15305f14297e09e1defea4ca
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Sun Aug 21 11:55:19 2022 +0200

    netfilter: nft_payload: do not truncate csum_offset and csum_type
    
    [ Upstream commit 7044ab281febae9e2fa9b0b247693d6026166293 ]
    
    Instead report ERANGE if csum_offset is too long, and EOPNOTSUPP if type
    is not support.
    
    Fixes: 7ec3f7b47b8d ("netfilter: nft_payload: add packet mangling support")
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 93a46d6c72b18be6c91b1d11f20310fec5daed37
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Sun Aug 21 11:47:04 2022 +0200

    netfilter: nft_payload: report ERANGE for too long offset and length
    
    [ Upstream commit 94254f990c07e9ddf1634e0b727fab821c3b5bf9 ]
    
    Instead of offset and length are truncation to u8, report ERANGE.
    
    Fixes: 96518518cc41 ("netfilter: add nftables")
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e0f8cf01927d334cd1095f2d8a20b75f6bcd570c
Author: Vikas Gupta <vikas.gupta@broadcom.com>
Date:   Mon Aug 22 11:06:53 2022 -0400

    bnxt_en: fix NQ resource accounting during vf creation on 57500 chips
    
    [ Upstream commit 09a89cc59ad67794a11e1d3dd13c5b3172adcc51 ]
    
    There are 2 issues:
    
    1. We should decrement hw_resc->max_nqs instead of hw_resc->max_irqs
       with the number of NQs assigned to the VFs.  The IRQs are fixed
       on each function and cannot be re-assigned.  Only the NQs are being
       assigned to the VFs.
    
    2. vf_msix is the total number of NQs to be assigned to the VFs.  So
       we should decrement vf_msix from hw_resc->max_nqs.
    
    Fixes: b16b68918674 ("bnxt_en: Add SR-IOV support for 57500 chips.")
    Signed-off-by: Vikas Gupta <vikas.gupta@broadcom.com>
    Signed-off-by: Michael Chan <michael.chan@broadcom.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 624c30521233e110cf50ba01980a591e045036ae
Author: Florian Westphal <fw@strlen.de>
Date:   Sat Aug 20 17:38:37 2022 +0200

    netfilter: ebtables: reject blobs that don't provide all entry points
    
    [ Upstream commit 7997eff82828304b780dc0a39707e1946d6f1ebf ]
    
    Harshit Mogalapalli says:
     In ebt_do_table() function dereferencing 'private->hook_entry[hook]'
     can lead to NULL pointer dereference. [..] Kernel panic:
    
    general protection fault, probably for non-canonical address 0xdffffc0000000005: 0000 [#1] PREEMPT SMP KASAN
    KASAN: null-ptr-deref in range [0x0000000000000028-0x000000000000002f]
    [..]
    RIP: 0010:ebt_do_table+0x1dc/0x1ce0
    Code: 89 fa 48 c1 ea 03 80 3c 02 00 0f 85 5c 16 00 00 48 b8 00 00 00 00 00 fc ff df 49 8b 6c df 08 48 8d 7d 2c 48 89 fa 48 c1 ea 03 <0f> b6 14 02 48 89 f8 83 e0 07 83 c0 03 38 d0 7c 08 84 d2 0f 85 88
    [..]
    Call Trace:
     nf_hook_slow+0xb1/0x170
     __br_forward+0x289/0x730
     maybe_deliver+0x24b/0x380
     br_flood+0xc6/0x390
     br_dev_xmit+0xa2e/0x12c0
    
    For some reason ebtables rejects blobs that provide entry points that are
    not supported by the table, but what it should instead reject is the
    opposite: blobs that DO NOT provide an entry point supported by the table.
    
    t->valid_hooks is the bitmask of hooks (input, forward ...) that will see
    packets.  Providing an entry point that is not support is harmless
    (never called/used), but the inverse isn't: it results in a crash
    because the ebtables traverser doesn't expect a NULL blob for a location
    its receiving packets for.
    
    Instead of fixing all the individual checks, do what iptables is doing and
    reject all blobs that differ from the expected hooks.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Reported-by: Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
    Reported-by: syzkaller <syzkaller@googlegroups.com>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f82a6b85e0ae5f57f6b8dd5cc3a00650de0b6bcf
Author: Maciej Żenczykowski <maze@google.com>
Date:   Sun Aug 21 06:08:08 2022 -0700

    net: ipvtap - add __init/__exit annotations to module init/exit funcs
    
    [ Upstream commit 4b2e3a17e9f279325712b79fb01d1493f9e3e005 ]
    
    Looks to have been left out in an oversight.
    
    Cc: Mahesh Bandewar <maheshb@google.com>
    Cc: Sainath Grandhi <sainath.grandhi@intel.com>
    Fixes: 235a9d89da97 ('ipvtap: IP-VLAN based tap driver')
    Signed-off-by: Maciej Żenczykowski <maze@google.com>
    Link: https://lore.kernel.org/r/20220821130808.12143-1-zenczykowski@gmail.com
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7e7e88e8b5b4aba2076663b925c6aa00c435647b
Author: Jonathan Toppins <jtoppins@redhat.com>
Date:   Fri Aug 19 11:15:13 2022 -0400

    bonding: 802.3ad: fix no transmission of LACPDUs
    
    [ Upstream commit d745b5062ad2b5da90a5e728d7ca884fc07315fd ]
    
    This is caused by the global variable ad_ticks_per_sec being zero as
    demonstrated by the reproducer script discussed below. This causes
    all timer values in __ad_timer_to_ticks to be zero, resulting
    in the periodic timer to never fire.
    
    To reproduce:
    Run the script in
    `tools/testing/selftests/drivers/net/bonding/bond-break-lacpdu-tx.sh` which
    puts bonding into a state where it never transmits LACPDUs.
    
    line 44: ip link add fbond type bond mode 4 miimon 200 \
                xmit_hash_policy 1 ad_actor_sys_prio 65535 lacp_rate fast
    setting bond param: ad_actor_sys_prio
    given:
        params.ad_actor_system = 0
    call stack:
        bond_option_ad_actor_sys_prio()
        -> bond_3ad_update_ad_actor_settings()
           -> set ad.system.sys_priority = bond->params.ad_actor_sys_prio
           -> ad.system.sys_mac_addr = bond->dev->dev_addr; because
                params.ad_actor_system == 0
    results:
         ad.system.sys_mac_addr = bond->dev->dev_addr
    
    line 48: ip link set fbond address 52:54:00:3B:7C:A6
    setting bond MAC addr
    call stack:
        bond->dev->dev_addr = new_mac
    
    line 52: ip link set fbond type bond ad_actor_sys_prio 65535
    setting bond param: ad_actor_sys_prio
    given:
        params.ad_actor_system = 0
    call stack:
        bond_option_ad_actor_sys_prio()
        -> bond_3ad_update_ad_actor_settings()
           -> set ad.system.sys_priority = bond->params.ad_actor_sys_prio
           -> ad.system.sys_mac_addr = bond->dev->dev_addr; because
                params.ad_actor_system == 0
    results:
         ad.system.sys_mac_addr = bond->dev->dev_addr
    
    line 60: ip link set veth1-bond down master fbond
    given:
        params.ad_actor_system = 0
        params.mode = BOND_MODE_8023AD
        ad.system.sys_mac_addr == bond->dev->dev_addr
    call stack:
        bond_enslave
        -> bond_3ad_initialize(); because first slave
           -> if ad.system.sys_mac_addr != bond->dev->dev_addr
              return
    results:
         Nothing is run in bond_3ad_initialize() because dev_addr equals
         sys_mac_addr leaving the global ad_ticks_per_sec zero as it is
         never initialized anywhere else.
    
    The if check around the contents of bond_3ad_initialize() is no longer
    needed due to commit 5ee14e6d336f ("bonding: 3ad: apply ad_actor settings
    changes immediately") which sets ad.system.sys_mac_addr if any one of
    the bonding parameters whos set function calls
    bond_3ad_update_ad_actor_settings(). This is because if
    ad.system.sys_mac_addr is zero it will be set to the current bond mac
    address, this causes the if check to never be true.
    
    Fixes: 5ee14e6d336f ("bonding: 3ad: apply ad_actor settings changes immediately")
    Signed-off-by: Jonathan Toppins <jtoppins@redhat.com>
    Acked-by: Jay Vosburgh <jay.vosburgh@canonical.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 14ef913a9582fcc06602f641e97a4ae12b5f4247
Author: Sergei Antonov <saproj@gmail.com>
Date:   Fri Aug 19 14:05:19 2022 +0300

    net: moxa: get rid of asymmetry in DMA mapping/unmapping
    
    [ Upstream commit 0ee7828dfc56e97d71e51e6374dc7b4eb2b6e081 ]
    
    Since priv->rx_mapping[i] is maped in moxart_mac_open(), we
    should unmap it from moxart_mac_stop(). Fixes 2 warnings.
    
    1. During error unwinding in moxart_mac_probe(): "goto init_fail;",
    then moxart_mac_free_memory() calls dma_unmap_single() with
    priv->rx_mapping[i] pointers zeroed.
    
    WARNING: CPU: 0 PID: 1 at kernel/dma/debug.c:963 check_unmap+0x704/0x980
    DMA-API: moxart-ethernet 92000000.mac: device driver tries to free DMA memory it has not allocated [device address=0x0000000000000000] [size=1600 bytes]
    CPU: 0 PID: 1 Comm: swapper Not tainted 5.19.0+ #60
    Hardware name: Generic DT based system
     unwind_backtrace from show_stack+0x10/0x14
     show_stack from dump_stack_lvl+0x34/0x44
     dump_stack_lvl from __warn+0xbc/0x1f0
     __warn from warn_slowpath_fmt+0x94/0xc8
     warn_slowpath_fmt from check_unmap+0x704/0x980
     check_unmap from debug_dma_unmap_page+0x8c/0x9c
     debug_dma_unmap_page from moxart_mac_free_memory+0x3c/0xa8
     moxart_mac_free_memory from moxart_mac_probe+0x190/0x218
     moxart_mac_probe from platform_probe+0x48/0x88
     platform_probe from really_probe+0xc0/0x2e4
    
    2. After commands:
     ip link set dev eth0 down
     ip link set dev eth0 up
    
    WARNING: CPU: 0 PID: 55 at kernel/dma/debug.c:570 add_dma_entry+0x204/0x2ec
    DMA-API: moxart-ethernet 92000000.mac: cacheline tracking EEXIST, overlapping mappings aren't supported
    CPU: 0 PID: 55 Comm: ip Not tainted 5.19.0+ #57
    Hardware name: Generic DT based system
     unwind_backtrace from show_stack+0x10/0x14
     show_stack from dump_stack_lvl+0x34/0x44
     dump_stack_lvl from __warn+0xbc/0x1f0
     __warn from warn_slowpath_fmt+0x94/0xc8
     warn_slowpath_fmt from add_dma_entry+0x204/0x2ec
     add_dma_entry from dma_map_page_attrs+0x110/0x328
     dma_map_page_attrs from moxart_mac_open+0x134/0x320
     moxart_mac_open from __dev_open+0x11c/0x1ec
     __dev_open from __dev_change_flags+0x194/0x22c
     __dev_change_flags from dev_change_flags+0x14/0x44
     dev_change_flags from devinet_ioctl+0x6d4/0x93c
     devinet_ioctl from inet_ioctl+0x1ac/0x25c
    
    v1 -> v2:
    Extraneous change removed.
    
    Fixes: 6c821bd9edc9 ("net: Add MOXA ART SoCs ethernet driver")
    Signed-off-by: Sergei Antonov <saproj@gmail.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Link: https://lore.kernel.org/r/20220819110519.1230877-1-saproj@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit faa8bf8451067aec58322cc6e101cbcf19811585
Author: Alex Elder <elder@linaro.org>
Date:   Thu Aug 18 08:42:05 2022 -0500

    net: ipa: don't assume SMEM is page-aligned
    
    [ Upstream commit b8d4380365c515d8e0351f2f46d371738dd19be1 ]
    
    In ipa_smem_init(), a Qualcomm SMEM region is allocated (if needed)
    and then its virtual address is fetched using qcom_smem_get().  The
    physical address associated with that region is also fetched.
    
    The physical address is adjusted so that it is page-aligned, and an
    attempt is made to update the size of the region to compensate for
    any non-zero adjustment.
    
    But that adjustment isn't done properly.  The physical address is
    aligned twice, and as a result the size is never actually adjusted.
    
    Fix this by *not* aligning the "addr" local variable, and instead
    making the "phys" local variable be the adjusted "addr" value.
    
    Fixes: a0036bb413d5b ("net: ipa: define SMEM memory region for IPA")
    Signed-off-by: Alex Elder <elder@linaro.org>
    Link: https://lore.kernel.org/r/20220818134206.567618-1-elder@linaro.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 29accb2d96e69a9ccd5050a19d00831d3546c2b5
Author: Vlad Buslov <vladbu@nvidia.com>
Date:   Fri Jul 15 21:41:48 2022 +0200

    net/mlx5e: Properly disable vlan strip on non-UL reps
    
    [ Upstream commit f37044fd759b6bc40b6398a978e0b1acdf717372 ]
    
    When querying mlx5 non-uplink representors capabilities with ethtool
    rx-vlan-offload is marked as "off [fixed]". However, it is actually always
    enabled because mlx5e_params->vlan_strip_disable is 0 by default when
    initializing struct mlx5e_params instance. Fix the issue by explicitly
    setting the vlan_strip_disable to 'true' for non-uplink representors.
    
    Fixes: cb67b832921c ("net/mlx5e: Introduce SRIOV VF representors")
    Signed-off-by: Vlad Buslov <vladbu@nvidia.com>
    Reviewed-by: Roi Dayan <roid@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1bfdcde723d8ceb2d73291b0415767e7c1cc1d8a
Author: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
Date:   Thu Aug 11 20:21:48 2022 +0200

    ice: xsk: prohibit usage of non-balanced queue id
    
    [ Upstream commit 5a42f112d367bb4700a8a41f5c12724fde6bfbb9 ]
    
    Fix the following scenario:
    1. ethtool -L $IFACE rx 8 tx 96
    2. xdpsock -q 10 -t -z
    
    Above refers to a case where user would like to attach XSK socket in
    txonly mode at a queue id that does not have a corresponding Rx queue.
    At this moment ice's XSK logic is tightly bound to act on a "queue pair",
    e.g. both Tx and Rx queues at a given queue id are disabled/enabled and
    both of them will get XSK pool assigned, which is broken for the presented
    queue configuration. This results in the splat included at the bottom,
    which is basically an OOB access to Rx ring array.
    
    To fix this, allow using the ids only in scope of "combined" queues
    reported by ethtool. However, logic should be rewritten to allow such
    configurations later on, which would end up as a complete rewrite of the
    control path, so let us go with this temporary fix.
    
    [420160.558008] BUG: kernel NULL pointer dereference, address: 0000000000000082
    [420160.566359] #PF: supervisor read access in kernel mode
    [420160.572657] #PF: error_code(0x0000) - not-present page
    [420160.579002] PGD 0 P4D 0
    [420160.582756] Oops: 0000 [#1] PREEMPT SMP NOPTI
    [420160.588396] CPU: 10 PID: 21232 Comm: xdpsock Tainted: G           OE     5.19.0-rc7+ #10
    [420160.597893] Hardware name: Intel Corporation S2600WFT/S2600WFT, BIOS SE5C620.86B.02.01.0008.031920191559 03/19/2019
    [420160.609894] RIP: 0010:ice_xsk_pool_setup+0x44/0x7d0 [ice]
    [420160.616968] Code: f3 48 83 ec 40 48 8b 4f 20 48 8b 3f 65 48 8b 04 25 28 00 00 00 48 89 44 24 38 31 c0 48 8d 04 ed 00 00 00 00 48 01 c1 48 8b 11 <0f> b7 92 82 00 00 00 48 85 d2 0f 84 2d 75 00 00 48 8d 72 ff 48 85
    [420160.639421] RSP: 0018:ffffc9002d2afd48 EFLAGS: 00010282
    [420160.646650] RAX: 0000000000000050 RBX: ffff88811d8bdd00 RCX: ffff888112c14ff8
    [420160.655893] RDX: 0000000000000000 RSI: ffff88811d8bdd00 RDI: ffff888109861000
    [420160.665166] RBP: 000000000000000a R08: 000000000000000a R09: 0000000000000000
    [420160.674493] R10: 000000000000889f R11: 0000000000000000 R12: 000000000000000a
    [420160.683833] R13: 000000000000000a R14: 0000000000000000 R15: ffff888117611828
    [420160.693211] FS:  00007fa869fc1f80(0000) GS:ffff8897e0880000(0000) knlGS:0000000000000000
    [420160.703645] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [420160.711783] CR2: 0000000000000082 CR3: 00000001d076c001 CR4: 00000000007706e0
    [420160.721399] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [420160.731045] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [420160.740707] PKRU: 55555554
    [420160.745960] Call Trace:
    [420160.750962]  <TASK>
    [420160.755597]  ? kmalloc_large_node+0x79/0x90
    [420160.762703]  ? __kmalloc_node+0x3f5/0x4b0
    [420160.769341]  xp_assign_dev+0xfd/0x210
    [420160.775661]  ? shmem_file_read_iter+0x29a/0x420
    [420160.782896]  xsk_bind+0x152/0x490
    [420160.788943]  __sys_bind+0xd0/0x100
    [420160.795097]  ? exit_to_user_mode_prepare+0x20/0x120
    [420160.802801]  __x64_sys_bind+0x16/0x20
    [420160.809298]  do_syscall_64+0x38/0x90
    [420160.815741]  entry_SYSCALL_64_after_hwframe+0x63/0xcd
    [420160.823731] RIP: 0033:0x7fa86a0dd2fb
    [420160.830264] Code: c3 66 0f 1f 44 00 00 48 8b 15 69 8b 0c 00 f7 d8 64 89 02 b8 ff ff ff ff eb bc 0f 1f 44 00 00 f3 0f 1e fa b8 31 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 3d 8b 0c 00 f7 d8 64 89 01 48
    [420160.855410] RSP: 002b:00007ffc1146f618 EFLAGS: 00000246 ORIG_RAX: 0000000000000031
    [420160.866366] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007fa86a0dd2fb
    [420160.876957] RDX: 0000000000000010 RSI: 00007ffc1146f680 RDI: 0000000000000003
    [420160.887604] RBP: 000055d7113a0520 R08: 00007fa868fb8000 R09: 0000000080000000
    [420160.898293] R10: 0000000000008001 R11: 0000000000000246 R12: 000055d7113a04e0
    [420160.909038] R13: 000055d7113a0320 R14: 000000000000000a R15: 0000000000000000
    [420160.919817]  </TASK>
    [420160.925659] Modules linked in: ice(OE) af_packet binfmt_misc nls_iso8859_1 ipmi_ssif intel_rapl_msr intel_rapl_common x86_pkg_temp_thermal intel_powerclamp mei_me coretemp ioatdma mei ipmi_si wmi ipmi_msghandler acpi_pad acpi_power_meter ip_tables x_tables autofs4 ixgbe i40e crct10dif_pclmul crc32_pclmul ghash_clmulni_intel aesni_intel crypto_simd cryptd ahci mdio dca libahci lpc_ich [last unloaded: ice]
    [420160.977576] CR2: 0000000000000082
    [420160.985037] ---[ end trace 0000000000000000 ]---
    [420161.097724] RIP: 0010:ice_xsk_pool_setup+0x44/0x7d0 [ice]
    [420161.107341] Code: f3 48 83 ec 40 48 8b 4f 20 48 8b 3f 65 48 8b 04 25 28 00 00 00 48 89 44 24 38 31 c0 48 8d 04 ed 00 00 00 00 48 01 c1 48 8b 11 <0f> b7 92 82 00 00 00 48 85 d2 0f 84 2d 75 00 00 48 8d 72 ff 48 85
    [420161.134741] RSP: 0018:ffffc9002d2afd48 EFLAGS: 00010282
    [420161.144274] RAX: 0000000000000050 RBX: ffff88811d8bdd00 RCX: ffff888112c14ff8
    [420161.155690] RDX: 0000000000000000 RSI: ffff88811d8bdd00 RDI: ffff888109861000
    [420161.168088] RBP: 000000000000000a R08: 000000000000000a R09: 0000000000000000
    [420161.179295] R10: 000000000000889f R11: 0000000000000000 R12: 000000000000000a
    [420161.190420] R13: 000000000000000a R14: 0000000000000000 R15: ffff888117611828
    [420161.201505] FS:  00007fa869fc1f80(0000) GS:ffff8897e0880000(0000) knlGS:0000000000000000
    [420161.213628] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [420161.223413] CR2: 0000000000000082 CR3: 00000001d076c001 CR4: 00000000007706e0
    [420161.234653] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [420161.245893] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [420161.257052] PKRU: 55555554
    
    Fixes: 2d4238f55697 ("ice: Add support for AF_XDP")
    Signed-off-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
    Tested-by: George Kuruvinakunnel <george.kuruvinakunnel@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d29d7108e19e1c471e398bf85028999c0d0e4eae
Author: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
Date:   Tue Jan 25 17:04:40 2022 +0100

    ice: xsk: Force rings to be sized to power of 2
    
    [ Upstream commit 296f13ff3854535009a185aaf8e3603266d39d94 ]
    
    With the upcoming introduction of batching to XSK data path,
    performance wise it will be the best to have the ring descriptor count
    to be aligned to power of 2.
    
    Check if ring sizes that user is going to attach the XSK socket fulfill
    the condition above. For Tx side, although check is being done against
    the Tx queue and in the end the socket will be attached to the XDP
    queue, it is fine since XDP queues get the ring->count setting from Tx
    queues.
    
    Suggested-by: Alexander Lobakin <alexandr.lobakin@intel.com>
    Signed-off-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Reviewed-by: Alexander Lobakin <alexandr.lobakin@intel.com>
    Acked-by: Magnus Karlsson <magnus.karlsson@intel.com>
    Link: https://lore.kernel.org/bpf/20220125160446.78976-3-maciej.fijalkowski@intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 50403ee6daddf0d7a14e9d3b51a377c39a08ec8c
Author: Duoming Zhou <duoming@zju.edu.cn>
Date:   Thu Aug 18 17:06:21 2022 +0800

    nfc: pn533: Fix use-after-free bugs caused by pn532_cmd_timeout
    
    [ Upstream commit f1e941dbf80a9b8bab0bffbc4cbe41cc7f4c6fb6 ]
    
    When the pn532 uart device is detaching, the pn532_uart_remove()
    is called. But there are no functions in pn532_uart_remove() that
    could delete the cmd_timeout timer, which will cause use-after-free
    bugs. The process is shown below:
    
        (thread 1)                  |        (thread 2)
                                    |  pn532_uart_send_frame
    pn532_uart_remove               |    mod_timer(&pn532->cmd_timeout,...)
      ...                           |    (wait a time)
      kfree(pn532) //FREE           |    pn532_cmd_timeout
                                    |      pn532_uart_send_frame
                                    |        pn532->... //USE
    
    This patch adds del_timer_sync() in pn532_uart_remove() in order to
    prevent the use-after-free bugs. What's more, the pn53x_unregister_nfc()
    is well synchronized, it sets nfc_dev->shutting_down to true and there
    are no syscalls could restart the cmd_timeout timer.
    
    Fixes: c656aa4c27b1 ("nfc: pn533: add UART phy driver")
    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 de3deadd11987070788b48825bec4647458b988d
Author: Bernard Pidoux <f6bvp@free.fr>
Date:   Thu Aug 18 02:02:13 2022 +0200

    rose: check NULL rose_loopback_neigh->loopback
    
    [ Upstream commit 3c53cd65dece47dd1f9d3a809f32e59d1d87b2b8 ]
    
    Commit 3b3fd068c56e3fbea30090859216a368398e39bf added NULL check for
    `rose_loopback_neigh->dev` in rose_loopback_timer() but omitted to
    check rose_loopback_neigh->loopback.
    
    It thus prevents *all* rose connect.
    
    The reason is that a special rose_neigh loopback has a NULL device.
    
    /proc/net/rose_neigh illustrates it via rose_neigh_show() function :
    [...]
    seq_printf(seq, "%05d %-9s %-4s   %3d %3d  %3s     %3s %3lu %3lu",
               rose_neigh->number,
               (rose_neigh->loopback) ? "RSLOOP-0" : ax2asc(buf, &rose_neigh->callsign),
               rose_neigh->dev ? rose_neigh->dev->name : "???",
               rose_neigh->count,
    
    /proc/net/rose_neigh displays special rose_loopback_neigh->loopback as
    callsign RSLOOP-0:
    
    addr  callsign  dev  count use mode restart  t0  tf digipeaters
    00001 RSLOOP-0  ???      1   2  DCE     yes   0   0
    
    By checking rose_loopback_neigh->loopback, rose_rx_call_request() is called
    even in case rose_loopback_neigh->dev is NULL. This repairs rose connections.
    
    Verification with rose client application FPAC:
    
    FPAC-Node v 4.1.3 (built Aug  5 2022) for LINUX (help = h)
    F6BVP-4 (Commands = ?) : u
    Users - AX.25 Level 2 sessions :
    Port   Callsign     Callsign  AX.25 state  ROSE state  NetRom status
    axudp  F6BVP-5   -> F6BVP-9   Connected    Connected   ---------
    
    Fixes: 3b3fd068c56e ("rose: Fix Null pointer dereference in rose_send_frame()")
    Signed-off-by: Bernard Pidoux <f6bvp@free.fr>
    Suggested-by: Francois Romieu <romieu@fr.zoreil.com>
    Cc: Thomas DL9SAU Osterried <thomas@osterried.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e9fe1283a88c658773112b261df31ae177119caa
Author: Peter Xu <peterx@redhat.com>
Date:   Fri Aug 5 12:00:03 2022 -0400

    mm/smaps: don't access young/dirty bit if pte unpresent
    
    [ Upstream commit efd4149342db2df41b1bbe68972ead853b30e444 ]
    
    These bits should only be valid when the ptes are present.  Introducing
    two booleans for it and set it to false when !pte_present() for both pte
    and pmd accountings.
    
    The bug is found during code reading and no real world issue reported, but
    logically such an error can cause incorrect readings for either smaps or
    smaps_rollup output on quite a few fields.
    
    For example, it could cause over-estimate on values like Shared_Dirty,
    Private_Dirty, Referenced.  Or it could also cause under-estimate on
    values like LazyFree, Shared_Clean, Private_Clean.
    
    Link: https://lkml.kernel.org/r/20220805160003.58929-1-peterx@redhat.com
    Fixes: b1d4d9e0cbd0 ("proc/smaps: carefully handle migration entries")
    Fixes: c94b6923fa0a ("/proc/PID/smaps: Add PMD migration entry parsing")
    Signed-off-by: Peter Xu <peterx@redhat.com>
    Reviewed-by: Vlastimil Babka <vbabka@suse.cz>
    Reviewed-by: David Hildenbrand <david@redhat.com>
    Reviewed-by: Yang Shi <shy828301@gmail.com>
    Cc: Konstantin Khlebnikov <khlebnikov@openvz.org>
    Cc: Huang Ying <ying.huang@intel.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c7c77185fa3e9f8c3358426c2584a5b1dc1fdf0f
Author: Miaohe Lin <linmiaohe@huawei.com>
Date:   Tue May 4 18:34:08 2021 -0700

    mm/huge_memory.c: use helper function migration_entry_to_page()
    
    [ Upstream commit a44f89dc6c5f8ba70240b81a570260d29d04bcb0 ]
    
    It's more recommended to use helper function migration_entry_to_page()
    to get the page via migration entry.  We can also enjoy the PageLocked()
    check there.
    
    Link: https://lkml.kernel.org/r/20210318122722.13135-7-linmiaohe@huawei.com
    Signed-off-by: Miaohe Lin <linmiaohe@huawei.com>
    Reviewed-by: Peter Xu <peterx@redhat.com>
    Cc: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Michel Lespinasse <walken@google.com>
    Cc: Ralph Campbell <rcampbell@nvidia.com>
    Cc: Thomas Hellstrm (Intel) <thomas_os@shipmail.org>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Wei Yang <richard.weiyang@linux.alibaba.com>
    Cc: William Kucharski <william.kucharski@oracle.com>
    Cc: Yang Shi <yang.shi@linux.alibaba.com>
    Cc: yuleixzhang <yulei.kernel@gmail.com>
    Cc: Zi Yan <ziy@nvidia.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8be096f018e4d4a4d430c8c87c4009c7024ffb90
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Wed Aug 3 14:55:03 2022 -0400

    SUNRPC: RPC level errors should set task->tk_rpc_status
    
    [ Upstream commit ed06fce0b034b2e25bd93430f5c4cbb28036cc1a ]
    
    Fix up a case in call_encode() where we're failing to set
    task->tk_rpc_status when an RPC level error occurred.
    
    Fixes: 9c5948c24869 ("SUNRPC: task should be exit if encode return EKEYEXPIRED more times")
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5e49ea099850feadcbf33c74b4f514a3e8049b91
Author: Olga Kornievskaia <kolga@netapp.com>
Date:   Thu Aug 18 15:07:05 2022 -0400

    NFSv4.2 fix problems with __nfs42_ssc_open
    
    [ Upstream commit fcfc8be1e9cf2f12b50dce8b579b3ae54443a014 ]
    
    A destination server while doing a COPY shouldn't accept using the
    passed in filehandle if its not a regular filehandle.
    
    If alloc_file_pseudo() has failed, we need to decrement a reference
    on the newly created inode, otherwise it leaks.
    
    Reported-by: Al Viro <viro@zeniv.linux.org.uk>
    Fixes: ec4b092508982 ("NFS: inter ssc open")
    Signed-off-by: Olga Kornievskaia <kolga@netapp.com>
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 23c6f25a60435f85e1a442dd5492e96a260dd731
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Fri Nov 5 14:23:30 2021 -0400

    NFS: Don't allocate nfs_fattr on the stack in __nfs42_ssc_open()
    
    [ Upstream commit 156cd28562a4e8ca454d11b234d9f634a45d6390 ]
    
    The preferred behaviour is always to allocate struct nfs_fattr from the
    slab.
    
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2761612bcde9776dd93ce60ce55ef0b7c7329153
Author: Nikolay Aleksandrov <razor@blackwall.org>
Date:   Tue Aug 16 18:30:50 2022 +0300

    xfrm: policy: fix metadata dst->dev xmit null pointer dereference
    
    [ Upstream commit 17ecd4a4db4783392edd4944f5e8268205083f70 ]
    
    When we try to transmit an skb with metadata_dst attached (i.e. dst->dev
    == NULL) through xfrm interface we can hit a null pointer dereference[1]
    in xfrmi_xmit2() -> xfrm_lookup_with_ifid() due to the check for a
    loopback skb device when there's no policy which dereferences dst->dev
    unconditionally. Not having dst->dev can be interepreted as it not being
    a loopback device, so just add a check for a null dst_orig->dev.
    
    With this fix xfrm interface's Tx error counters go up as usual.
    
    [1] net-next calltrace captured via netconsole:
      BUG: kernel NULL pointer dereference, address: 00000000000000c0
      #PF: supervisor read access in kernel mode
      #PF: error_code(0x0000) - not-present page
      PGD 0 P4D 0
      Oops: 0000 [#1] PREEMPT SMP
      CPU: 1 PID: 7231 Comm: ping Kdump: loaded Not tainted 5.19.0+ #24
      Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.0-1.fc36 04/01/2014
      RIP: 0010:xfrm_lookup_with_ifid+0x5eb/0xa60
      Code: 8d 74 24 38 e8 26 a4 37 00 48 89 c1 e9 12 fc ff ff 49 63 ed 41 83 fd be 0f 85 be 01 00 00 41 be ff ff ff ff 45 31 ed 48 8b 03 <f6> 80 c0 00 00 00 08 75 0f 41 80 bc 24 19 0d 00 00 01 0f 84 1e 02
      RSP: 0018:ffffb0db82c679f0 EFLAGS: 00010246
      RAX: 0000000000000000 RBX: ffffd0db7fcad430 RCX: ffffb0db82c67a10
      RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffffb0db82c67a80
      RBP: ffffb0db82c67a80 R08: ffffb0db82c67a14 R09: 0000000000000000
      R10: 0000000000000000 R11: ffff8fa449667dc8 R12: ffffffff966db880
      R13: 0000000000000000 R14: 00000000ffffffff R15: 0000000000000000
      FS:  00007ff35c83f000(0000) GS:ffff8fa478480000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00000000000000c0 CR3: 000000001ebb7000 CR4: 0000000000350ee0
      Call Trace:
       <TASK>
       xfrmi_xmit+0xde/0x460
       ? tcf_bpf_act+0x13d/0x2a0
       dev_hard_start_xmit+0x72/0x1e0
       __dev_queue_xmit+0x251/0xd30
       ip_finish_output2+0x140/0x550
       ip_push_pending_frames+0x56/0x80
       raw_sendmsg+0x663/0x10a0
       ? try_charge_memcg+0x3fd/0x7a0
       ? __mod_memcg_lruvec_state+0x93/0x110
       ? sock_sendmsg+0x30/0x40
       sock_sendmsg+0x30/0x40
       __sys_sendto+0xeb/0x130
       ? handle_mm_fault+0xae/0x280
       ? do_user_addr_fault+0x1e7/0x680
       ? kvm_read_and_reset_apf_flags+0x3b/0x50
       __x64_sys_sendto+0x20/0x30
       do_syscall_64+0x34/0x80
       entry_SYSCALL_64_after_hwframe+0x46/0xb0
      RIP: 0033:0x7ff35cac1366
      Code: eb 0b 00 f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb b8 0f 1f 00 41 89 ca 64 8b 04 25 18 00 00 00 85 c0 75 11 b8 2c 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 72 c3 90 55 48 83 ec 30 44 89 4c 24 2c 4c 89
      RSP: 002b:00007fff738e4028 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
      RAX: ffffffffffffffda RBX: 00007fff738e57b0 RCX: 00007ff35cac1366
      RDX: 0000000000000040 RSI: 0000557164e4b450 RDI: 0000000000000003
      RBP: 0000557164e4b450 R08: 00007fff738e7a2c R09: 0000000000000010
      R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000040
      R13: 00007fff738e5770 R14: 00007fff738e4030 R15: 0000001d00000001
       </TASK>
      Modules linked in: netconsole veth br_netfilter bridge bonding virtio_net [last unloaded: netconsole]
      CR2: 00000000000000c0
    
    CC: Steffen Klassert <steffen.klassert@secunet.com>
    CC: Daniel Borkmann <daniel@iogearbox.net>
    Fixes: 2d151d39073a ("xfrm: Add possibility to set the default to block if we have no policy")
    Signed-off-by: Nikolay Aleksandrov <razor@blackwall.org>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c5c4d4c9806dadac7bc82f9c29ef4e1b78894775
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Thu Aug 4 18:03:46 2022 +0800

    af_key: Do not call xfrm_probe_algs in parallel
    
    [ Upstream commit ba953a9d89a00c078b85f4b190bc1dde66fe16b5 ]
    
    When namespace support was added to xfrm/afkey, it caused the
    previously single-threaded call to xfrm_probe_algs to become
    multi-threaded.  This is buggy and needs to be fixed with a mutex.
    
    Reported-by: Abhishek Shah <abhishek.shah@columbia.edu>
    Fixes: 283bc9f35bbb ("xfrm: Namespacify xfrm state/policy locks")
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4379a10c1db793ce39ea410e36ddc3099ec0694c
Author: Antony Antony <antony.antony@secunet.com>
Date:   Wed Jul 27 17:41:22 2022 +0200

    xfrm: clone missing x->lastused in xfrm_do_migrate
    
    [ Upstream commit 6aa811acdb76facca0b705f4e4c1d948ccb6af8b ]
    
    x->lastused was not cloned in xfrm_do_migrate. Add it to clone during
    migrate.
    
    Fixes: 80c9abaabf42 ("[XFRM]: Extension for dynamic update of endpoint address(es)")
    Signed-off-by: Antony Antony <antony.antony@secunet.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1305d7d4f35ca6f214a2d23b075aa6a924cff3be
Author: Xin Xiong <xiongx18@fudan.edu.cn>
Date:   Sun Jul 24 17:55:58 2022 +0800

    xfrm: fix refcount leak in __xfrm_policy_check()
    
    [ Upstream commit 9c9cb23e00ddf45679b21b4dacc11d1ae7961ebe ]
    
    The issue happens on an error path in __xfrm_policy_check(). When the
    fetching process of the object `pols[1]` fails, the function simply
    returns 0, forgetting to decrement the reference count of `pols[0]`,
    which is incremented earlier by either xfrm_sk_policy_lookup() or
    xfrm_policy_lookup(). This may result in memory leaks.
    
    Fix it by decreasing the reference count of `pols[0]` in that path.
    
    Fixes: 134b0fc544ba ("IPsec: propagate security module errors up from flow_cache_lookup")
    Signed-off-by: Xin Xiong <xiongx18@fudan.edu.cn>
    Signed-off-by: Xin Tan <tanxin.ctf@gmail.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c30c0f720533c6bcab2e16b90d302afb50a61d2a
Author: Hui Su <suhui_kernel@163.com>
Date:   Fri Jan 7 17:52:54 2022 +0800

    kernel/sched: Remove dl_boosted flag comment
    
    commit 0e3872499de1a1230cef5221607d71aa09264bd5 upstream.
    
    since commit 2279f540ea7d ("sched/deadline: Fix priority
    inheritance with multiple scheduling classes"), we should not
    keep it here.
    
    Signed-off-by: Hui Su <suhui_kernel@163.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Daniel Bristot de Oliveira <bristot@redhat.com>
    Link: https://lore.kernel.org/r/20220107095254.GA49258@localhost.localdomain
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 70d560e2fb5e4505121f58ceb0df5b1f905c71cc
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Tue Aug 23 15:11:36 2022 +0300

    xfs: only bother with sync_filesystem during readonly remount
    
    commit b97cca3ba9098522e5a1c3388764ead42640c1a5 upstream.
    
    In commit 02b9984d6408, we pushed a sync_filesystem() call from the VFS
    into xfs_fs_remount.  The only time that we ever need to push dirty file
    data or metadata to disk for a remount is if we're remounting the
    filesystem read only, so this really could be moved to xfs_remount_ro.
    
    Once we've moved the call site, actually check the return value from
    sync_filesystem.
    
    Fixes: 02b9984d6408 ("fs: push sync_filesystem() down to the file system's remount_fs()")
    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Dave Chinner <dchinner@redhat.com>
    Signed-off-by: Amir Goldstein <amir73il@gmail.com>
    Acked-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 37837bc3ef317e33dd37d53f62283aeb2a8eaa0e
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Tue Aug 23 15:11:35 2022 +0300

    xfs: return errors in xfs_fs_sync_fs
    
    commit 2d86293c70750e4331e9616aded33ab6b47c299d upstream.
    
    Now that the VFS will do something with the return values from
    ->sync_fs, make ours pass on error codes.
    
    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Acked-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Amir Goldstein <amir73il@gmail.com>
    Acked-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 76a51e49da9c9919b97225982d720da5315ebaa7
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Tue Aug 23 15:11:34 2022 +0300

    vfs: make sync_filesystem return errors from ->sync_fs
    
    commit 5679897eb104cec9e99609c3f045a0c20603da4c upstream.
    
    [backport to 5.10 only differs in __sync_blockdev helper]
    
    Strangely, sync_filesystem ignores the return code from the ->sync_fs
    call, which means that syscalls like syncfs(2) never see the error.
    This doesn't seem right, so fix that.
    
    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Acked-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Amir Goldstein <amir73il@gmail.com>
    Acked-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9255a42fe7ab65bc1972ed7452966199d47b7009
Author: Christoph Hellwig <hch@lst.de>
Date:   Tue Aug 23 15:11:33 2022 +0300

    fs: remove __sync_filesystem
    
    commit 9a208ba5c9afa62c7b1e9c6f5e783066e84e2d3c upstream.
    
    [backported for dependency]
    
    There is no clear benefit in having this helper vs just open coding it.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
    Link: https://lore.kernel.org/r/20211019062530.2174626-2-hch@lst.de
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Amir Goldstein <amir73il@gmail.com>
    Acked-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1b9b4139d794cf0ae51ba3dd91f009c77fab16d0
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Tue Aug 23 15:11:32 2022 +0300

    xfs: reject crazy array sizes being fed to XFS_IOC_GETBMAP*
    
    commit 29d650f7e3ab55283b89c9f5883d0c256ce478b5 upstream.
    
    Syzbot tripped over the following complaint from the kernel:
    
    WARNING: CPU: 2 PID: 15402 at mm/util.c:597 kvmalloc_node+0x11e/0x125 mm/util.c:597
    
    While trying to run XFS_IOC_GETBMAP against the following structure:
    
    struct getbmap fubar = {
            .bmv_count      = 0x22dae649,
    };
    
    Obviously, this is a crazy huge value since the next thing that the
    ioctl would do is allocate 37GB of memory.  This is enough to make
    kvmalloc mad, but isn't large enough to trip the validation functions.
    In other words, I'm fussing with checks that were **already sufficient**
    because that's easier than dealing with 644 internal bug reports.  Yes,
    that's right, six hundred and forty-four.
    
    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Allison Henderson <allison.henderson@oracle.com>
    Reviewed-by: Catherine Hoang <catherine.hoang@oracle.com>
    Signed-off-by: Amir Goldstein <amir73il@gmail.com>
    Acked-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6a564bad3a6474a5247491d2b48637ec69d429dd
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue Aug 23 15:11:31 2022 +0300

    xfs: prevent a WARN_ONCE() in xfs_ioc_attr_list()
    
    commit 6ed6356b07714e0198be3bc3ecccc8b40a212de4 upstream.
    
    The "bufsize" comes from the root user.  If "bufsize" is negative then,
    because of type promotion, neither of the validation checks at the start
    of the function are able to catch it:
    
            if (bufsize < sizeof(struct xfs_attrlist) ||
                bufsize > XFS_XATTR_LIST_MAX)
                    return -EINVAL;
    
    This means "bufsize" will trigger (WARN_ON_ONCE(size > INT_MAX)) in
    kvmalloc_node().  Fix this by changing the type from int to size_t.
    
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reviewed-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Amir Goldstein <amir73il@gmail.com>
    Acked-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a5757df6128b9d7ac923fa59aceff9f212b36106
Author: Basavaraj Natikar <Basavaraj.Natikar@amd.com>
Date:   Mon Jun 13 12:11:26 2022 +0530

    pinctrl: amd: Don't save/restore interrupt status and wake status bits
    
    commit b8c824a869f220c6b46df724f85794349bafbf23 upstream.
    
    Saving/restoring interrupt and wake status bits across suspend can
    cause the suspend to fail if an IRQ is serviced across the
    suspend cycle.
    
    Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
    Signed-off-by: Basavaraj Natikar <Basavaraj.Natikar@amd.com>
    Fixes: 79d2c8bede2c ("pinctrl/amd: save pin registers over suspend/resume")
    Link: https://lore.kernel.org/r/20220613064127.220416-3-Basavaraj.Natikar@amd.com
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 665433b5ddc29901c2611c4bfd7ae56e402307eb
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Sun Aug 7 15:09:34 2022 -0700

    kernel/sys_ni: add compat entry for fadvise64_64
    
    commit a8faed3a02eeb75857a3b5d660fa80fe79db77a3 upstream.
    
    When CONFIG_ADVISE_SYSCALLS is not set/enabled and CONFIG_COMPAT is
    set/enabled, the riscv compat_syscall_table references
    'compat_sys_fadvise64_64', which is not defined:
    
    riscv64-linux-ld: arch/riscv/kernel/compat_syscall_table.o:(.rodata+0x6f8):
    undefined reference to `compat_sys_fadvise64_64'
    
    Add 'fadvise64_64' to kernel/sys_ni.c as a conditional COMPAT function so
    that when CONFIG_ADVISE_SYSCALLS is not set, there is a fallback function
    available.
    
    Link: https://lkml.kernel.org/r/20220807220934.5689-1-rdunlap@infradead.org
    Fixes: d3ac21cacc24 ("mm: Support compiling out madvise and fadvise")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Suggested-by: Arnd Bergmann <arnd@arndb.de>
    Reviewed-by: Arnd Bergmann <arnd@arndb.de>
    Cc: Josh Triplett <josh@joshtriplett.org>
    Cc: Paul Walmsley <paul.walmsley@sifive.com>
    Cc: Palmer Dabbelt <palmer@dabbelt.com>
    Cc: Albert Ou <aou@eecs.berkeley.edu>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit df1d445e7fcfbc8e4bbed4ce936977b4a7642cd9
Author: Helge Deller <deller@gmx.de>
Date:   Sat Aug 20 17:59:17 2022 +0200

    parisc: Fix exception handler for fldw and fstw instructions
    
    commit 7ae1f5508d9a33fd58ed3059bd2d569961e3b8bd upstream.
    
    The exception handler is broken for unaligned memory acceses with fldw
    and fstw instructions, because it trashes or uses randomly some other
    floating point register than the one specified in the instruction word
    on loads and stores.
    
    The instruction "fldw 0(addr),%fr22L" (and the other fldw/fstw
    instructions) encode the target register (%fr22) in the rightmost 5 bits
    of the instruction word. The 7th rightmost bit of the instruction word
    defines if the left or right half of %fr22 should be used.
    
    While processing unaligned address accesses, the FR3() define is used to
    extract the offset into the local floating-point register set.  But the
    calculation in FR3() was buggy, so that for example instead of %fr22,
    register %fr12 [((22 * 2) & 0x1f) = 12] was used.
    
    This bug has been since forever in the parisc kernel and I wonder why it
    wasn't detected earlier. Interestingly I noticed this bug just because
    the libime debian package failed to build on *native* hardware, while it
    successfully built in qemu.
    
    This patch corrects the bitshift and masking calculation in FR3().
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e10bb2f2e99b01ab7f9ec965735dcb4592b5490a
Author: Gaosheng Cui <cuigaosheng1@huawei.com>
Date:   Mon Aug 22 10:29:05 2022 +0800

    audit: fix potential double free on error path from fsnotify_add_inode_mark
    
    commit ad982c3be4e60c7d39c03f782733503cbd88fd2a upstream.
    
    Audit_alloc_mark() assign pathname to audit_mark->path, on error path
    from fsnotify_add_inode_mark(), fsnotify_put_mark will free memory
    of audit_mark->path, but the caller of audit_alloc_mark will free
    the pathname again, so there will be double free problem.
    
    Fix this by resetting audit_mark->path to NULL pointer on error path
    from fsnotify_add_inode_mark().
    
    Cc: stable@vger.kernel.org
    Fixes: 7b1293234084d ("fsnotify: Add group pointer in fsnotify_init_mark()")
    Signed-off-by: Gaosheng Cui <cuigaosheng1@huawei.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>