commit f63179c1e68ce99d511b683ad05d3829d0e4d9e9
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Tue Nov 2 19:51:02 2021 +0100

    Linux 5.14.16
    
    Link: https://lore.kernel.org/r/20211101082533.618411490@linuxfoundation.org
    Tested-by: Fox Chen <foxhlchen@gmail.com>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Salvatore Bonaccorso <carnil@debian.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e874c870dfd8b08045c07c9a7cc0634ef7e8c6b8
Author: David Woodhouse <dwmw@amazon.co.uk>
Date:   Tue Oct 26 04:12:38 2021 +0100

    KVM: x86: Take srcu lock in post_kvm_run_save()
    
    commit f3d1436d4bf8ced1c9a62a045d193a65567e1fcc upstream.
    
    The Xen interrupt injection for event channels relies on accessing the
    guest's vcpu_info structure in __kvm_xen_has_interrupt(), through a
    gfn_to_hva_cache.
    
    This requires the srcu lock to be held, which is mostly the case except
    for this code path:
    
    [   11.822877] WARNING: suspicious RCU usage
    [   11.822965] -----------------------------
    [   11.823013] include/linux/kvm_host.h:664 suspicious rcu_dereference_check() usage!
    [   11.823131]
    [   11.823131] other info that might help us debug this:
    [   11.823131]
    [   11.823196]
    [   11.823196] rcu_scheduler_active = 2, debug_locks = 1
    [   11.823253] 1 lock held by dom:0/90:
    [   11.823292]  #0: ffff998956ec8118 (&vcpu->mutex){+.+.}, at: kvm_vcpu_ioctl+0x85/0x680
    [   11.823379]
    [   11.823379] stack backtrace:
    [   11.823428] CPU: 2 PID: 90 Comm: dom:0 Kdump: loaded Not tainted 5.4.34+ #5
    [   11.823496] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.12.1-0-ga5cab58e9a3f-prebuilt.qemu.org 04/01/2014
    [   11.823612] Call Trace:
    [   11.823645]  dump_stack+0x7a/0xa5
    [   11.823681]  lockdep_rcu_suspicious+0xc5/0x100
    [   11.823726]  __kvm_xen_has_interrupt+0x179/0x190
    [   11.823773]  kvm_cpu_has_extint+0x6d/0x90
    [   11.823813]  kvm_cpu_accept_dm_intr+0xd/0x40
    [   11.823853]  kvm_vcpu_ready_for_interrupt_injection+0x20/0x30
                  < post_kvm_run_save() inlined here >
    [   11.823906]  kvm_arch_vcpu_ioctl_run+0x135/0x6a0
    [   11.823947]  kvm_vcpu_ioctl+0x263/0x680
    
    Fixes: 40da8ccd724f ("KVM: x86/xen: Add event channel interrupt vector upcall")
    Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
    Cc: stable@vger.kernel.org
    Message-Id: <606aaaf29fca3850a63aa4499826104e77a72346.camel@infradead.org>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9ab39a3d0cec142c424fae4186684fcea90df0de
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Mon Oct 25 12:14:31 2021 -0400

    KVM: SEV-ES: fix another issue with string I/O VMGEXITs
    
    commit 9b0971ca7fc75daca80c0bb6c02e96059daea90a upstream.
    
    If the guest requests string I/O from the hypervisor via VMGEXIT,
    SW_EXITINFO2 will contain the REP count.  However, sev_es_string_io
    was incorrectly treating it as the size of the GHCB buffer in
    bytes.
    
    This fixes the "outsw" test in the experimental SEV tests of
    kvm-unit-tests.
    
    Cc: stable@vger.kernel.org
    Fixes: 7ed9abfe8e9f ("KVM: SVM: Support string IO operations for an SEV-ES guest")
    Reported-by: Marc Orr <marcorr@google.com>
    Tested-by: Marc Orr <marcorr@google.com>
    Reviewed-by: Marc Orr <marcorr@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eb0461c572e902680383b52c091449f4035e2105
Author: David Woodhouse <dwmw@amazon.co.uk>
Date:   Sat Oct 23 21:29:22 2021 +0100

    KVM: x86: switch pvclock_gtod_sync_lock to a raw spinlock
    
    commit 8228c77d8b56e3f735baf71fefb1b548c23691a7 upstream.
    
    On the preemption path when updating a Xen guest's runstate times, this
    lock is taken inside the scheduler rq->lock, which is a raw spinlock.
    This was shown in a lockdep warning:
    
    [   89.138354] =============================
    [   89.138356] [ BUG: Invalid wait context ]
    [   89.138358] 5.15.0-rc5+ #834 Tainted: G S        I E
    [   89.138360] -----------------------------
    [   89.138361] xen_shinfo_test/2575 is trying to lock:
    [   89.138363] ffffa34a0364efd8 (&kvm->arch.pvclock_gtod_sync_lock){....}-{3:3}, at: get_kvmclock_ns+0x1f/0x130 [kvm]
    [   89.138442] other info that might help us debug this:
    [   89.138444] context-{5:5}
    [   89.138445] 4 locks held by xen_shinfo_test/2575:
    [   89.138447]  #0: ffff972bdc3b8108 (&vcpu->mutex){+.+.}-{4:4}, at: kvm_vcpu_ioctl+0x77/0x6f0 [kvm]
    [   89.138483]  #1: ffffa34a03662e90 (&kvm->srcu){....}-{0:0}, at: kvm_arch_vcpu_ioctl_run+0xdc/0x8b0 [kvm]
    [   89.138526]  #2: ffff97331fdbac98 (&rq->__lock){-.-.}-{2:2}, at: __schedule+0xff/0xbd0
    [   89.138534]  #3: ffffa34a03662e90 (&kvm->srcu){....}-{0:0}, at: kvm_arch_vcpu_put+0x26/0x170 [kvm]
    ...
    [   89.138695]  get_kvmclock_ns+0x1f/0x130 [kvm]
    [   89.138734]  kvm_xen_update_runstate+0x14/0x90 [kvm]
    [   89.138783]  kvm_xen_update_runstate_guest+0x15/0xd0 [kvm]
    [   89.138830]  kvm_arch_vcpu_put+0xe6/0x170 [kvm]
    [   89.138870]  kvm_sched_out+0x2f/0x40 [kvm]
    [   89.138900]  __schedule+0x5de/0xbd0
    
    Cc: stable@vger.kernel.org
    Reported-by: syzbot+b282b65c2c68492df769@syzkaller.appspotmail.com
    Fixes: 30b5c851af79 ("KVM: x86/xen: Add support for vCPU runstate information")
    Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
    Message-Id: <1b02a06421c17993df337493a68ba923f3bd5c0f.camel@infradead.org>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 10242cc2ad7930b90f1774035e3cae5d21c13630
Author: David Woodhouse <dwmw@amazon.co.uk>
Date:   Sat Oct 23 20:47:19 2021 +0100

    KVM: x86/xen: Fix kvm_xen_has_interrupt() sleeping in kvm_vcpu_block()
    
    commit 0985dba842eaa391858972cfe2724c3c174a2827 upstream.
    
    In kvm_vcpu_block, the current task is set to TASK_INTERRUPTIBLE before
    making a final check whether the vCPU should be woken from HLT by any
    incoming interrupt.
    
    This is a problem for the get_user() in __kvm_xen_has_interrupt(), which
    really shouldn't be sleeping when the task state has already been set.
    I think it's actually harmless as it would just manifest itself as a
    spurious wakeup, but it's causing a debug warning:
    
    [  230.963649] do not call blocking ops when !TASK_RUNNING; state=1 set at [<00000000b6bcdbc9>] prepare_to_swait_exclusive+0x30/0x80
    
    Fix the warning by turning it into an *explicit* spurious wakeup. When
    invoked with !task_is_running(current) (and we might as well add
    in_atomic() there while we're at it), just return 1 to indicate that
    an IRQ is pending, which will cause a wakeup and then something will
    call it again in a context that *can* sleep so it can fault the page
    back in.
    
    Cc: stable@vger.kernel.org
    Fixes: 40da8ccd724f ("KVM: x86/xen: Add event channel interrupt vector upcall")
    Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
    Message-Id: <168bf8c689561da904e48e2ff5ae4713eaef9e2d.camel@infradead.org>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 669a7e147ee66ec42c36ddc99ae760c05bd1526c
Author: Song Liu <songliubraving@fb.com>
Date:   Sun Oct 3 22:32:38 2021 -0700

    perf script: Check session->header.env.arch before using it
    
    commit 29c77550eef31b0d72a45b49eeab03b8963264e8 upstream.
    
    When perf.data is not written cleanly, we would like to process existing
    data as much as possible (please see f_header.data.size == 0 condition
    in perf_session__read_header). However, perf.data with partial data may
    crash perf. Specifically, we see crash in 'perf script' for NULL
    session->header.env.arch.
    
    Fix this by checking session->header.env.arch before using it to determine
    native_arch. Also split the if condition so it is easier to read.
    
    Committer notes:
    
    If it is a pipe, we already assume is a native arch, so no need to check
    session->header.env.arch.
    
    Signed-off-by: Song Liu <songliubraving@fb.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: kernel-team@fb.com
    Cc: stable@vger.kernel.org
    Link: http://lore.kernel.org/lkml/20211004053238.514936-1-songliubraving@fb.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e914237feb46330fa2c8d08a6e333f6b9a46b7f3
Author: Alexandre Ghiti <alexandre.ghiti@canonical.com>
Date:   Fri Oct 29 06:59:27 2021 +0200

    riscv: Fix asan-stack clang build
    
    commit 54c5639d8f507ebefa814f574cb6f763033a72a5 upstream.
    
    Nathan reported that because KASAN_SHADOW_OFFSET was not defined in
    Kconfig, it prevents asan-stack from getting disabled with clang even
    when CONFIG_KASAN_STACK is disabled: fix this by defining the
    corresponding config.
    
    Reported-by: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Alexandre Ghiti <alexandre.ghiti@canonical.com>
    Fixes: 8ad8b72721d0 ("riscv: Add KASAN support")
    Cc: stable@vger.kernel.org
    Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4606bbb6b19ccaa74159e1f3628e8a2414557167
Author: Alexandre Ghiti <alexandre.ghiti@canonical.com>
Date:   Fri Oct 29 06:59:26 2021 +0200

    riscv: Do not re-populate shadow memory with kasan_populate_early_shadow
    
    commit cf11d01135ea1ff7fddb612033e3cb5cde279ff2 upstream.
    
    When calling this function, all the shadow memory is already populated
    with kasan_early_shadow_pte which has PAGE_KERNEL protection.
    kasan_populate_early_shadow write-protects the mapping of the range
    of addresses passed in argument in zero_pte_populate, which actually
    write-protects all the shadow memory mapping since kasan_early_shadow_pte
    is used for all the shadow memory at this point. And then when using
    memblock API to populate the shadow memory, the first write access to the
    kernel stack triggers a trap. This becomes visible with the next commit
    that contains a fix for asan-stack.
    
    We already manually populate all the shadow memory in kasan_early_init
    and we write-protect kasan_early_shadow_pte at the end of kasan_init
    which makes the calls to kasan_populate_early_shadow superfluous so
    we can remove them.
    
    Signed-off-by: Alexandre Ghiti <alexandre.ghiti@canonical.com>
    Fixes: e178d670f251 ("riscv/kasan: add KASAN_VMALLOC support")
    Fixes: 8ad8b72721d0 ("riscv: Add KASAN support")
    Cc: stable@vger.kernel.org
    Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7567abe63797aba9b2b7e16c543ec6af987f9baa
Author: Chen Lu <181250012@smail.nju.edu.cn>
Date:   Mon Oct 18 13:22:38 2021 +0800

    riscv: fix misalgned trap vector base address
    
    commit 64a19591a2938b170aa736443d5d3bf4c51e1388 upstream.
    
    The trap vector marked by label .Lsecondary_park must align on a
    4-byte boundary, as the {m,s}tvec is defined to require 4-byte
    alignment.
    
    Signed-off-by: Chen Lu <181250012@smail.nju.edu.cn>
    Reviewed-by: Anup Patel <anup.patel@wdc.com>
    Fixes: e011995e826f ("RISC-V: Move relocate and few other functions out of __init")
    Cc: stable@vger.kernel.org
    Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 20bd764387aca98bdbc62c1bac4e618fa6c22e70
Author: Brian King <brking@linux.vnet.ibm.com>
Date:   Tue Oct 19 10:21:29 2021 -0500

    scsi: ibmvfc: Fix up duplicate response detection
    
    commit e20f80b9b163dc402dca115eed0affba6df5ebb5 upstream.
    
    Commit a264cf5e81c7 ("scsi: ibmvfc: Fix command state accounting and stale
    response detection") introduced a regression in detecting duplicate
    responses. This was observed in test where a command was sent to the VIOS
    and completed before ibmvfc_send_event() set the active flag to 1, which
    resulted in the atomic_dec_if_positive() call in ibmvfc_handle_crq()
    thinking this was a duplicate response, which resulted in scsi_done() not
    getting called, so we then hit a SCSI command timeout for this command once
    the timeout expires.  This simply ensures the active flag gets set prior to
    making the hcall to send the command to the VIOS, in order to close this
    window.
    
    Link: https://lore.kernel.org/r/20211019152129.16558-1-brking@linux.vnet.ibm.com
    Fixes: a264cf5e81c7 ("scsi: ibmvfc: Fix command state accounting and stale response detection")
    Cc: stable@vger.kernel.org
    Acked-by: Tyrel Datwyler <tyreld@linux.ibm.com>
    Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f6782c0ca8081290184a046b9ed42dfef5abb158
Author: Kan Liang <kan.liang@linux.intel.com>
Date:   Wed Sep 29 08:38:13 2021 -0700

    perf script: Fix PERF_SAMPLE_WEIGHT_STRUCT support
    
    [ Upstream commit 27730c8cd60d1574d8337276e7a9d7d2ca92e0d1 ]
    
    -F weight in perf script is broken.
    
      # ./perf mem record
      # ./perf script -F weight
      Samples for 'dummy:HG' event do not have WEIGHT attribute set. Cannot
    print 'weight' field.
    
    The sample type, PERF_SAMPLE_WEIGHT_STRUCT, is an alternative of the
    PERF_SAMPLE_WEIGHT sample type. They share the same space, weight. The
    lower 32 bits are exactly the same for both sample type. The higher 32
    bits may be different for different architecture. For a new kernel on
    x86, the PERF_SAMPLE_WEIGHT_STRUCT is used. For an old kernel or other
    ARCHs, the PERF_SAMPLE_WEIGHT is used.
    
    With -F weight, current perf script will only check the input string
    "weight" with the PERF_SAMPLE_WEIGHT sample type. Because the commit
    ea8d0ed6eae3 ("perf tools: Support PERF_SAMPLE_WEIGHT_STRUCT") didn't
    update the PERF_SAMPLE_WEIGHT_STRUCT sample type for perf script. For a
    new kernel on x86, the check fails.
    
    Use PERF_SAMPLE_WEIGHT_TYPE, which supports both sample types, to
    replace PERF_SAMPLE_WEIGHT
    
    Fixes: ea8d0ed6eae37b01 ("perf tools: Support PERF_SAMPLE_WEIGHT_STRUCT")
    Reported-by: Joe Mario <jmario@redhat.com>
    Reviewed-by: Kajol Jain <kjain@linux.ibm.com>
    Signed-off-by: Kan Liang <kan.liang@linux.intel.com>
    Tested-by: Jiri Olsa <jolsa@redhat.com>
    Tested-by: Joe Mario <jmario@redhat.com>
    Acked-by: Jiri Olsa <jolsa@redhat.com>
    Acked-by: Joe Mario <jmario@redhat.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Link: https://lore.kernel.org/r/1632929894-102778-1-git-send-email-kan.liang@linux.intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 04ced3822a6699842dc7150f8aff5b0be6c2feda
Author: Chanho Park <chanho61.park@samsung.com>
Date:   Mon Oct 18 15:28:41 2021 +0900

    scsi: ufs: ufs-exynos: Correct timeout value setting registers
    
    [ Upstream commit 282da7cef078a87b6d5e8ceba8b17e428cf0e37c ]
    
    PA_PWRMODEUSERDATA0 -> DL_FC0PROTTIMEOUTVAL
    PA_PWRMODEUSERDATA1 -> DL_TC0REPLAYTIMEOUTVAL
    PA_PWRMODEUSERDATA2 -> DL_AFC0REQTIMEOUTVAL
    
    Link: https://lore.kernel.org/r/20211018062841.18226-1-chanho61.park@samsung.com
    Fixes: a967ddb22d94 ("scsi: ufs: ufs-exynos: Apply vendor-specific values for three timeouts")
    Cc: Alim Akhtar <alim.akhtar@samsung.com>
    Cc: Kiwoong Kim <kwmad.kim@samsung.com>
    Cc: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
    Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com>
    Reviewed-by: Avri Altman <avri.altman@wdc.com>
    Signed-off-by: Chanho Park <chanho61.park@samsung.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d748da838b21d0cabcf0990f1fc647eca2353b61
Author: Halil Pasic <pasic@linux.ibm.com>
Date:   Tue Oct 19 19:54:00 2021 +0200

    KVM: s390: preserve deliverable_mask in __airqs_kick_single_vcpu
    
    [ Upstream commit 0e9ff65f455dfd0a8aea5e7843678ab6fe097e21 ]
    
    Changing the deliverable mask in __airqs_kick_single_vcpu() is a bug. If
    one idle vcpu can't take the interrupts we want to deliver, we should
    look for another vcpu that can, instead of saying that we don't want
    to deliver these interrupts by clearing the bits from the
    deliverable_mask.
    
    Fixes: 9f30f6216378 ("KVM: s390: add gib_alert_irq_handler()")
    Signed-off-by: Halil Pasic <pasic@linux.ibm.com>
    Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Reviewed-by: Michael Mueller <mimu@linux.ibm.com>
    Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
    Link: https://lore.kernel.org/r/20211019175401.3757927-3-pasic@linux.ibm.com
    Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4faa35ce98c7efdc3771b373f2068e6ff9632f96
Author: Halil Pasic <pasic@linux.ibm.com>
Date:   Tue Oct 19 19:53:59 2021 +0200

    KVM: s390: clear kicked_mask before sleeping again
    
    [ Upstream commit 9b57e9d5010bbed7c0d9d445085840f7025e6f9a ]
    
    The idea behind kicked mask is that we should not re-kick a vcpu that
    is already in the "kick" process, i.e. that was kicked and is
    is about to be dispatched if certain conditions are met.
    
    The problem with the current implementation is, that it assumes the
    kicked vcpu is going to enter SIE shortly. But under certain
    circumstances, the vcpu we just kicked will be deemed non-runnable and
    will remain in wait state. This can happen, if the interrupt(s) this
    vcpu got kicked to deal with got already cleared (because the interrupts
    got delivered to another vcpu). In this case kvm_arch_vcpu_runnable()
    would return false, and the vcpu would remain in kvm_vcpu_block(),
    but this time with its kicked_mask bit set. So next time around we
    wouldn't kick the vcpu form __airqs_kick_single_vcpu(), but would assume
    that we just kicked it.
    
    Let us make sure the kicked_mask is cleared before we give up on
    re-dispatching the vcpu.
    
    Fixes: 9f30f6216378 ("KVM: s390: add gib_alert_irq_handler()")
    Reported-by: Matthew Rosato <mjrosato@linux.ibm.com>
    Signed-off-by: Halil Pasic <pasic@linux.ibm.com>
    Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Reviewed-by: Michael Mueller <mimu@linux.ibm.com>
    Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
    Link: https://lore.kernel.org/r/20211019175401.3757927-2-pasic@linux.ibm.com
    Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ae566351ca187f619e44a53041d1420130fec139
Author: Subbaraya Sundeep <sbhatta@marvell.com>
Date:   Wed Oct 27 23:02:32 2021 +0530

    octeontx2-af: Check whether ipolicers exists
    
    [ Upstream commit cc45b96e2de7ada26520f101dada0abafa4ba997 ]
    
    While displaying ingress policers information in
    debugfs check whether ingress policers exist in
    the hardware or not because some platforms(CN9XXX)
    do not have this feature.
    
    Fixes: e7d8971763f3 ("octeontx2-af: cn10k: Debugfs support for bandwidth")
    Signed-off-by: Subbaraya Sundeep <sbhatta@marvell.com>
    Signed-off-by: Rakesh Babu <rsaladi2@marvell.com>
    Signed-off-by: Sunil Kovvuri Goutham <sgoutham@marvell.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 45d9cd36378651106865a06b681809e84f7fb9c3
Author: Vincent Whitchurch <vincent.whitchurch@axis.com>
Date:   Tue Oct 26 15:31:00 2021 +0200

    virtio-ring: fix DMA metadata flags
    
    [ Upstream commit 890d33561337ffeba0d8ba42517e71288cfee2b6 ]
    
    The flags are currently overwritten, leading to the wrong direction
    being passed to the DMA unmap functions.
    
    Fixes: 72b5e8958738aaa4 ("virtio-ring: store DMA metadata in desc_extra for split virtqueue")
    Signed-off-by: Vincent Whitchurch <vincent.whitchurch@axis.com>
    Link: https://lore.kernel.org/r/20211026133100.17541-1-vincent.whitchurch@axis.com
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Acked-by: Jason Wang <jasowang@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 52a936b037b5692825b34ad40ca939797a71f3e5
Author: Guangbin Huang <huangguangbin2@huawei.com>
Date:   Wed Oct 27 20:11:48 2021 +0800

    net: hns3: expand buffer len for some debugfs command
    
    [ Upstream commit c7a6e3978ea952efb107ecf511c095c3bbb2945f ]
    
    The specified buffer length for three debugfs files fd_tcam, uc and tqp
    is not enough for their maximum needs, so this patch fixes them.
    
    Fixes: b5a0b70d77b9 ("net: hns3: refactor dump fd tcam of debugfs")
    Fixes: 1556ea9120ff ("net: hns3: refactor dump mac list of debugfs")
    Fixes: d96b0e59468d ("net: hns3: refactor dump reg of debugfs")
    Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit efccb66bc917cd6b28f9f834615bb82848d2ef4b
Author: Jie Wang <wangjie125@huawei.com>
Date:   Wed Oct 27 20:11:47 2021 +0800

    net: hns3: add more string spaces for dumping packets number of queue info in debugfs
    
    [ Upstream commit 6754614a787cbcbf87bae8a75619c24a33ea6791 ]
    
    As the width of packets number registers is 32 bits, they needs at most
    10 characters for decimal data printing, but now the string spaces is not
    enough, so this patch fixes it.
    
    Fixes: e44c495d95e ("net: hns3: refactor queue info of debugfs")
    Signed-off-by: Jie Wang <wangjie125@huawei.com>
    Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e5c6ad377c07c00a6def4f9c366179ddc7dbb78b
Author: Tejun Heo <tj@kernel.org>
Date:   Thu Oct 21 08:46:10 2021 -1000

    bpf: Move BPF_MAP_TYPE for INODE_STORAGE and TASK_STORAGE outside of CONFIG_NET
    
    [ Upstream commit 99d0a3831e3500d945162cdb2310e3a5fce90b60 ]
    
    bpf_types.h has BPF_MAP_TYPE_INODE_STORAGE and BPF_MAP_TYPE_TASK_STORAGE
    declared inside #ifdef CONFIG_NET although they are built regardless of
    CONFIG_NET. So, when CONFIG_BPF_SYSCALL && !CONFIG_NET, they are built
    without the declarations leading to spurious build failures and not
    registered to bpf_map_types making them unavailable.
    
    Fix it by moving the BPF_MAP_TYPE for the two map types outside of
    CONFIG_NET.
    
    Reported-by: kernel test robot <lkp@intel.com>
    Fixes: a10787e6d58c ("bpf: Enable task local storage for tracing programs")
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Acked-by: Martin KaFai Lau <kafai@fb.com>
    Link: https://lore.kernel.org/bpf/YXG1cuuSJDqHQfRY@slm.duckdns.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b341612b659d450d4b3a2cdd79754e7f4fe9bbd4
Author: Jamie Iles <quic_jiles@quicinc.com>
Date:   Fri Sep 3 12:21:01 2021 +0100

    watchdog: sbsa: only use 32-bit accessors
    
    [ Upstream commit f31afb502c3151855df3ed40f5974c7884c10d14 ]
    
    SBSA says of the generic watchdog:
    
      All registers are 32 bits in size and should be accessed using 32-bit
      reads and writes. If an access size other than 32 bits is used then
      the results are IMPLEMENTATION DEFINED.
    
    and for qemu, the implementation will only allow 32-bit accesses
    resulting in a synchronous external abort when configuring the watchdog.
    Use lo_hi_* accessors rather than a readq/writeq.
    
    Fixes: abd3ac7902fb ("watchdog: sbsa: Support architecture version 1")
    Signed-off-by: Jamie Iles <quic_jiles@quicinc.com>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Reviewed-by: Shaokun Zhang <zhangshaokun@hisilicon.com>
    Link: https://lore.kernel.org/r/20210903112101.493552-1-quic_jiles@quicinc.com
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit de709ec74f8b22f032ccd0648bdba9e880f84a7d
Author: Stanislav Fomichev <sdf@google.com>
Date:   Wed Aug 18 16:52:15 2021 -0700

    bpf: Use kvmalloc for map values in syscall
    
    [ Upstream commit f0dce1d9b7c81fc3dc9d0cc0bc7ef9b3eae22584 ]
    
    Use kvmalloc/kvfree for temporary value when manipulating a map via
    syscall. kmalloc might not be sufficient for percpu maps where the value
    is big (and further multiplied by hundreds of CPUs).
    
    Can be reproduced with netcnt test on qemu with "-smp 255".
    
    Signed-off-by: Stanislav Fomichev <sdf@google.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Song Liu <songliubraving@fb.com>
    Link: https://lore.kernel.org/bpf/20210818235216.1159202-1-sdf@google.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0717c71deae69aa3511492c302dd44a2f3722184
Author: Xin Long <lucien.xin@gmail.com>
Date:   Wed Oct 20 07:42:47 2021 -0400

    sctp: add vtag check in sctp_sf_ootb
    
    [ Upstream commit 9d02831e517aa36ee6bdb453a0eb47bd49923fe3 ]
    
    sctp_sf_ootb() is called when processing DATA chunk in closed state,
    and many other places are also using it.
    
    The vtag in the chunk's sctphdr should be verified, otherwise, as
    later in chunk length check, it may send abort with the existent
    asoc's vtag, which can be exploited by one to cook a malicious
    chunk to terminate a SCTP asoc.
    
    When fails to verify the vtag from the chunk, this patch sets asoc
    to NULL, so that the abort will be made with the vtag from the
    received chunk later.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1c255b5f68f4dac3f1f0f24741575aac2325470a
Author: Xin Long <lucien.xin@gmail.com>
Date:   Wed Oct 20 07:42:46 2021 -0400

    sctp: add vtag check in sctp_sf_do_8_5_1_E_sa
    
    [ Upstream commit ef16b1734f0a176277b7bb9c71a6d977a6ef3998 ]
    
    sctp_sf_do_8_5_1_E_sa() is called when processing SHUTDOWN_ACK chunk
    in cookie_wait and cookie_echoed state.
    
    The vtag in the chunk's sctphdr should be verified, otherwise, as
    later in chunk length check, it may send abort with the existent
    asoc's vtag, which can be exploited by one to cook a malicious
    chunk to terminate a SCTP asoc.
    
    Note that when fails to verify the vtag from SHUTDOWN-ACK chunk,
    SHUTDOWN COMPLETE message will still be sent back to peer, but
    with the vtag from SHUTDOWN-ACK chunk, as said in 5) of
    rfc4960#section-8.4.
    
    While at it, also remove the unnecessary chunk length check from
    sctp_sf_shut_8_4_5(), as it's already done in both places where
    it calls sctp_sf_shut_8_4_5().
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dd82b3a345abf6fc325e748469d9d7f477a0b718
Author: Xin Long <lucien.xin@gmail.com>
Date:   Wed Oct 20 07:42:45 2021 -0400

    sctp: add vtag check in sctp_sf_violation
    
    [ Upstream commit aa0f697e45286a6b5f0ceca9418acf54b9099d99 ]
    
    sctp_sf_violation() is called when processing HEARTBEAT_ACK chunk
    in cookie_wait state, and some other places are also using it.
    
    The vtag in the chunk's sctphdr should be verified, otherwise, as
    later in chunk length check, it may send abort with the existent
    asoc's vtag, which can be exploited by one to cook a malicious
    chunk to terminate a SCTP asoc.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 44ef3ecbc24a532fde6a8c7b87b3e55d4ad1c1d1
Author: Xin Long <lucien.xin@gmail.com>
Date:   Wed Oct 20 07:42:44 2021 -0400

    sctp: fix the processing for COOKIE_ECHO chunk
    
    [ Upstream commit a64b341b8695e1c744dd972b39868371b4f68f83 ]
    
    1. In closed state: in sctp_sf_do_5_1D_ce():
    
      When asoc is NULL, making packet for abort will use chunk's vtag
      in sctp_ootb_pkt_new(). But when asoc exists, vtag from the chunk
      should be verified before using peer.i.init_tag to make packet
      for abort in sctp_ootb_pkt_new(), and just discard it if vtag is
      not correct.
    
    2. In the other states: in sctp_sf_do_5_2_4_dupcook():
    
      asoc always exists, but duplicate cookie_echo's vtag will be
      handled by sctp_tietags_compare() and then take actions, so before
      that we only verify the vtag for the abort sent for invalid chunk
      length.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7975f42f10380ff9743a7ee94ef3cb81f1a8275d
Author: Xin Long <lucien.xin@gmail.com>
Date:   Wed Oct 20 07:42:43 2021 -0400

    sctp: fix the processing for INIT_ACK chunk
    
    [ Upstream commit 438b95a7c98f77d51cbf4db021f41b602d750a3f ]
    
    Currently INIT_ACK chunk in non-cookie_echoed state is processed in
    sctp_sf_discard_chunk() to send an abort with the existent asoc's
    vtag if the chunk length is not valid. But the vtag in the chunk's
    sctphdr is not verified, which may be exploited by one to cook a
    malicious chunk to terminal a SCTP asoc.
    
    sctp_sf_discard_chunk() also is called in many other places to send
    an abort, and most of those have this problem. This patch is to fix
    it by sending abort with the existent asoc's vtag only if the vtag
    from the chunk's sctphdr is verified in sctp_sf_discard_chunk().
    
    Note on sctp_sf_do_9_1_abort() and sctp_sf_shutdown_pending_abort(),
    the chunk length has been verified before sctp_sf_discard_chunk(),
    so replace it with sctp_sf_discard(). On sctp_sf_do_asconf_ack() and
    sctp_sf_do_asconf(), move the sctp_chunk_length_valid check ahead of
    sctp_sf_discard_chunk(), then replace it with sctp_sf_discard().
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6277d424ead2702798e8b981fb6f51b8ec2304ec
Author: Xin Long <lucien.xin@gmail.com>
Date:   Wed Oct 20 07:42:42 2021 -0400

    sctp: fix the processing for INIT chunk
    
    [ Upstream commit eae5783908042a762c24e1bd11876edb91d314b1 ]
    
    This patch fixes the problems below:
    
    1. In non-shutdown_ack_sent states: in sctp_sf_do_5_1B_init() and
       sctp_sf_do_5_2_2_dupinit():
    
      chunk length check should be done before any checks that may cause
      to send abort, as making packet for abort will access the init_tag
      from init_hdr in sctp_ootb_pkt_new().
    
    2. In shutdown_ack_sent state: in sctp_sf_do_9_2_reshutack():
    
      The same checks as does in sctp_sf_do_5_2_2_dupinit() is needed
      for sctp_sf_do_9_2_reshutack().
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 332933f9ae0a17f6e362ec0f35ed51e7bc8e76d6
Author: Xin Long <lucien.xin@gmail.com>
Date:   Wed Oct 20 07:42:41 2021 -0400

    sctp: use init_tag from inithdr for ABORT chunk
    
    [ Upstream commit 4f7019c7eb33967eb87766e0e4602b5576873680 ]
    
    Currently Linux SCTP uses the verification tag of the existing SCTP
    asoc when failing to process and sending the packet with the ABORT
    chunk. This will result in the peer accepting the ABORT chunk and
    removing the SCTP asoc. One could exploit this to terminate a SCTP
    asoc.
    
    This patch is to fix it by always using the initiate tag of the
    received INIT chunk for the ABORT chunk to be sent.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 44d44bf725915d5065d9abae5d29da34d3e7c5a5
Author: Mustafa Ismail <mustafa.ismail@intel.com>
Date:   Tue Oct 19 10:16:54 2021 -0500

    RDMA/irdma: Do not hold qos mutex twice on QP resume
    
    [ Upstream commit 2dace185caa580720c7cd67fec9efc5ee26108ac ]
    
    When irdma_ws_add fails, irdma_ws_remove is used to cleanup the leaf node.
    This lead to holding the qos mutex twice in the QP resume path. Fix this
    by avoiding the call to irdma_ws_remove and unwinding the error in
    irdma_ws_add. This skips the call to irdma_tc_in_use function which is not
    needed in the error unwind cases.
    
    Fixes: 3ae331c75128 ("RDMA/irdma: Add QoS definitions")
    Link: https://lore.kernel.org/r/20211019151654.1943-2-shiraz.saleem@intel.com
    Signed-off-by: Mustafa Ismail <mustafa.ismail@intel.com>
    Signed-off-by: Shiraz Saleem <shiraz.saleem@intel.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6392f26fbe9290c7abf1ba9aaa19ac9390cbf192
Author: Mustafa Ismail <mustafa.ismail@intel.com>
Date:   Tue Oct 19 10:16:53 2021 -0500

    RDMA/irdma: Set VLAN in UD work completion correctly
    
    [ Upstream commit cc07b73ef11d11d4359fb104d0199b22451dd3d8 ]
    
    Currently VLAN is reported in UD work completion when VLAN id is zero,
    i.e. no VLAN case.
    
    Report VLAN in UD work completion only when VLAN id is non-zero.
    
    Fixes: b48c24c2d710 ("RDMA/irdma: Implement device supported verb APIs")
    Link: https://lore.kernel.org/r/20211019151654.1943-1-shiraz.saleem@intel.com
    Signed-off-by: Mustafa Ismail <mustafa.ismail@intel.com>
    Signed-off-by: Shiraz Saleem <shiraz.saleem@intel.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7762917173cccb13e23068b302d027285ba3f9db
Author: Shiraz Saleem <shiraz.saleem@intel.com>
Date:   Tue Oct 5 13:23:02 2021 -0500

    RDMA/irdma: Process extended CQ entries correctly
    
    [ Upstream commit e93c7d8e8c4cf80c6afe56e71c83c1cd31b4fce1 ]
    
    The valid bit for extended CQE's written by HW is retrieved from the
    incorrect quad-word. This leads to missed completions for any UD traffic
    particularly after a wrap-around.
    
    Get the valid bit for extended CQE's from the correct quad-word in the
    descriptor.
    
    Fixes: 551c46edc769 ("RDMA/irdma: Add user/kernel shared libraries")
    Link: https://lore.kernel.org/r/20211005182302.374-1-shiraz.saleem@intel.com
    Signed-off-by: Shiraz Saleem <shiraz.saleem@intel.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7860484eeb9051910f023ee2762041a125fec797
Author: Andrew Lunn <andrew@lunn.ch>
Date:   Sun Oct 24 21:48:05 2021 +0200

    phy: phy_ethtool_ksettings_set: Lock the PHY while changing settings
    
    commit af1a02aa23c37045e6adfcf074cf7dbac167a403 upstream.
    
    There is a race condition where the PHY state machine can change
    members of the phydev structure at the same time userspace requests a
    change via ethtool. To prevent this, have phy_ethtool_ksettings_set
    take the PHY lock.
    
    Fixes: 2d55173e71b0 ("phy: add generic function to support ksetting support")
    Reported-by: Walter Stoll <Walter.Stoll@duagon.com>
    Suggested-by: Walter Stoll <Walter.Stoll@duagon.com>
    Tested-by: Walter Stoll <Walter.Stoll@duagon.com>
    Signed-off-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 37a1b9befb736f8d204df4829a5c627e84f92deb
Author: Andrew Lunn <andrew@lunn.ch>
Date:   Sun Oct 24 21:48:04 2021 +0200

    phy: phy_start_aneg: Add an unlocked version
    
    commit 707293a56f95f8e7e0cfae008010c7933fb68973 upstream.
    
    Split phy_start_aneg into a wrapper which takes the PHY lock, and a
    helper doing the real work. This will be needed when
    phy_ethtook_ksettings_set takes the lock.
    
    Fixes: 2d55173e71b0 ("phy: add generic function to support ksetting support")
    Signed-off-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1f9c99e0bb5b6c82080a6f52e9bcfc7c04671a33
Author: Andrew Lunn <andrew@lunn.ch>
Date:   Sun Oct 24 21:48:03 2021 +0200

    phy: phy_ethtool_ksettings_set: Move after phy_start_aneg
    
    commit 64cd92d5e8180c2ded3fdea76862de6f596ae2c9 upstream.
    
    This allows it to make use of a helper which assume the PHY is already
    locked.
    
    Fixes: 2d55173e71b0 ("phy: add generic function to support ksetting support")
    Signed-off-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2191b1e8eb3d5980d1015f7bb53450aa0fcdbb31
Author: Andrew Lunn <andrew@lunn.ch>
Date:   Sun Oct 24 21:48:02 2021 +0200

    phy: phy_ethtool_ksettings_get: Lock the phy for consistency
    
    commit c10a485c3de5ccbf1fff65a382cebcb2730c6b06 upstream.
    
    The PHY structure should be locked while copying information out if
    it, otherwise there is no guarantee of self consistency. Without the
    lock the PHY state machine could be updating the structure.
    
    Fixes: 2d55173e71b0 ("phy: add generic function to support ksetting support")
    Signed-off-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e2b4dd2617202141bbc095fc89515d7d57e0dbed
Author: Daniel Jordan <daniel.m.jordan@oracle.com>
Date:   Wed Oct 27 17:59:21 2021 -0400

    net/tls: Fix flipped sign in async_wait.err assignment
    
    commit 1d9d6fd21ad4a28b16ed9ee5432ae738b9dc58aa upstream.
    
    sk->sk_err contains a positive number, yet async_wait.err wants the
    opposite.  Fix the missed sign flip, which Jakub caught by inspection.
    
    Fixes: a42055e8d2c3 ("net/tls: Add support for async encryption of records for performance")
    Suggested-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Daniel Jordan <daniel.m.jordan@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 373f94d736514bbaa2ae5e4c041fc400d0614995
Author: Yuiko Oshino <yuiko.oshino@microchip.com>
Date:   Wed Oct 27 14:23:02 2021 -0400

    net: ethernet: microchip: lan743x: Fix skb allocation failure
    
    commit e8684db191e4164f3f5f3ad7dec04a6734c25f1c upstream.
    
    The driver allocates skb during ndo_open with GFP_ATOMIC which has high chance of failure when there are multiple instances.
    GFP_KERNEL is enough while open and use GFP_ATOMIC only from interrupt context.
    
    Fixes: 23f0703c125b ("lan743x: Add main source files for new lan743x driver")
    Signed-off-by: Yuiko Oshino <yuiko.oshino@microchip.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 228862acb5491d68c25a799be1a1e72c9023471e
Author: Jie Wang <wangjie125@huawei.com>
Date:   Wed Oct 27 20:11:46 2021 +0800

    net: hns3: fix data endian problem of some functions of debugfs
    
    commit 2a21dab594a98c338c4bfbc31864cbca15888549 upstream.
    
    The member data in struct hclge_desc is type of __le32, it needs endian
    conversion before using it, and some functions of debugfs didn't do that,
    so this patch fixes it.
    
    Fixes: c0ebebb9ccc1 ("net: hns3: Add "dcb register" status information query function")
    Signed-off-by: Jie Wang <wangjie125@huawei.com>
    Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 20d88211706b76b8580cebf0b2936a1019a06658
Author: Guangbin Huang <huangguangbin2@huawei.com>
Date:   Wed Oct 27 20:11:43 2021 +0800

    net: hns3: fix pause config problem after autoneg disabled
    
    commit 3bda2e5df476417b6d08967e2d84234a59d57b1c upstream.
    
    If a TP port is configured by follow steps:
    1.ethtool -s ethx autoneg off speed 100 duplex full
    2.ethtool -A ethx rx on tx on
    3.ethtool -s ethx autoneg on(rx&tx negotiated pause results are off)
    4.ethtool -s ethx autoneg off speed 100 duplex full
    
    In step 3, driver will set rx&tx pause parameters of hardware to off as
    pause parameters negotiated with link partner are off.
    
    After step 4, the "ethtool -a ethx" command shows both rx and tx pause
    parameters are on. However, pause parameters of hardware are still off
    and port has no flow control function actually.
    
    To fix this problem, if autoneg is disabled, driver uses its saved
    parameters to restore pause of hardware. If the speed is not changed in
    this case, there is no link state changed for phy, it will cause the pause
    parameter is not taken effect, so we need to force phy to go down and up.
    
    Fixes: aacbe27e82f0 ("net: hns3: modify how pause options is displayed")
    Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7cc73feb57f6d8f4b06c238608db265cc610c483
Author: Trevor Woerner <twoerner@gmail.com>
Date:   Sun Oct 24 13:50:02 2021 -0400

    net: nxp: lpc_eth.c: avoid hang when bringing interface down
    
    commit ace19b992436a257d9a793672e57abc28fe83e2e upstream.
    
    A hard hang is observed whenever the ethernet interface is brought
    down. If the PHY is stopped before the LPC core block is reset,
    the SoC will hang. Comparing lpc_eth_close() and lpc_eth_open() I
    re-arranged the ordering of the functions calls in lpc_eth_close() to
    reset the hardware before stopping the PHY.
    Fixes: b7370112f519 ("lpc32xx: Added ethernet driver")
    Signed-off-by: Trevor Woerner <twoerner@gmail.com>
    Acked-by: Vladimir Zapolskiy <vz@mleia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d8774769d19876fe56315bade910d4dcf41a90aa
Author: Yuiko Oshino <yuiko.oshino@microchip.com>
Date:   Fri Oct 22 11:53:43 2021 -0400

    net: ethernet: microchip: lan743x: Fix dma allocation failure by using dma_set_mask_and_coherent
    
    commit 95a359c9553342d36d408d35331ff0bfce75272f upstream.
    
    The dma failure was reported in the raspberry pi github (issue #4117).
    https://github.com/raspberrypi/linux/issues/4117
    The use of dma_set_mask_and_coherent fixes the issue.
    Tested on 32/64-bit raspberry pi CM4 and 64-bit ubuntu x86 PC with EVB-LAN7430.
    
    Fixes: 23f0703c125b ("lan743x: Add main source files for new lan743x driver")
    Signed-off-by: Yuiko Oshino <yuiko.oshino@microchip.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 69d3c7785ec40335874d643fc3af4d4ce9570c2d
Author: Yuiko Oshino <yuiko.oshino@microchip.com>
Date:   Fri Oct 22 11:13:53 2021 -0400

    net: ethernet: microchip: lan743x: Fix driver crash when lan743x_pm_resume fails
    
    commit d6423d2ec39cce2bfca418c81ef51792891576bc upstream.
    
    The driver needs to clean up and return when the initialization fails on resume.
    
    Fixes: 23f0703c125b ("lan743x: Add main source files for new lan743x driver")
    Signed-off-by: Yuiko Oshino <yuiko.oshino@microchip.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 18bd5e285a78219114633ecd9e8781e176cfd444
Author: Ido Schimmel <idosch@nvidia.com>
Date:   Sun Oct 24 09:40:14 2021 +0300

    mlxsw: pci: Recycle received packet upon allocation failure
    
    commit 759635760a804b0d8ad0cc677b650f1544cae22f upstream.
    
    When the driver fails to allocate a new Rx buffer, it passes an empty Rx
    descriptor (contains zero address and size) to the device and marks it
    as invalid by setting the skb pointer in the descriptor's metadata to
    NULL.
    
    After processing enough Rx descriptors, the driver will try to process
    the invalid descriptor, but will return immediately seeing that the skb
    pointer is NULL. Since the driver no longer passes new Rx descriptors to
    the device, the Rx queue will eventually become full and the device will
    start to drop packets.
    
    Fix this by recycling the received packet if allocation of the new
    packet failed. This means that allocation is no longer performed at the
    end of the Rx routine, but at the start, before tearing down the DMA
    mapping of the received packet.
    
    Remove the comment about the descriptor being zeroed as it is no longer
    correct. This is OK because we either use the descriptor as-is (when
    recycling) or overwrite its address and size fields with that of the
    newly allocated Rx buffer.
    
    The issue was discovered when a process ("perf") consumed too much
    memory and put the system under memory pressure. It can be reproduced by
    injecting slab allocation failures [1]. After the fix, the Rx queue no
    longer comes to a halt.
    
    [1]
     # echo 10 > /sys/kernel/debug/failslab/times
     # echo 1000 > /sys/kernel/debug/failslab/interval
     # echo 100 > /sys/kernel/debug/failslab/probability
    
     FAULT_INJECTION: forcing a failure.
     name failslab, interval 1000, probability 100, space 0, times 8
     [...]
     Call Trace:
      <IRQ>
      dump_stack_lvl+0x34/0x44
      should_fail.cold+0x32/0x37
      should_failslab+0x5/0x10
      kmem_cache_alloc_node+0x23/0x190
      __alloc_skb+0x1f9/0x280
      __netdev_alloc_skb+0x3a/0x150
      mlxsw_pci_rdq_skb_alloc+0x24/0x90
      mlxsw_pci_cq_tasklet+0x3dc/0x1200
      tasklet_action_common.constprop.0+0x9f/0x100
      __do_softirq+0xb5/0x252
      irq_exit_rcu+0x7a/0xa0
      common_interrupt+0x83/0xa0
      </IRQ>
      asm_common_interrupt+0x1e/0x40
     RIP: 0010:cpuidle_enter_state+0xc8/0x340
     [...]
     mlxsw_spectrum2 0000:06:00.0: Failed to alloc skb for RDQ
    
    Fixes: eda6500a987a ("mlxsw: Add PCI bus implementation")
    Signed-off-by: Ido Schimmel <idosch@nvidia.com>
    Reviewed-by: Petr Machata <petrm@nvidia.com>
    Link: https://lore.kernel.org/r/20211024064014.1060919-1-idosch@idosch.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 960f4a54b909c090c44a4dc7d487279fe7271a09
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Wed Oct 20 12:11:16 2021 -0700

    nios2: Make NIOS2_DTB_SOURCE_BOOL depend on !COMPILE_TEST
    
    commit 4a089e95b4d6bb625044d47aed0c442a8f7bd093 upstream.
    
    nios2:allmodconfig builds fail with
    
    make[1]: *** No rule to make target 'arch/nios2/boot/dts/""',
            needed by 'arch/nios2/boot/dts/built-in.a'.  Stop.
    make: [Makefile:1868: arch/nios2/boot/dts] Error 2 (ignored)
    
    This is seen with compile tests since those enable NIOS2_DTB_SOURCE_BOOL,
    which in turn enables NIOS2_DTB_SOURCE. This causes the build error
    because the default value for NIOS2_DTB_SOURCE is an empty string.
    Disable NIOS2_DTB_SOURCE_BOOL for compile tests to avoid the error.
    
    Fixes: 2fc8483fdcde ("nios2: Build infrastructure")
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Reviewed-by: Randy Dunlap <rdunlap@infradead.org>
    Signed-off-by: Dinh Nguyen <dinguyen@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 030f05812d811063e594f986cd134c7feeb2c575
Author: Jonas Gorski <jonas.gorski@gmail.com>
Date:   Thu Oct 14 14:33:42 2021 +0200

    gpio: xgs-iproc: fix parsing of ngpios property
    
    commit 85fe6415c146d5d42ce300c12f1ecf4d4af47d40 upstream.
    
    of_property_read_u32 returns 0 on success, not true, so we need to
    invert the check to actually take over the provided ngpio value.
    
    Fixes: 6a41b6c5fc20 ("gpio: Add xgs-iproc driver")
    Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
    Reviewed-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c653c522e521b38b96e822baaca6d8ecd5ec23c0
Author: Mark Zhang <markzhang@nvidia.com>
Date:   Sun Oct 24 09:08:20 2021 +0300

    RDMA/sa_query: Use strscpy_pad instead of memcpy to copy a string
    
    commit 64733956ebba7cc629856f4a6ee35a52bc9c023f upstream.
    
    When copying the device name, the length of the data memcpy copied exceeds
    the length of the source buffer, which cause the KASAN issue below.  Use
    strscpy_pad() instead.
    
     BUG: KASAN: slab-out-of-bounds in ib_nl_set_path_rec_attrs+0x136/0x320 [ib_core]
     Read of size 64 at addr ffff88811a10f5e0 by task rping/140263
     CPU: 3 PID: 140263 Comm: rping Not tainted 5.15.0-rc1+ #1
     Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
     Call Trace:
      dump_stack_lvl+0x57/0x7d
      print_address_description.constprop.0+0x1d/0xa0
      kasan_report+0xcb/0x110
      kasan_check_range+0x13d/0x180
      memcpy+0x20/0x60
      ib_nl_set_path_rec_attrs+0x136/0x320 [ib_core]
      ib_nl_make_request+0x1c6/0x380 [ib_core]
      send_mad+0x20a/0x220 [ib_core]
      ib_sa_path_rec_get+0x3e3/0x800 [ib_core]
      cma_query_ib_route+0x29b/0x390 [rdma_cm]
      rdma_resolve_route+0x308/0x3e0 [rdma_cm]
      ucma_resolve_route+0xe1/0x150 [rdma_ucm]
      ucma_write+0x17b/0x1f0 [rdma_ucm]
      vfs_write+0x142/0x4d0
      ksys_write+0x133/0x160
      do_syscall_64+0x43/0x90
      entry_SYSCALL_64_after_hwframe+0x44/0xae
     RIP: 0033:0x7f26499aa90f
     Code: 89 54 24 18 48 89 74 24 10 89 7c 24 08 e8 29 fd ff ff 48 8b 54 24 18 48 8b 74 24 10 41 89 c0 8b 7c 24 08 b8 01 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 31 44 89 c7 48 89 44 24 08 e8 5c fd ff ff 48
     RSP: 002b:00007f26495f2dc0 EFLAGS: 00000293 ORIG_RAX: 0000000000000001
     RAX: ffffffffffffffda RBX: 00000000000007d0 RCX: 00007f26499aa90f
     RDX: 0000000000000010 RSI: 00007f26495f2e00 RDI: 0000000000000003
     RBP: 00005632a8315440 R08: 0000000000000000 R09: 0000000000000001
     R10: 0000000000000000 R11: 0000000000000293 R12: 00007f26495f2e00
     R13: 00005632a83154e0 R14: 00005632a8315440 R15: 00005632a830a810
    
     Allocated by task 131419:
      kasan_save_stack+0x1b/0x40
      __kasan_kmalloc+0x7c/0x90
      proc_self_get_link+0x8b/0x100
      pick_link+0x4f1/0x5c0
      step_into+0x2eb/0x3d0
      walk_component+0xc8/0x2c0
      link_path_walk+0x3b8/0x580
      path_openat+0x101/0x230
      do_filp_open+0x12e/0x240
      do_sys_openat2+0x115/0x280
      __x64_sys_openat+0xce/0x140
      do_syscall_64+0x43/0x90
      entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    Fixes: 2ca546b92a02 ("IB/sa: Route SA pathrecord query through netlink")
    Link: https://lore.kernel.org/r/72ede0f6dab61f7f23df9ac7a70666e07ef314b0.1635055496.git.leonro@nvidia.com
    Signed-off-by: Mark Zhang <markzhang@nvidia.com>
    Reviewed-by: Mark Bloch <mbloch@nvidia.com>
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5f6995295f65d1ee6f36d466d26afd98eb797afe
Author: Aharon Landau <aharonl@nvidia.com>
Date:   Tue Oct 19 14:30:10 2021 +0300

    RDMA/mlx5: Initialize the ODP xarray when creating an ODP MR
    
    commit 5508546631a0f555d7088203dec2614e41b5106e upstream.
    
    Normally the zero fill would hide the missing initialization, but an
    errant set to desc_size in reg_create() causes a crash:
    
      BUG: unable to handle page fault for address: 0000000800000000
      PGD 0 P4D 0
      Oops: 0000 [#1] SMP PTI
      CPU: 5 PID: 890 Comm: ib_write_bw Not tainted 5.15.0-rc4+ #47
      Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
      RIP: 0010:mlx5_ib_dereg_mr+0x14/0x3b0 [mlx5_ib]
      Code: 48 63 cd 4c 89 f7 48 89 0c 24 e8 37 30 03 e1 48 8b 0c 24 eb a0 90 0f 1f 44 00 00 41 56 41 55 41 54 55 53 48 89 fb 48 83 ec 30 <48> 8b 2f 65 48 8b 04 25 28 00 00 00 48 89 44 24 28 31 c0 8b 87 c8
      RSP: 0018:ffff88811afa3a60 EFLAGS: 00010286
      RAX: 000000000000001c RBX: 0000000800000000 RCX: 0000000000000000
      RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000800000000
      RBP: 0000000800000000 R08: 0000000000000000 R09: c0000000fffff7ff
      R10: ffff88811afa38f8 R11: ffff88811afa38f0 R12: ffffffffa02c7ac0
      R13: 0000000000000000 R14: ffff88811afa3cd8 R15: ffff88810772fa00
      FS:  00007f47b9080740(0000) GS:ffff88852cd40000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 0000000800000000 CR3: 000000010761e003 CR4: 0000000000370ea0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      Call Trace:
       mlx5_ib_free_odp_mr+0x95/0xc0 [mlx5_ib]
       mlx5_ib_dereg_mr+0x128/0x3b0 [mlx5_ib]
       ib_dereg_mr_user+0x45/0xb0 [ib_core]
       ? xas_load+0x8/0x80
       destroy_hw_idr_uobject+0x1a/0x50 [ib_uverbs]
       uverbs_destroy_uobject+0x2f/0x150 [ib_uverbs]
       uobj_destroy+0x3c/0x70 [ib_uverbs]
       ib_uverbs_cmd_verbs+0x467/0xb00 [ib_uverbs]
       ? uverbs_finalize_object+0x60/0x60 [ib_uverbs]
       ? ttwu_queue_wakelist+0xa9/0xe0
       ? pty_write+0x85/0x90
       ? file_tty_write.isra.33+0x214/0x330
       ? process_echoes+0x60/0x60
       ib_uverbs_ioctl+0xa7/0x110 [ib_uverbs]
       __x64_sys_ioctl+0x10d/0x8e0
       ? vfs_write+0x17f/0x260
       do_syscall_64+0x3c/0x80
       entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    Add the missing xarray initialization and remove the desc_size set.
    
    Fixes: a639e66703ee ("RDMA/mlx5: Zero out ODP related items in the mlx5_ib_mr")
    Link: https://lore.kernel.org/r/a4846a11c9de834663e521770da895007f9f0d30.1634642730.git.leonro@nvidia.com
    Signed-off-by: Aharon Landau <aharonl@nvidia.com>
    Reviewed-by: Maor Gottlieb <maorg@nvidia.com>
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ed894f5439ab6ad27b66941cc30b51708b809c1a
Author: Michael Chan <michael.chan@broadcom.com>
Date:   Mon Oct 25 05:05:28 2021 -0400

    net: Prevent infinite while loop in skb_tx_hash()
    
    commit 0c57eeecc559ca6bc18b8c4e2808bc78dbe769b0 upstream.
    
    Drivers call netdev_set_num_tc() and then netdev_set_tc_queue()
    to set the queue count and offset for each TC.  So the queue count
    and offset for the TCs may be zero for a short period after dev->num_tc
    has been set.  If a TX packet is being transmitted at this time in the
    code path netdev_pick_tx() -> skb_tx_hash(), skb_tx_hash() may see
    nonzero dev->num_tc but zero qcount for the TC.  The while loop that
    keeps looping while hash >= qcount will not end.
    
    Fix it by checking the TC's qcount to be nonzero before using it.
    
    Fixes: eadec877ce9c ("net: Add support for subordinate traffic classes to netdev_pick_tx")
    Reviewed-by: Andy Gospodarek <gospo@broadcom.com>
    Signed-off-by: Michael Chan <michael.chan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f435287d719b5d429c2b750a5a42da99c998b1f4
Author: Janusz Dziedzic <janusz.dziedzic@gmail.com>
Date:   Sun Oct 24 22:15:46 2021 +0200

    cfg80211: correct bridge/4addr mode check
    
    commit 689a0a9f505f7bffdefe6f17fddb41c8ab6344f6 upstream.
    
    Without the patch we fail:
    
    $ sudo brctl addbr br0
    $ sudo brctl addif br0 wlp1s0
    $ sudo iw wlp1s0 set 4addr on
    command failed: Device or resource busy (-16)
    
    Last command failed but iface was already in 4addr mode.
    
    Fixes: ad4bb6f8883a ("cfg80211: disallow bridging managed/adhoc interfaces")
    Signed-off-by: Janusz Dziedzic <janusz.dziedzic@gmail.com>
    Link: https://lore.kernel.org/r/20211024201546.614379-1-janusz.dziedzic@gmail.com
    [add fixes tag, fix indentation, edit commit log]
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit da279dac227a034595c99bb4294f951a08359640
Author: Xin Long <lucien.xin@gmail.com>
Date:   Mon Oct 25 02:31:48 2021 -0400

    net-sysfs: initialize uid and gid before calling net_ns_get_ownership
    
    commit f7a1e76d0f608961cc2fc681f867a834f2746bce upstream.
    
    Currently in net_ns_get_ownership() it may not be able to set uid or gid
    if make_kuid or make_kgid returns an invalid value, and an uninit-value
    issue can be triggered by this.
    
    This patch is to fix it by initializing the uid and gid before calling
    net_ns_get_ownership(), as it does in kobject_get_ownership()
    
    Fixes: e6dee9f3893c ("net-sysfs: add netdev_change_owner()")
    Reported-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Christian Brauner <christian.brauner@ubuntu.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a8f7359259dd5923adc6129284fdad12fc5db347
Author: Pavel Skripkin <paskripkin@gmail.com>
Date:   Sun Oct 24 16:13:56 2021 +0300

    net: batman-adv: fix error handling
    
    commit 6f68cd634856f8ca93bafd623ba5357e0f648c68 upstream.
    
    Syzbot reported ODEBUG warning in batadv_nc_mesh_free(). The problem was
    in wrong error handling in batadv_mesh_init().
    
    Before this patch batadv_mesh_init() was calling batadv_mesh_free() in case
    of any batadv_*_init() calls failure. This approach may work well, when
    there is some kind of indicator, which can tell which parts of batadv are
    initialized; but there isn't any.
    
    All written above lead to cleaning up uninitialized fields. Even if we hide
    ODEBUG warning by initializing bat_priv->nc.work, syzbot was able to hit
    GPF in batadv_nc_purge_paths(), because hash pointer in still NULL. [1]
    
    To fix these bugs we can unwind batadv_*_init() calls one by one.
    It is good approach for 2 reasons: 1) It fixes bugs on error handling
    path 2) It improves the performance, since we won't call unneeded
    batadv_*_free() functions.
    
    So, this patch makes all batadv_*_init() clean up all allocated memory
    before returning with an error to no call correspoing batadv_*_free()
    and open-codes batadv_mesh_free() with proper order to avoid touching
    uninitialized fields.
    
    Link: https://lore.kernel.org/netdev/000000000000c87fbd05cef6bcb0@google.com/ [1]
    Reported-and-tested-by: syzbot+28b0702ada0bf7381f58@syzkaller.appspotmail.com
    Fixes: c6c8fea29769 ("net: Add batman-adv meshing protocol")
    Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
    Acked-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 50cc1462a668dc62949a1127388bc3af785ce047
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Tue Oct 12 10:37:35 2021 +0800

    regmap: Fix possible double-free in regcache_rbtree_exit()
    
    commit 55e6d8037805b3400096d621091dfbf713f97e83 upstream.
    
    In regcache_rbtree_insert_to_block(), when 'present' realloc failed,
    the 'blk' which is supposed to assign to 'rbnode->block' will be freed,
    so 'rbnode->block' points a freed memory, in the error handling path of
    regcache_rbtree_init(), 'rbnode->block' will be freed again in
    regcache_rbtree_exit(), KASAN will report double-free as follows:
    
    BUG: KASAN: double-free or invalid-free in kfree+0xce/0x390
    Call Trace:
     slab_free_freelist_hook+0x10d/0x240
     kfree+0xce/0x390
     regcache_rbtree_exit+0x15d/0x1a0
     regcache_rbtree_init+0x224/0x2c0
     regcache_init+0x88d/0x1310
     __regmap_init+0x3151/0x4a80
     __devm_regmap_init+0x7d/0x100
     madera_spi_probe+0x10f/0x333 [madera_spi]
     spi_probe+0x183/0x210
     really_probe+0x285/0xc30
    
    To fix this, moving up the assignment of rbnode->block to immediately after
    the reallocation has succeeded so that the data structure stays valid even
    if the second reallocation fails.
    
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Fixes: 3f4ff561bc88b ("regmap: rbtree: Make cache_present bitmap per node")
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Link: https://lore.kernel.org/r/20211012023735.1632786-1-yangyingliang@huawei.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c9e39214fddf6daaa9b793656b47808e0d8c6b27
Author: Jim Quinlan <jim2101024@gmail.com>
Date:   Tue Sep 14 15:11:21 2021 -0700

    reset: brcmstb-rescal: fix incorrect polarity of status bit
    
    commit f33eb7f29c16ba78db3221ee02346fd832274cdd upstream.
    
    The readl_poll_timeout() should complete when the status bit
    is a 1, not 0.
    
    Fixes: 4cf176e52397 ("reset: Add Broadcom STB RESCAL reset controller")
    Signed-off-by: Jim Quinlan <jim2101024@gmail.com>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Link: https://lore.kernel.org/r/20210914221122.62315-1-f.fainelli@gmail.com
    Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 86f9394073d8665468599f6ffb62f522e540e145
Author: Clément Bœsch <u@pkh.me>
Date:   Sun Sep 5 02:20:27 2021 +0200

    arm64: dts: allwinner: h5: NanoPI Neo 2: Fix ethernet node
    
    commit 0764e365dacd0b8f75c1736f9236be280649bd18 upstream.
    
    RX and TX delay are provided by ethernet PHY. Reflect that in ethernet
    node.
    
    Fixes: 44a94c7ef989 ("arm64: dts: allwinner: H5: Restore EMAC changes")
    Signed-off-by: Clément Bœsch <u@pkh.me>
    Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Link: https://lore.kernel.org/r/20210905002027.171984-1-u@pkh.me
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 63a97a9f95f26fb64c72087bfbdce767f69929e6
Author: Yongxin Liu <yongxin.liu@windriver.com>
Date:   Mon Oct 11 15:02:16 2021 +0800

    ice: check whether PTP is initialized in ice_ptp_release()
    
    commit fd1b5beb177a8372cea2a0d014835491e4886f77 upstream.
    
    PTP is currently only supported on E810 devices, it is checked
    in ice_ptp_init(). However, there is no check in ice_ptp_release().
    For other E800 series devices, ice_ptp_release() will be wrongly executed.
    
    Fix the following calltrace.
    
      INFO: trying to register non-static key.
      The code is fine but needs lockdep annotation, or maybe
      you didn't initialize this object before use?
      turning off the locking correctness validator.
      Workqueue: ice ice_service_task [ice]
      Call Trace:
       dump_stack_lvl+0x5b/0x82
       dump_stack+0x10/0x12
       register_lock_class+0x495/0x4a0
       ? find_held_lock+0x3c/0xb0
       __lock_acquire+0x71/0x1830
       lock_acquire+0x1e6/0x330
       ? ice_ptp_release+0x3c/0x1e0 [ice]
       ? _raw_spin_lock+0x19/0x70
       ? ice_ptp_release+0x3c/0x1e0 [ice]
       _raw_spin_lock+0x38/0x70
       ? ice_ptp_release+0x3c/0x1e0 [ice]
       ice_ptp_release+0x3c/0x1e0 [ice]
       ice_prepare_for_reset+0xcb/0xe0 [ice]
       ice_do_reset+0x38/0x110 [ice]
       ice_service_task+0x138/0xf10 [ice]
       ? __this_cpu_preempt_check+0x13/0x20
       process_one_work+0x26a/0x650
       worker_thread+0x3f/0x3b0
       ? __kthread_parkme+0x51/0xb0
       ? process_one_work+0x650/0x650
       kthread+0x161/0x190
       ? set_kthread_struct+0x40/0x40
       ret_from_fork+0x1f/0x30
    
    Fixes: 4dd0d5c33c3e ("ice: add lock around Tx timestamp tracker flush")
    Signed-off-by: Yongxin Liu <yongxin.liu@windriver.com>
    Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
    Tested-by: Gurucharan G <gurucharanx.g@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ebd0edad1cdfc0cee05632ca032b4a36f54356bf
Author: Patrisious Haddad <phaddad@nvidia.com>
Date:   Wed Oct 6 12:31:53 2021 +0300

    RDMA/mlx5: Set user priority for DCT
    
    commit 1ab52ac1e9bc9391f592c9fa8340a6e3e9c36286 upstream.
    
    Currently, the driver doesn't set the PCP-based priority for DCT, hence
    DCT response packets are transmitted without user priority.
    
    Fix it by setting user provided priority in the eth_prio field in the DCT
    context, which in turn sets the value in the transmitted packet.
    
    Fixes: 776a3906b692 ("IB/mlx5: Add support for DC target QP")
    Link: https://lore.kernel.org/r/5fd2d94a13f5742d8803c218927322257d53205c.1633512672.git.leonro@nvidia.com
    Signed-off-by: Patrisious Haddad <phaddad@nvidia.com>
    Reviewed-by: Maor Gottlieb <maorg@nvidia.com>
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e83b3cce4722b880c277d44b13eebf2548cb2ebb
Author: Dave Ertman <david.m.ertman@intel.com>
Date:   Thu Oct 7 08:40:31 2021 -0700

    ice: Respond to a NETDEV_UNREGISTER event for LAG
    
    commit 6a8b357278f5f8b9817147277ab8f12879dce8a8 upstream.
    
    When the PF is a member of a link aggregate, and the driver
    is removed, the process will hang unless we respond to the
    NETDEV_UNREGISTER event that is sent to the event_handler
    for LAG.
    
    Add a case statement for the ice_lag_event_handler to unlink
    the PF from the link aggregate.
    
    Also remove code that was incorrectly applying a dev_hold to
    peer_netdevs that were associated with the ice driver.
    
    Fixes: df006dd4b1dc ("ice: Add initial support framework for LAG")
    Signed-off-by: Dave Ertman <david.m.ertman@intel.com>
    Tested-by: Tony Brelinski <tony.brelinski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f1e3cd1cc80204fd02b9e9843450925a2af90dc0
Author: Rakesh Babu Saladi <rsaladi2@marvell.com>
Date:   Wed Oct 27 23:02:34 2021 +0530

    octeontx2-af: Fix possible null pointer dereference.
    
    commit c2d4c543f74c90f883e8ec62a31973ae8807d354 upstream.
    
    This patch fixes possible null pointer dereference in files
    "rvu_debugfs.c" and "rvu_nix.c"
    
    Fixes: 8756828a8148 ("octeontx2-af: Add NPA aura and pool contexts to debugfs")
    Fixes: 9a946def264d ("octeontx2-af: Modify nix_vtag_cfg mailbox to support TX VTAG entries")
    Signed-off-by: Rakesh Babu Saladi <rsaladi2@marvell.com>
    Signed-off-by: Subbaraya Sundeep <sbhatta@marvell.com>
    Signed-off-by: Sunil Goutham <sgoutham@marvell.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 98db2a8c14be25ccba5babafbbe9d4312aacc08c
Author: Rakesh Babu <rsaladi2@marvell.com>
Date:   Wed Oct 27 23:02:33 2021 +0530

    octeontx2-af: Display all enabled PF VF rsrc_alloc entries.
    
    commit e77bcdd1f639809950c45234b08647ac6d3ffe7b upstream.
    
    Currently, we are using a fixed buffer size of length 2048 to display
    rsrc_alloc output. As a result a maximum of 2048 characters of
    rsrc_alloc output is displayed, which may lead sometimes to display only
    partial output. This patch fixes this dependency on max limit of buffer
    size and displays all PF VF entries.
    
    Each column of the debugfs entry "rsrc_alloc" uses a fixed width of 12
    characters to print the list of LFs of each block for a PF/VF. If the
    length of list of LFs of a block exceeds this fixed width then the list
    gets truncated and displays only a part of the list. This patch fixes
    this by using the maximum possible length of list of LFs among all
    blocks of all PFs and VFs entries as the width size.
    
    Fixes: f7884097141b ("octeontx2-af: Formatting debugfs entry rsrc_alloc.")
    Fixes: 23205e6d06d4 ("octeontx2-af: Dump current resource provisioning status")
    Signed-off-by: Rakesh Babu <rsaladi2@marvell.com>
    Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>
    Signed-off-by: Sunil Kovvuri Goutham <Sunil.Goutham@cavium.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c7752ec9ad39708c85859ada3417d85bc4b6cf69
Author: Varun Prakash <varun@chelsio.com>
Date:   Tue Oct 26 19:01:55 2021 +0530

    nvme-tcp: fix possible req->offset corruption
    
    commit ce7723e9cdae4eb3030da082876580f4b2dc0861 upstream.
    
    With commit db5ad6b7f8cd ("nvme-tcp: try to send request in queue_rq
    context") r2t and response PDU can get processed while send function
    is executing.
    
    Current data digest send code uses req->offset after kernel_sendmsg(),
    this creates a race condition where req->offset gets reset before it
    is used in send function.
    
    This can happen in two cases -
    1. Target sends r2t PDU which resets req->offset.
    2. Target send response PDU which completes the req and then req is
       used for a new command, nvme_tcp_setup_cmd_pdu() resets req->offset.
    
    Fix this by storing req->offset in a local variable and using
    this local variable after kernel_sendmsg().
    
    Fixes: db5ad6b7f8cd ("nvme-tcp: try to send request in queue_rq context")
    Signed-off-by: Varun Prakash <varun@chelsio.com>
    Reviewed-by: Keith Busch <kbusch@kernel.org>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7258a6eef5be5323554200237b9d222e1426b6b6
Author: Varun Prakash <varun@chelsio.com>
Date:   Mon Oct 25 22:47:30 2021 +0530

    nvme-tcp: fix data digest pointer calculation
    
    commit d89b9f3bbb58e9e378881209756b0723694f22ff upstream.
    
    ddgst is of type __le32, &req->ddgst + req->offset
    increases &req->ddgst by 4 * req->offset, fix this by
    type casting &req->ddgst to u8 *.
    
    Fixes: 3f2304f8c6d6 ("nvme-tcp: add NVMe over TCP host driver")
    Signed-off-by: Varun Prakash <varun@chelsio.com>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit daa12f0c1d1b0de5441c47effc9135a493d94ef7
Author: Varun Prakash <varun@chelsio.com>
Date:   Mon Oct 25 22:46:54 2021 +0530

    nvmet-tcp: fix data digest pointer calculation
    
    commit e790de54e94a7a15fb725b34724d41d41cbaa60c upstream.
    
    exp_ddgst is of type __le32, &cmd->exp_ddgst + cmd->offset increases
    &cmd->exp_ddgst by 4 * cmd->offset, fix this by type casting
    &cmd->exp_ddgst to u8 *.
    
    Fixes: 872d26a391da ("nvmet-tcp: add NVMe over TCP target driver")
    Signed-off-by: Varun Prakash <varun@chelsio.com>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5d33bd6b4d4d035e42733592899918a18f2540da
Author: Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
Date:   Wed Oct 13 10:18:52 2021 -0400

    IB/hfi1: Fix abba locking issue with sc_disable()
    
    commit 13bac861952a78664907a0f927d3e874e9a59034 upstream.
    
    sc_disable() after having disabled the send context wakes up any waiters
    by calling hfi1_qp_wakeup() while holding the waitlock for the sc.
    
    This is contrary to the model for all other calls to hfi1_qp_wakeup()
    where the waitlock is dropped and a local is used to drive calls to
    hfi1_qp_wakeup().
    
    Fix by moving the sc->piowait into a local list and driving the wakeup
    calls from the list.
    
    Fixes: 099a884ba4c0 ("IB/hfi1: Handle wakeup of orphaned QPs for pio")
    Link: https://lore.kernel.org/r/20211013141852.128104.2682.stgit@awfm-01.cornelisnetworks.com
    Signed-off-by: Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
    Reported-by: TOTE Robot <oslab@tsinghua.edu.cn>
    Signed-off-by: Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0d4395477741608d123dad51def9fe50b7ebe952
Author: Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
Date:   Tue Oct 12 13:55:19 2021 -0400

    IB/qib: Protect from buffer overflow in struct qib_user_sdma_pkt fields
    
    commit d39bf40e55e666b5905fdbd46a0dced030ce87be upstream.
    
    Overflowing either addrlimit or bytes_togo can allow userspace to trigger
    a buffer overflow of kernel memory. Check for overflows in all the places
    doing math on user controlled buffers.
    
    Fixes: f931551bafe1 ("IB/qib: Add new qib driver for QLogic PCIe InfiniBand adapters")
    Link: https://lore.kernel.org/r/20211012175519.7298.77738.stgit@awfm-01.cornelisnetworks.com
    Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
    Reviewed-by: Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>
    Signed-off-by: Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
    Signed-off-by: Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6525bfbd546f9bbbcbe0678b2985697a3a7b2bcb
Author: Xu Kuohai <xukuohai@huawei.com>
Date:   Tue Oct 19 03:29:34 2021 +0000

    bpf: Fix error usage of map_fd and fdget() in generic_map_update_batch()
    
    commit fda7a38714f40b635f5502ec4855602c6b33dad2 upstream.
    
    1. The ufd in generic_map_update_batch() should be read from batch.map_fd;
    2. A call to fdget() should be followed by a symmetric call to fdput().
    
    Fixes: aa2e93b8e58e ("bpf: Add generic support for update and delete batch ops")
    Signed-off-by: Xu Kuohai <xukuohai@huawei.com>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Link: https://lore.kernel.org/bpf/20211019032934.1210517-1-xukuohai@huawei.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit adb17f828177f1f5811812b85558060a8a08df72
Author: Toke Høiland-Jørgensen <toke@redhat.com>
Date:   Tue Oct 26 13:00:19 2021 +0200

    bpf: Fix potential race in tail call compatibility check
    
    commit 54713c85f536048e685258f880bf298a74c3620d upstream.
    
    Lorenzo noticed that the code testing for program type compatibility of
    tail call maps is potentially racy in that two threads could encounter a
    map with an unset type simultaneously and both return true even though they
    are inserting incompatible programs.
    
    The race window is quite small, but artificially enlarging it by adding a
    usleep_range() inside the check in bpf_prog_array_compatible() makes it
    trivial to trigger from userspace with a program that does, essentially:
    
            map_fd = bpf_create_map(BPF_MAP_TYPE_PROG_ARRAY, 4, 4, 2, 0);
            pid = fork();
            if (pid) {
                    key = 0;
                    value = xdp_fd;
            } else {
                    key = 1;
                    value = tc_fd;
            }
            err = bpf_map_update_elem(map_fd, &key, &value, 0);
    
    While the race window is small, it has potentially serious ramifications in
    that triggering it would allow a BPF program to tail call to a program of a
    different type. So let's get rid of it by protecting the update with a
    spinlock. The commit in the Fixes tag is the last commit that touches the
    code in question.
    
    v2:
    - Use a spinlock instead of an atomic variable and cmpxchg() (Alexei)
    v3:
    - Put lock and the members it protects into an embedded 'owner' struct (Daniel)
    
    Fixes: 3324b584b6f6 ("ebpf: misc core cleanup")
    Reported-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
    Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Link: https://lore.kernel.org/bpf/20211026110019.363464-1-toke@redhat.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6f226ffe4458ea3b8c33287cb8c86f87dc198dce
Author: Liu Jian <liujian56@huawei.com>
Date:   Tue Oct 12 13:20:19 2021 +0800

    tcp_bpf: Fix one concurrency problem in the tcp_bpf_send_verdict function
    
    commit cd9733f5d75c94a32544d6ce5be47e14194cf137 upstream.
    
    With two Msgs, msgA and msgB and a user doing nonblocking sendmsg calls (or
    multiple cores) on a single socket 'sk' we could get the following flow.
    
     msgA, sk                               msgB, sk
     -----------                            ---------------
     tcp_bpf_sendmsg()
     lock(sk)
     psock = sk->psock
                                            tcp_bpf_sendmsg()
                                            lock(sk) ... blocking
    tcp_bpf_send_verdict
    if (psock->eval == NONE)
       psock->eval = sk_psock_msg_verdict
     ..
     < handle SK_REDIRECT case >
       release_sock(sk)                     < lock dropped so grab here >
       ret = tcp_bpf_sendmsg_redir
                                            psock = sk->psock
                                            tcp_bpf_send_verdict
     lock_sock(sk) ... blocking on B
                                            if (psock->eval == NONE) <- boom.
                                             psock->eval will have msgA state
    
    The problem here is we dropped the lock on msgA and grabbed it with msgB.
    Now we have old state in psock and importantly psock->eval has not been
    cleared. So msgB will run whatever action was done on A and the verdict
    program may never see it.
    
    Fixes: 604326b41a6fb ("bpf, sockmap: convert to generic sk_msg interface")
    Signed-off-by: Liu Jian <liujian56@huawei.com>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Acked-by: John Fastabend <john.fastabend@gmail.com>
    Link: https://lore.kernel.org/bpf/20211012052019.184398-1-liujian56@huawei.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e1b80a5ebe5431caeb20f88c32d4a024777a2d41
Author: Björn Töpel <bjorn@kernel.org>
Date:   Thu Oct 28 14:51:15 2021 +0200

    riscv, bpf: Fix potential NULL dereference
    
    commit 27de809a3d83a6199664479ebb19712533d6fd9b upstream.
    
    The bpf_jit_binary_free() function requires a non-NULL argument. When
    the RISC-V BPF JIT fails to converge in NR_JIT_ITERATIONS steps,
    jit_data->header will be NULL, which triggers a NULL
    dereference. Avoid this by checking the argument, prior calling the
    function.
    
    Fixes: ca6cb5447cec ("riscv, bpf: Factor common RISC-V JIT code")
    Signed-off-by: Björn Töpel <bjorn@kernel.org>
    Acked-by: Daniel Borkmann <daniel@iogearbox.net>
    Link: https://lore.kernel.org/r/20211028125115.514587-1-bjorn@kernel.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b529f88d93884cf8ccafda793ee3d27b82fa578d
Author: Quanyang Wang <quanyang.wang@windriver.com>
Date:   Mon Oct 18 15:56:23 2021 +0800

    cgroup: Fix memory leak caused by missing cgroup_bpf_offline
    
    commit 04f8ef5643bcd8bcde25dfdebef998aea480b2ba upstream.
    
    When enabling CONFIG_CGROUP_BPF, kmemleak can be observed by running
    the command as below:
    
        $mount -t cgroup -o none,name=foo cgroup cgroup/
        $umount cgroup/
    
    unreferenced object 0xc3585c40 (size 64):
      comm "mount", pid 425, jiffies 4294959825 (age 31.990s)
      hex dump (first 32 bytes):
        01 00 00 80 84 8c 28 c0 00 00 00 00 00 00 00 00  ......(.........
        00 00 00 00 00 00 00 00 6c 43 a0 c3 00 00 00 00  ........lC......
      backtrace:
        [<e95a2f9e>] cgroup_bpf_inherit+0x44/0x24c
        [<1f03679c>] cgroup_setup_root+0x174/0x37c
        [<ed4b0ac5>] cgroup1_get_tree+0x2c0/0x4a0
        [<f85b12fd>] vfs_get_tree+0x24/0x108
        [<f55aec5c>] path_mount+0x384/0x988
        [<e2d5e9cd>] do_mount+0x64/0x9c
        [<208c9cfe>] sys_mount+0xfc/0x1f4
        [<06dd06e0>] ret_fast_syscall+0x0/0x48
        [<a8308cb3>] 0xbeb4daa8
    
    This is because that since the commit 2b0d3d3e4fcf ("percpu_ref: reduce
    memory footprint of percpu_ref in fast path") root_cgrp->bpf.refcnt.data
    is allocated by the function percpu_ref_init in cgroup_bpf_inherit which
    is called by cgroup_setup_root when mounting, but not freed along with
    root_cgrp when umounting. Adding cgroup_bpf_offline which calls
    percpu_ref_kill to cgroup_kill_sb can free root_cgrp->bpf.refcnt.data in
    umount path.
    
    This patch also fixes the commit 4bfc0bb2c60e ("bpf: decouple the lifetime
    of cgroup_bpf from cgroup itself"). A cgroup_bpf_offline is needed to do a
    cleanup that frees the resources which are allocated by cgroup_bpf_inherit
    in cgroup_setup_root.
    
    And inside cgroup_bpf_offline, cgroup_get() is at the beginning and
    cgroup_put is at the end of cgroup_bpf_release which is called by
    cgroup_bpf_offline. So cgroup_bpf_offline can keep the balance of
    cgroup's refcount.
    
    Fixes: 2b0d3d3e4fcf ("percpu_ref: reduce memory footprint of percpu_ref in fast path")
    Fixes: 4bfc0bb2c60e ("bpf: decouple the lifetime of cgroup_bpf from cgroup itself")
    Signed-off-by: Quanyang Wang <quanyang.wang@windriver.com>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Acked-by: Roman Gushchin <guro@fb.com>
    Acked-by: John Fastabend <john.fastabend@gmail.com>
    Link: https://lore.kernel.org/bpf/20211018075623.26884-1-quanyang.wang@windriver.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b7ca59297fa34fa01ca69e6e4848e1694a6465f7
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Thu Oct 7 17:33:02 2021 -0700

    Revert "watchdog: iTCO_wdt: Account for rebooting on second timeout"
    
    commit 6e7733ef0bb9372d5491168635f6ecba8ac3cb8a upstream.
    
    This reverts commit cb011044e34c ("watchdog: iTCO_wdt: Account for
    rebooting on second timeout") and commit aec42642d91f ("watchdog: iTCO_wdt:
    Fix detection of SMI-off case") since those patches cause a regression
    on certain boards (https://bugzilla.kernel.org/show_bug.cgi?id=213809).
    
    While this revert may result in some boards to only reset after twice
    the configured timeout value, that is still better than a watchdog reset
    after half the configured value.
    
    Fixes: cb011044e34c ("watchdog: iTCO_wdt: Account for rebooting on second timeout")
    Fixes: aec42642d91f ("watchdog: iTCO_wdt: Fix detection of SMI-off case")
    Cc: Jan Kiszka <jan.kiszka@siemens.com>
    Cc: Mantas Mikulėnas <grawity@gmail.com>
    Reported-by: Javier S. Pedro <debbugs@javispedro.com>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Link: https://lore.kernel.org/r/20211008003302.1461733-1-linux@roeck-us.net
    Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0a8b7eba95a0d94697ea95775829b4265b78014b
Author: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Date:   Fri Oct 22 16:14:24 2021 -0400

    drm/amd/display: Fix deadlock when falling back to v2 from v3
    
    commit ad76744b041d8c87ef1c9adbb04fb7eaa20a179e upstream.
    
    [Why]
    A deadlock in the kernel occurs when we fallback from the V3 to V2
    add_topology_to_display or remove_topology_to_display because they
    both try to acquire the dtm_mutex but recursive locking isn't
    supported on mutex_lock().
    
    [How]
    Make the mutex_lock/unlock more fine grained and move them up such that
    they're only required for the psp invocation itself.
    
    Fixes: bf62221e9d0e ("drm/amd/display: Add DCN3.1 HDCP support")
    
    Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
    Reviewed-by: Aric Cyr <aric.cyr@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a363d80566ccb1bbc3df30c9f709df5f3af0a8ef
Author: Michael Strauss <michael.strauss@amd.com>
Date:   Thu Oct 21 13:27:16 2021 -0400

    drm/amd/display: Fallback to clocks which meet requested voltage on DCN31
    
    commit 54149d13f369e1ab02f36b91feee02069184c1d8 upstream.
    
    [WHY]
    On certain configs, SMU clock table voltages don't match which cause parser
    to behave incorrectly by leaving dcfclk and socclk table entries unpopulated.
    
    [HOW]
    Currently the function that finds the corresponding clock for a given voltage
    only checks for exact voltage level matches. In the case that no match gets
    found, parser now falls back to searching for the max clock which meets the
    requested voltage (i.e. its corresponding voltage is below requested).
    
    Signed-off-by: Michael Strauss <michael.strauss@amd.com>
    Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aeadb0662478cafb705ede4ac696a59023b5d2c6
Author: Jake Wang <haonan.wang2@amd.com>
Date:   Fri Oct 1 17:14:21 2021 -0400

    drm/amd/display: Moved dccg init to after bios golden init
    
    commit 2ef8ea23942f4c2569930c34e7689a0cb1b232cc upstream.
    
    [Why]
    bios_golden_init will override dccg_init during init_hw.
    
    [How]
    Move dccg_init to after bios_golden_init.
    
    Reviewed-by: Aric Cyr <Aric.Cyr@amd.com>
    Reviewed-by: Eric Yang <eric.yang2@amd.com>
    Acked-by: Agustin Gutierrez Sanchez <agustin.gutierrez@amd.com>
    Signed-off-by: Jake Wang <haonan.wang2@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5a5f1f070c3e3754c7f6f99363fe0b788bc5dec5
Author: Nikola Cornij <nikola.cornij@amd.com>
Date:   Fri Oct 1 13:26:05 2021 -0400

    drm/amd/display: Increase watermark latencies for DCN3.1
    
    commit dd8cb18906d97b2916fde42d32d915ae363c7e55 upstream.
    
    [why]
    The original latencies were causing underflow in some modes
    
    [how]
    Replace with the up-to-date watermark values based on new measurments
    
    Reviewed-by: Ahmad Othman <ahmad.othman@amd.com>
    Acked-by: Agustin Gutierrez Sanchez <agustin.gutierrez@amd.com>
    Signed-off-by: Nikola Cornij <nikola.cornij@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 85cf47160d0eb6eca784dc4848efcf30b18d5a2f
Author: Eric Yang <Eric.Yang2@amd.com>
Date:   Thu Sep 30 13:46:45 2021 -0400

    drm/amd/display: increase Z9 latency to workaround underflow in Z9
    
    commit 4835ea6c173a8d8dfbfdbb21c4cd987d12681610 upstream.
    
    [Why]
    Z9 latency is higher than when we originally tuned the watermark
    parameters, causing underflow. Increasing the value until the latency
    issues is resolved.
    
    Reviewed-by: Nicholas Kazlauskas <Nicholas.Kazlauskas@amd.com>
    Acked-by: Agustin Gutierrez Sanchez <agustin.gutierrez@amd.com>
    Signed-off-by: Eric Yang <Eric.Yang2@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 01f39421d590713e0cc0cf0f9d2b8c35246285a9
Author: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Date:   Wed Sep 29 11:37:33 2021 -0400

    drm/amd/display: Fix prefetch bandwidth calculation for DCN3.1
    
    commit c938aed88f8259dc913b717a32319101c66e87a9 upstream.
    
    [Why]
    Prefetch BW calculated is lower than the DML reference because of a
    porting error that's excluding cursor and row bandwidth from the
    pixel data bandwidth.
    
    [How]
    Change the dml_max4 to dml_max3 and include cursor and row bandwidth
    in the same calculation as the rest of the pixel data during vactive.
    
    Reviewed-by: Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
    Acked-by: Agustin Gutierrez Sanchez <agustin.gutierrez@amd.com>
    Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b60efcaf5e8b49dcf679e1ddf2a9ad333b21ea53
Author: Nikola Cornij <nikola.cornij@amd.com>
Date:   Tue Sep 28 22:43:52 2021 -0400

    drm/amd/display: Limit display scaling to up to true 4k for DCN 3.1
    
    commit c21b105380cf86e829c68586ca1315cfc253ad8c upstream.
    
    [why]
    The requirement is that image width up to 4096 shall be supported
    
    Reviewed-by: Aric Cyr <Aric.Cyr@amd.com>
    Acked-by: Agustin Gutierrez Sanchez <agustin.gutierrez@amd.com>
    Signed-off-by: Nikola Cornij <nikola.cornij@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c3ae5cf3e3ee2bc250371e3fabb51ba7fbbfba52
Author: Aaron Liu <aaron.liu@amd.com>
Date:   Tue Oct 19 11:13:25 2021 +0800

    drm/amdgpu: support B0&B1 external revision id for yellow carp
    
    commit 53c2ff8bcb06acd07e24a62e7f5a0247bd7c6f67 upstream.
    
    B0 internal rev_id is 0x01, B1 internal rev_id is 0x02.
    The external rev_id for B0 and B1 is 0x20.
    The original expression is not suitable for B1.
    
    v2: squash in fix for display code (Alex)
    
    Signed-off-by: Aaron Liu <aaron.liu@amd.com>
    Reviewed-by: Huang Rui <ray.huang@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d3ed72495a59fbfb9377450c8dfe94389a6509a7
Author: Thelford Williams <tdwilliamsiv@gmail.com>
Date:   Wed Oct 13 16:04:13 2021 -0400

    drm/amdgpu: fix out of bounds write
    
    commit 5afa7898ab7a0ec9c28556a91df714bf3c2f725e upstream.
    
    Size can be any value and is user controlled resulting in overwriting the
    40 byte array wr_buf with an arbitrary length of data from buf.
    
    Signed-off-by: Thelford Williams <tdwilliamsiv@gmail.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9eb4bdd554fc31a5ef6bf645a20ff21618ce45a9
Author: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
Date:   Wed Oct 27 16:27:30 2021 +0200

    drm/amdgpu: Fix even more out of bound writes from debugfs
    
    commit 3f4e54bd312d3dafb59daf2b97ffa08abebe60f5 upstream.
    
    CVE-2021-42327 was fixed by:
    
    commit f23750b5b3d98653b31d4469592935ef6364ad67
    Author: Thelford Williams <tdwilliamsiv@gmail.com>
    Date:   Wed Oct 13 16:04:13 2021 -0400
    
        drm/amdgpu: fix out of bounds write
    
    but amdgpu_dm_debugfs.c contains more of the same issue so fix the
    remaining ones.
    
    v2:
            * Add missing fix in dp_max_bpc_write (Harry Wentland)
    
    Fixes: 918698d5c2b5 ("drm/amd/display: Return the number of bytes parsed than allocated")
    Signed-off-by: Patrik Jakobsson <pjakobsson@suse.de>
    Reviewed-by: Harry Wentland <harry.wentland@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d87ac6054e3de2220c556af8641cb1b66dbfd692
Author: Imre Deak <imre.deak@intel.com>
Date:   Mon Oct 18 12:41:49 2021 +0300

    drm/i915/dp: Skip the HW readout of DPCD on disabled encoders
    
    commit 6e6f96630805874fa80b0067e1a57aafc06225f6 upstream.
    
    Reading out the DP encoders' DPCD during booting or resume is only
    required for enabled encoders: such encoders may be modesetted during
    the initial commit and the link training this involves depends on an
    initialized DPCD. For DDI encoders reading out the DPCD is skipped, do
    the same on pre-DDI platforms.
    
    Atm, the first DPCD readout without a sink connected - which is a likely
    scneario if the encoder is disabled - leaves intel_dp->num_common_rates
    at 0, which resulted in
    
    intel_dp_sync_state()->intel_dp_max_common_rate()
    
    in a
    
    intel_dp->common_rates[-1]
    
    access. This by definition results in an undefined behaviour, though to
    my best knowledge in all HW/compiler configurations it actually results
    in accessing the array item type value preceding the array. In this
    case the preceding value happens to be intel_dp->num_common_rates,
    which is 0, so this issue - by luck - didn't cause a user visible
    problem.
    
    Nevertheless it's still an undefined behaviour and in CONFIG_UBSAN
    builds leads to a kernel BUG() (which revealed this problem for us),
    hence CC:stable.
    
    A related problem in case the encoder is enabled but the sink is not
    connected or the DPCD readout fails is fixed by the next patch.
    
    v2: Amend the commit message describing the root cause of the
        CONFIG_UBSAN BUG().
    
    Fixes: a532cde31de3 ("drm/i915/tc: Fix TypeC port init/resume time sanitization")
    References: https://gitlab.freedesktop.org/drm/intel/-/issues/4297
    Reported-and-tested-by: Mat Jonczyk <mat.jonczyk@o2.pl>
    Cc: Mat Jonczyk <mat.jonczyk@o2.pl>
    Cc: José Roberto de Souza <jose.souza@intel.com>
    Cc: Jani Nikula <jani.nikula@intel.com>
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Imre Deak <imre.deak@intel.com>
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Acked-by: Jani Nikula <jani.nikula@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20211018094154.1407705-2-imre.deak@intel.com
    (cherry picked from commit 4ec5ffc341cecbea060739aea1d53398ac2ec3f8)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7650327e71749aefb09f25b50410aa0e7e350428
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Thu Oct 14 12:09:40 2021 +0300

    drm/i915: Catch yet another unconditioal clflush
    
    commit 9761ffb8f1090289b908590039e2c363cc35cf45 upstream.
    
    Replace the unconditional clflush() with drm_clflush_virt_range()
    which does the wbinvd() fallback when clflush is not available.
    
    This time no justification is given for the clflush in the
    offending commit.
    
    Cc: stable@vger.kernel.org
    Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
    Fixes: 2c8ab3339e39 ("drm/i915: Pin timeline map after first timeline pin, v4.")
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20211014090941.12159-4-ville.syrjala@linux.intel.com
    Reviewed-by: Dave Airlie <airlied@redhat.com>
    (cherry picked from commit 9ced12182d0d8401d821e9602e56e276459900fc)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0ed2dfb5f598578a0799f8ab026372e2809859b7
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Thu Oct 14 12:09:39 2021 +0300

    drm/i915: Convert unconditional clflush to drm_clflush_virt_range()
    
    commit fcf918ffd3b35e288097036c04af7446b2c6f2f1 upstream.
    
    This one is apparently a "clflush for good measure", so bit more
    justification (if you can call it that) than some of the others.
    Convert to drm_clflush_virt_range() again so that machines without
    clflush will survive the ordeal.
    
    Cc: stable@vger.kernel.org
    Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Cc: Thomas Hellström <thomas.hellstrom@intel.com> #v1
    Fixes: 12ca695d2c1e ("drm/i915: Do not share hwsp across contexts any more, v8.")
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20211014090941.12159-3-ville.syrjala@linux.intel.com
    Reviewed-by: Dave Airlie <airlied@redhat.com>
    (cherry picked from commit af7b6d234eefa30c461cc16912bafb32b9e6141c)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 132a3d998d6753047f22152731fba2b0d6b463dd
Author: Christian König <christian.koenig@amd.com>
Date:   Wed Oct 20 19:19:46 2021 +0200

    drm/ttm: fix memleak in ttm_transfered_destroy
    
    commit 0db55f9a1bafbe3dac750ea669de9134922389b5 upstream.
    
    We need to cleanup the fences for ghost objects as well.
    
    Signed-off-by: Christian König <christian.koenig@amd.com>
    Reported-by: Erhard F. <erhard_f@mailbox.org>
    Tested-by: Erhard F. <erhard_f@mailbox.org>
    Reviewed-by: Huang Rui <ray.huang@amd.com>
    Bug: https://bugzilla.kernel.org/show_bug.cgi?id=214029
    Bug: https://bugzilla.kernel.org/show_bug.cgi?id=214447
    CC: <stable@vger.kernel.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/20211020173211.2247-1-christian.koenig@amd.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 15a4f2bdbdfd7bbe89dec23da01c706a31623f09
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Thu Sep 30 13:11:20 2021 +0200

    mac80211: mesh: fix HE operation element length check
    
    commit 636707e593120c9fa35f6a908c0d052f6154910d upstream.
    
    The length check here was bad, if the length doesn't at
    least include the length of the fixed part, we cannot
    call ieee80211_he_oper_size() to determine the total.
    Fix this, and convert to cfg80211_find_ext_elem() while
    at it.
    
    Cc: stable@vger.kernel.org
    Fixes: 70debba3ab7d ("mac80211: save HE oper info in BSS config for mesh")
    Link: https://lore.kernel.org/r/20210930131120.b0f940976c56.I954e1be55e9f87cc303165bff5c906afe1e54648@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ce277959d77c4cb8b794afab342c3ac24159dc9d
Author: Frieder Schrempf <frieder.schrempf@kontron.de>
Date:   Fri Oct 15 14:48:36 2021 +0200

    arm64: dts: imx8mm-kontron: Make sure SOC and DRAM supply voltages are correct
    
    commit 82a4f329b133ad0de66bee12c0be5c67bb8aa188 upstream.
    
    It looks like the voltages for the SOC and DRAM supply weren't properly
    validated before. The datasheet and uboot-imx code tells us that VDD_SOC
    should be 800 mV in suspend and 850 mV in run mode. VDD_DRAM should be
    950 mV for DDR clock frequencies of up to 1.5 GHz.
    
    Let's fix these values to make sure the voltages are within the required
    range.
    
    Fixes: 8668d8b2e67f ("arm64: dts: Add the Kontron i.MX8M Mini SoMs and baseboards")
    Cc: stable@vger.kernel.org
    Signed-off-by: Frieder Schrempf <frieder.schrempf@kontron.de>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8c684aaceaf3a3b0ed413614c9ecf816608998c2
Author: Frieder Schrempf <frieder.schrempf@kontron.de>
Date:   Fri Oct 15 14:48:37 2021 +0200

    arm64: dts: imx8mm-kontron: Set lower limit of VDD_SNVS to 800 mV
    
    commit 256a24eba7f897c817fb0103dac73467d3789202 upstream.
    
    According to the datasheet the typical value for VDD_SNVS should be
    800 mV, so let's make sure that this is within the range of the
    regulator.
    
    Fixes: 8668d8b2e67f ("arm64: dts: Add the Kontron i.MX8M Mini SoMs and baseboards")
    Cc: stable@vger.kernel.org
    Signed-off-by: Frieder Schrempf <frieder.schrempf@kontron.de>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f5eaf91dd8af312762dfc6ec5a7ed54247346e2c
Author: Frieder Schrempf <frieder.schrempf@kontron.de>
Date:   Fri Oct 15 14:48:40 2021 +0200

    arm64: dts: imx8mm-kontron: Fix connection type for VSC8531 RGMII PHY
    
    commit 0b28c41e3c951ea3d4f012cfa9da5ebd6512cf6e upstream.
    
    Previously we falsely relied on the PHY driver to unconditionally
    enable the internal RX delay. Since the following fix for the PHY
    driver this is not the case anymore:
    
    commit 7b005a1742be ("net: phy: mscc: configure both RX and TX internal
    delays for RGMII")
    
    In order to enable the delay we need to set the connection type to
    "rgmii-rxid". Without the RX delay the ethernet is not functional at
    all.
    
    Fixes: 8668d8b2e67f ("arm64: dts: Add the Kontron i.MX8M Mini SoMs and baseboards")
    Cc: stable@vger.kernel.org
    Signed-off-by: Frieder Schrempf <frieder.schrempf@kontron.de>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit da32086a020346c156cd736a075e45c29c9cedb5
Author: Frieder Schrempf <frieder.schrempf@kontron.de>
Date:   Fri Oct 15 14:48:39 2021 +0200

    arm64: dts: imx8mm-kontron: Fix CAN SPI clock frequency
    
    commit ca6f9d85d5944046a241b325700c1ca395651c28 upstream.
    
    The MCP2515 can be used with an SPI clock of up to 10 MHz. Set the
    limit accordingly to prevent any performance issues caused by the
    really low clock speed of 100 kHz.
    
    This removes the arbitrarily low limit on the SPI frequency, that was
    caused by a typo in the original dts.
    
    Without this change, receiving CAN messages on the board beyond a
    certain bitrate will cause overrun errors (see 'ip -det -stat link show
    can0').
    
    With this fix, receiving messages on the bus works without any overrun
    errors for bitrates up to 1 MBit.
    
    Fixes: 8668d8b2e67f ("arm64: dts: Add the Kontron i.MX8M Mini SoMs and baseboards")
    Cc: stable@vger.kernel.org
    Signed-off-by: Frieder Schrempf <frieder.schrempf@kontron.de>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d2bdcd23cba9ba1dbac0d0439655772710a6b244
Author: Frieder Schrempf <frieder.schrempf@kontron.de>
Date:   Fri Oct 15 14:48:38 2021 +0200

    arm64: dts: imx8mm-kontron: Fix polarity of reg_rst_eth2
    
    commit 6562d6e350284307e33ea10c7f46a6661ff22770 upstream.
    
    The regulator reg_rst_eth2 should keep the reset signal of the USB ethernet
    adapter deasserted anytime. Fix the polarity and mark it as always-on.
    
    Anyway, using the regulator is only a workaround for the missing support of
    specifying a reset GPIO for USB devices in a generic way. As we don't
    have a solution for this at the moment, at least fix the current
    workaround.
    
    Fixes: 8668d8b2e67f ("arm64: dts: Add the Kontron i.MX8M Mini SoMs and baseboards")
    Cc: stable@vger.kernel.org
    Signed-off-by: Frieder Schrempf <frieder.schrempf@kontron.de>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5fcb6fce74ffa614d964667110cf1a516c48c6d9
Author: Yang Shi <shy828301@gmail.com>
Date:   Thu Oct 28 14:36:30 2021 -0700

    mm: khugepaged: skip huge page collapse for special files
    
    commit a4aeaa06d45e90f9b279f0b09de84bd00006e733 upstream.
    
    The read-only THP for filesystems will collapse THP for files opened
    readonly and mapped with VM_EXEC.  The intended usecase is to avoid TLB
    misses for large text segments.  But it doesn't restrict the file types
    so a THP could be collapsed for a non-regular file, for example, block
    device, if it is opened readonly and mapped with EXEC permission.  This
    may cause bugs, like [1] and [2].
    
    This is definitely not the intended usecase, so just collapse THP for
    regular files in order to close the attack surface.
    
    [shy828301@gmail.com: fix vm_file check [3]]
    
    Link: https://lore.kernel.org/lkml/CACkBjsYwLYLRmX8GpsDpMthagWOjWWrNxqY6ZLNQVr6yx+f5vA@mail.gmail.com/ [1]
    Link: https://lore.kernel.org/linux-mm/000000000000c6a82505ce284e4c@google.com/ [2]
    Link: https://lkml.kernel.org/r/CAHbLzkqTW9U3VvTu1Ki5v_cLRC9gHW+znBukg_ycergE0JWj-A@mail.gmail.com [3]
    Link: https://lkml.kernel.org/r/20211027195221.3825-1-shy828301@gmail.com
    Fixes: 99cb0dbd47a1 ("mm,thp: add read-only THP support for (non-shmem) FS")
    Signed-off-by: Hugh Dickins <hughd@google.com>
    Signed-off-by: Yang Shi <shy828301@gmail.com>
    Reported-by: Hao Sun <sunhao.th@gmail.com>
    Reported-by: syzbot+aae069be1de40fb11825@syzkaller.appspotmail.com
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Song Liu <songliubraving@fb.com>
    Cc: Andrea Righi <andrea.righi@canonical.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5e669d8ab30ab61dec3c36e27b4711f07611e6fc
Author: Rongwei Wang <rongwei.wang@linux.alibaba.com>
Date:   Thu Oct 28 14:36:27 2021 -0700

    mm, thp: bail out early in collapse_file for writeback page
    
    commit 74c42e1baacf206338b1dd6b6199ac964512b5bb upstream.
    
    Currently collapse_file does not explicitly check PG_writeback, instead,
    page_has_private and try_to_release_page are used to filter writeback
    pages.  This does not work for xfs with blocksize equal to or larger
    than pagesize, because in such case xfs has no page->private.
    
    This makes collapse_file bail out early for writeback page.  Otherwise,
    xfs end_page_writeback will panic as follows.
    
      page:fffffe00201bcc80 refcount:0 mapcount:0 mapping:ffff0003f88c86a8 index:0x0 pfn:0x84ef32
      aops:xfs_address_space_operations [xfs] ino:30000b7 dentry name:"libtest.so"
      flags: 0x57fffe0000008027(locked|referenced|uptodate|active|writeback)
      raw: 57fffe0000008027 ffff80001b48bc28 ffff80001b48bc28 ffff0003f88c86a8
      raw: 0000000000000000 0000000000000000 00000000ffffffff ffff0000c3e9a000
      page dumped because: VM_BUG_ON_PAGE(((unsigned int) page_ref_count(page) + 127u <= 127u))
      page->mem_cgroup:ffff0000c3e9a000
      ------------[ cut here ]------------
      kernel BUG at include/linux/mm.h:1212!
      Internal error: Oops - BUG: 0 [#1] SMP
      Modules linked in:
      BUG: Bad page state in process khugepaged  pfn:84ef32
       xfs(E)
      page:fffffe00201bcc80 refcount:0 mapcount:0 mapping:0 index:0x0 pfn:0x84ef32
       libcrc32c(E) rfkill(E) aes_ce_blk(E) crypto_simd(E) ...
      CPU: 25 PID: 0 Comm: swapper/25 Kdump: loaded Tainted: ...
      pstate: 60400005 (nZCv daif +PAN -UAO -TCO BTYPE=--)
      Call trace:
        end_page_writeback+0x1c0/0x214
        iomap_finish_page_writeback+0x13c/0x204
        iomap_finish_ioend+0xe8/0x19c
        iomap_writepage_end_bio+0x38/0x50
        bio_endio+0x168/0x1ec
        blk_update_request+0x278/0x3f0
        blk_mq_end_request+0x34/0x15c
        virtblk_request_done+0x38/0x74 [virtio_blk]
        blk_done_softirq+0xc4/0x110
        __do_softirq+0x128/0x38c
        __irq_exit_rcu+0x118/0x150
        irq_exit+0x1c/0x30
        __handle_domain_irq+0x8c/0xf0
        gic_handle_irq+0x84/0x108
        el1_irq+0xcc/0x180
        arch_cpu_idle+0x18/0x40
        default_idle_call+0x4c/0x1a0
        cpuidle_idle_call+0x168/0x1e0
        do_idle+0xb4/0x104
        cpu_startup_entry+0x30/0x9c
        secondary_start_kernel+0x104/0x180
      Code: d4210000 b0006161 910c8021 94013f4d (d4210000)
      ---[ end trace 4a88c6a074082f8c ]---
      Kernel panic - not syncing: Oops - BUG: Fatal exception in interrupt
    
    Link: https://lkml.kernel.org/r/20211022023052.33114-1-rongwei.wang@linux.alibaba.com
    Fixes: 99cb0dbd47a1 ("mm,thp: add read-only THP support for (non-shmem) FS")
    Signed-off-by: Rongwei Wang <rongwei.wang@linux.alibaba.com>
    Signed-off-by: Xu Yu <xuyu@linux.alibaba.com>
    Suggested-by: Yang Shi <shy828301@gmail.com>
    Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org>
    Reviewed-by: Yang Shi <shy828301@gmail.com>
    Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Song Liu <song@kernel.org>
    Cc: William Kucharski <william.kucharski@oracle.com>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Mike Kravetz <mike.kravetz@oracle.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6ac017254b597709f39a083e1b1dfe09ef684f04
Author: Yang Shi <shy828301@gmail.com>
Date:   Thu Oct 28 14:36:11 2021 -0700

    mm: filemap: check if THP has hwpoisoned subpage for PMD page fault
    
    commit eac96c3efdb593df1a57bb5b95dbe037bfa9a522 upstream.
    
    When handling shmem page fault the THP with corrupted subpage could be
    PMD mapped if certain conditions are satisfied.  But kernel is supposed
    to send SIGBUS when trying to map hwpoisoned page.
    
    There are two paths which may do PMD map: fault around and regular
    fault.
    
    Before commit f9ce0be71d1f ("mm: Cleanup faultaround and finish_fault()
    codepaths") the thing was even worse in fault around path.  The THP
    could be PMD mapped as long as the VMA fits regardless what subpage is
    accessed and corrupted.  After this commit as long as head page is not
    corrupted the THP could be PMD mapped.
    
    In the regular fault path the THP could be PMD mapped as long as the
    corrupted page is not accessed and the VMA fits.
    
    This loophole could be fixed by iterating every subpage to check if any
    of them is hwpoisoned or not, but it is somewhat costly in page fault
    path.
    
    So introduce a new page flag called HasHWPoisoned on the first tail
    page.  It indicates the THP has hwpoisoned subpage(s).  It is set if any
    subpage of THP is found hwpoisoned by memory failure and after the
    refcount is bumped successfully, then cleared when the THP is freed or
    split.
    
    The soft offline path doesn't need this since soft offline handler just
    marks a subpage hwpoisoned when the subpage is migrated successfully.
    But shmem THP didn't get split then migrated at all.
    
    Link: https://lkml.kernel.org/r/20211020210755.23964-3-shy828301@gmail.com
    Fixes: 800d8c63b2e9 ("shmem: add huge pages support")
    Signed-off-by: Yang Shi <shy828301@gmail.com>
    Reviewed-by: Naoya Horiguchi <naoya.horiguchi@nec.com>
    Suggested-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Oscar Salvador <osalvador@suse.de>
    Cc: Peter Xu <peterx@redhat.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8821fedc7f83bb2b61bc9c9a61c387ab314f3d3a
Author: Yang Shi <shy828301@gmail.com>
Date:   Thu Oct 28 14:36:07 2021 -0700

    mm: hwpoison: remove the unnecessary THP check
    
    commit c7cb42e94473aafe553c0f2a3d8ca904599399ed upstream.
    
    When handling THP hwpoison checked if the THP is in allocation or free
    stage since hwpoison may mistreat it as hugetlb page.  After commit
    415c64c1453a ("mm/memory-failure: split thp earlier in memory error
    handling") the problem has been fixed, so this check is no longer
    needed.  Remove it.  The side effect of the removal is hwpoison may
    report unsplit THP instead of unknown error for shmem THP.  It seems not
    like a big deal.
    
    The following patch "mm: filemap: check if THP has hwpoisoned subpage
    for PMD page fault" depends on this, which fixes shmem THP with
    hwpoisoned subpage(s) are mapped PMD wrongly.  So this patch needs to be
    backported to -stable as well.
    
    Link: https://lkml.kernel.org/r/20211020210755.23964-2-shy828301@gmail.com
    Signed-off-by: Yang Shi <shy828301@gmail.com>
    Suggested-by: Naoya Horiguchi <naoya.horiguchi@nec.com>
    Acked-by: Naoya Horiguchi <naoya.horiguchi@nec.com>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Oscar Salvador <osalvador@suse.de>
    Cc: Peter Xu <peterx@redhat.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 67979d186c511631f572c374ec731406aac27057
Author: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Date:   Wed Sep 29 16:22:53 2021 -0400

    drm/amd/display: Require immediate flip support for DCN3.1 planes
    
    commit 672437486ee9da3ed0e774937e6d0dd570921b39 upstream.
    
    [Why]
    Immediate flip can be enabled dynamically and has higher BW requirements
    when validating which voltage mode to use.
    
    If we validate when it's not set then potentially DCFCLK will be too low
    and we will underflow.
    
    [How]
    DM always requires support so always require it as part of DML input
    parameters.
    
    This can't be enabled unconditionally on older ASIC because it blocks
    some expected modes so only target DCN3.1 for now.
    
    Reviewed-by: Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
    Acked-by: Agustin Gutierrez Sanchez <agustin.gutierrez@amd.com>
    Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 75b1b172ae5a12621c5ce094328eb63742606fea
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Oct 26 12:36:17 2021 +0200

    net: lan78xx: fix division by zero in send path
    
    commit db6c3c064f5d55fa9969f33eafca3cdbefbb3541 upstream.
    
    Add the missing endpoint max-packet sanity check to probe() to avoid
    division by zero in lan78xx_tx_bh() in case a malicious device has
    broken descriptors (or when doing descriptor fuzz testing).
    
    Note that USB core will reject URBs submitted for endpoints with zero
    wMaxPacketSize but that drivers doing packet-size calculations still
    need to handle this (cf. commit 2548288b4fb0 ("USB: Fix: Don't skip
    endpoint descriptors with maxpacket=0")).
    
    Fixes: 55d7de9de6c3 ("Microchip's LAN7800 family USB 2/3 to 10/100/1000 Ethernet device driver")
    Cc: stable@vger.kernel.org      # 4.3
    Cc: Woojung.Huh@microchip.com <Woojung.Huh@microchip.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3c897f39b71fe68f90599f6a45b5f7bf5618420e
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Mon Oct 25 13:31:12 2021 +0200

    cfg80211: fix management registrations locking
    
    commit 09b1d5dc6ce1c9151777f6c4e128a59457704c97 upstream.
    
    The management registrations locking was broken, the list was
    locked for each wdev, but cfg80211_mgmt_registrations_update()
    iterated it without holding all the correct spinlocks, causing
    list corruption.
    
    Rather than trying to fix it with fine-grained locking, just
    move the lock to the wiphy/rdev (still need the list on each
    wdev), we already need to hold the wdev lock to change it, so
    there's no contention on the lock in any case. This trivially
    fixes the bug since we hold one wdev's lock already, and now
    will hold the lock that protects all lists.
    
    Cc: stable@vger.kernel.org
    Reported-by: Jouni Malinen <j@w1.fi>
    Fixes: 6cd536fe62ef ("cfg80211: change internal management frame registration API")
    Link: https://lore.kernel.org/r/20211025133111.5cf733eab0f4.I7b0abb0494ab712f74e2efcd24bb31ac33f7eee9@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2a000d137589b6770d69b3dd68df4b437b694cae
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Thu Sep 30 13:11:21 2021 +0200

    cfg80211: scan: fix RCU in cfg80211_add_nontrans_list()
    
    commit a2083eeb119fb9307258baea9b7c243ca9a2e0b6 upstream.
    
    The SSID pointer is pointing to RCU protected data, so we
    need to have it under rcu_read_lock() for the entire use.
    Fix this.
    
    Cc: stable@vger.kernel.org
    Fixes: 0b8fb8235be8 ("cfg80211: Parsing of Multiple BSSID information in scanning")
    Link: https://lore.kernel.org/r/20210930131120.6ddfc603aa1d.I2137344c4e2426525b1a8e4ce5fca82f8ecbfe7e@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e6d02b0da2df660ee32f5a7e3be3859e15cff585
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Wed Oct 27 12:51:01 2021 -0400

    ftrace/nds32: Update the proto for ftrace_trace_function to match ftrace_stub
    
    commit 4e84dc47bb48accbbeeba4e6bb3f31aa7895323c upstream.
    
    The ftrace callback prototype was changed to pass a special ftrace_regs
    instead of pt_regs as the last parameter, but the static ftrace for nds32
    missed updating ftrace_trace_function and this caused a warning when
    compared to ftrace_stub:
    
    ../arch/nds32/kernel/ftrace.c: In function '_mcount':
    ../arch/nds32/kernel/ftrace.c:24:35: error: comparison of distinct pointer types lacks a cast [-Werror]
       24 |         if (ftrace_trace_function != ftrace_stub)
          |                                   ^~
    
    Link: https://lore.kernel.org/all/20211027055554.19372-1-rdunlap@infradead.org/
    Link: https://lkml.kernel.org/r/20211027125101.33449969@gandalf.local.home
    
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Nick Hu <nickhu@andestech.com>
    Cc: Greentime Hu <green.hu@gmail.com>
    Cc: Vincent Chen <deanbo422@gmail.com>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: stable@vger.kernel.org
    Fixes: d19ad0775dcd6 ("ftrace: Have the callbacks receive a struct ftrace_regs instead of pt_regs")
    Reported-by: Randy Dunlap <rdunlap@infradead.org>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ea081b13b00e32120c5d8afc1f04e15bb0124c26
Author: Sagi Grimberg <sagi@grimberg.me>
Date:   Sun Oct 24 10:43:31 2021 +0300

    nvme-tcp: fix H2CData PDU send accounting (again)
    
    commit 25e1f67eda4a19c91dc05c84d6d413c53efb447b upstream.
    
    We should not access request members after the last send, even to
    determine if indeed it was the last data payload send. The reason is
    that a completion could have arrived and trigger a new execution of the
    request which overridden these members. This was fixed by commit
    825619b09ad3 ("nvme-tcp: fix possible use-after-completion").
    
    Commit e371af033c56 broke that assumption again to address cases where
    multiple r2t pdus are sent per request. To fix it, we need to record the
    request data_sent and data_len and after the payload network send we
    reference these counters to determine weather we should advance the
    request iterator.
    
    Fixes: e371af033c56 ("nvme-tcp: fix incorrect h2cdata pdu offset accounting")
    Reported-by: Keith Busch <kbusch@kernel.org>
    Cc: stable@vger.kernel.org # 5.10+
    Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
    Reviewed-by: Keith Busch <kbusch@kernel.org>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2e382600e8856ea654677b5134ee66e03ea72bc2
Author: Gautham Ananthakrishna <gautham.ananthakrishna@oracle.com>
Date:   Thu Oct 28 14:36:17 2021 -0700

    ocfs2: fix race between searching chunks and release journal_head from buffer_head
    
    commit 6f1b228529ae49b0f85ab89bcdb6c365df401558 upstream.
    
    Encountered a race between ocfs2_test_bg_bit_allocatable() and
    jbd2_journal_put_journal_head() resulting in the below vmcore.
    
      PID: 106879  TASK: ffff880244ba9c00  CPU: 2   COMMAND: "loop3"
      Call trace:
        panic
        oops_end
        no_context
        __bad_area_nosemaphore
        bad_area_nosemaphore
        __do_page_fault
        do_page_fault
        page_fault
          [exception RIP: ocfs2_block_group_find_clear_bits+316]
        ocfs2_block_group_find_clear_bits [ocfs2]
        ocfs2_cluster_group_search [ocfs2]
        ocfs2_search_chain [ocfs2]
        ocfs2_claim_suballoc_bits [ocfs2]
        __ocfs2_claim_clusters [ocfs2]
        ocfs2_claim_clusters [ocfs2]
        ocfs2_local_alloc_slide_window [ocfs2]
        ocfs2_reserve_local_alloc_bits [ocfs2]
        ocfs2_reserve_clusters_with_limit [ocfs2]
        ocfs2_reserve_clusters [ocfs2]
        ocfs2_lock_refcount_allocators [ocfs2]
        ocfs2_make_clusters_writable [ocfs2]
        ocfs2_replace_cow [ocfs2]
        ocfs2_refcount_cow [ocfs2]
        ocfs2_file_write_iter [ocfs2]
        lo_rw_aio
        loop_queue_work
        kthread_worker_fn
        kthread
        ret_from_fork
    
    When ocfs2_test_bg_bit_allocatable() called bh2jh(bg_bh), the
    bg_bh->b_private NULL as jbd2_journal_put_journal_head() raced and
    released the jounal head from the buffer head.  Needed to take bit lock
    for the bit 'BH_JournalHead' to fix this race.
    
    Link: https://lkml.kernel.org/r/1634820718-6043-1-git-send-email-gautham.ananthakrishna@oracle.com
    Signed-off-by: Gautham Ananthakrishna <gautham.ananthakrishna@oracle.com>
    Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.com>
    Cc: <rajesh.sivaramasubramaniom@oracle.com>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Changwei Ge <gechangwei@live.cn>
    Cc: Gang He <ghe@suse.com>
    Cc: Jun Piao <piaojun@huawei.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7335acd51f6b5f1ac5383003eae3639846e31cc6
Author: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Date:   Tue Oct 26 15:01:15 2021 +0900

    block: Fix partition check for host-aware zoned block devices
    
    commit e0c60d0102a5ad3475401e1a2faa3d3623eefce4 upstream.
    
    Commit a33df75c6328 ("block: use an xarray for disk->part_tbl") modified
    the method to check partition existence in host-aware zoned block
    devices from disk_has_partitions() helper function call to empty check
    of xarray disk->part_tbl. However, disk->part_tbl always has single
    entry for disk->part0 and never becomes empty. This resulted in the
    host-aware zoned devices always judged to have partitions, and it made
    the sysfs queue/zoned attribute to be "none" instead of "host-aware"
    regardless of partition existence in the devices.
    
    This also caused DEBUG_LOCKS_WARN_ON(lock->magic != lock) for
    sdkp->rev_mutex in scsi layer when the kernel detects host-aware zoned
    device. Since block layer handled the host-aware zoned devices as non-
    zoned devices, scsi layer did not have chance to initialize the mutex
    for zone revalidation. Therefore, the warning was triggered.
    
    To fix the issues, call the helper function disk_has_partitions() in
    place of disk->part_tbl empty check. Since the function was removed with
    the commit a33df75c6328, reimplement it to walk through entries in the
    xarray disk->part_tbl.
    
    Fixes: a33df75c6328 ("block: use an xarray for disk->part_tbl")
    Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
    Cc: stable@vger.kernel.org # v5.14+
    Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/20211026060115.753746-1-shinichiro.kawasaki@wdc.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 10bcaafc57539d28861840182c5ad2ef96759cf9
Author: Haibo Chen <haibo.chen@nxp.com>
Date:   Fri Oct 15 10:00:36 2021 +0800

    mmc: sdhci-esdhc-imx: clear the buffer_read_ready to reset standard tuning circuit
    
    commit 9af372dc70e9fdcbb70939dac75365e7b88580b4 upstream.
    
    To reset standard tuning circuit completely, after clear ESDHC_MIX_CTRL_EXE_TUNE,
    also need to clear bit buffer_read_ready, this operation will finally clear the
    USDHC IP internal logic flag execute_tuning_with_clr_buf, make sure the following
    normal data transfer will not be impacted by standard tuning logic used before.
    
    Find this issue when do quick SD card insert/remove stress test. During standard
    tuning prodedure, if remove SD card, USDHC standard tuning logic can't clear the
    internal flag execute_tuning_with_clr_buf. Next time when insert SD card, all
    data related commands can't get any data related interrupts, include data transfer
    complete interrupt, data timeout interrupt, data CRC interrupt, data end bit interrupt.
    Always trigger software timeout issue. Even reset the USDHC through bits in register
    SYS_CTRL (0x2C, bit28 reset tuning, bit26 reset data, bit 25 reset command, bit 24
    reset all) can't recover this. From the user's point of view, USDHC stuck, SD can't
    be recognized any more.
    
    Fixes: d9370424c948 ("mmc: sdhci-esdhc-imx: reset tuning circuit when power on mmc card")
    Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
    Acked-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/1634263236-6111-1-git-send-email-haibo.chen@nxp.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 78873d5a2717db90a10f9d156f1b8d56df4082fd
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Wed Oct 13 23:17:18 2021 +0300

    mmc: sdhci-pci: Read card detect from ACPI for Intel Merrifield
    
    commit 6ab4e2eb5e956a61e4d53cea3ab8c866ba79a830 upstream.
    
    Intel Merrifield platform had been converted to use ACPI enumeration.
    However, the driver missed an update to retrieve card detect GPIO.
    Fix it here.
    
    Unfortunately we can't rely on CD GPIO state because there are two
    different PCB designs in the wild that are using the opposite card
    detection sense and there is no way to distinguish those platforms,
    that's why ignore CD GPIO completely and use it only as an event.
    
    Fixes: 4590d98f5a4f ("sfi: Remove framework for deprecated firmware")
    BugLink: https://github.com/edison-fw/meta-intel-edison/issues/135
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Acked-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20211013201723.52212-2-andriy.shevchenko@linux.intel.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b572d6c18511bd0a70546f739b17117b719978f5
Author: Shawn Guo <shawn.guo@linaro.org>
Date:   Mon Oct 4 10:49:35 2021 +0800

    mmc: sdhci: Map more voltage level to SDHCI_POWER_330
    
    commit 4217d07b9fb328751f877d3bd9550122014860a2 upstream.
    
    On Thundercomm TurboX CM2290, the eMMC OCR reports vdd = 23 (3.5 ~ 3.6 V),
    which is being treated as an invalid value by sdhci_set_power_noreg().
    And thus eMMC is totally broken on the platform.
    
    [    1.436599] ------------[ cut here ]------------
    [    1.436606] mmc0: Invalid vdd 0x17
    [    1.436640] WARNING: CPU: 2 PID: 69 at drivers/mmc/host/sdhci.c:2048 sdhci_set_power_noreg+0x168/0x2b4
    [    1.436655] Modules linked in:
    [    1.436662] CPU: 2 PID: 69 Comm: kworker/u8:1 Tainted: G        W         5.15.0-rc1+ #137
    [    1.436669] Hardware name: Thundercomm TurboX CM2290 (DT)
    [    1.436674] Workqueue: events_unbound async_run_entry_fn
    [    1.436685] pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    [    1.436692] pc : sdhci_set_power_noreg+0x168/0x2b4
    [    1.436698] lr : sdhci_set_power_noreg+0x168/0x2b4
    [    1.436703] sp : ffff800010803a60
    [    1.436705] x29: ffff800010803a60 x28: ffff6a9102465f00 x27: ffff6a9101720a70
    [    1.436715] x26: ffff6a91014de1c0 x25: ffff6a91014de010 x24: ffff6a91016af280
    [    1.436724] x23: ffffaf7b1b276640 x22: 0000000000000000 x21: ffff6a9101720000
    [    1.436733] x20: ffff6a9101720370 x19: ffff6a9101720580 x18: 0000000000000020
    [    1.436743] x17: 0000000000000000 x16: 0000000000000004 x15: ffffffffffffffff
    [    1.436751] x14: 0000000000000000 x13: 00000000fffffffd x12: ffffaf7b1b84b0bc
    [    1.436760] x11: ffffaf7b1b720d10 x10: 000000000000000a x9 : ffff800010803a60
    [    1.436769] x8 : 000000000000000a x7 : 000000000000000f x6 : 00000000fffff159
    [    1.436778] x5 : 0000000000000000 x4 : 0000000000000000 x3 : 00000000ffffffff
    [    1.436787] x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffff6a9101718d80
    [    1.436797] Call trace:
    [    1.436800]  sdhci_set_power_noreg+0x168/0x2b4
    [    1.436805]  sdhci_set_ios+0xa0/0x7fc
    [    1.436811]  mmc_power_up.part.0+0xc4/0x164
    [    1.436818]  mmc_start_host+0xa0/0xb0
    [    1.436824]  mmc_add_host+0x60/0x90
    [    1.436830]  __sdhci_add_host+0x174/0x330
    [    1.436836]  sdhci_msm_probe+0x7c0/0x920
    [    1.436842]  platform_probe+0x68/0xe0
    [    1.436850]  really_probe.part.0+0x9c/0x31c
    [    1.436857]  __driver_probe_device+0x98/0x144
    [    1.436863]  driver_probe_device+0xc8/0x15c
    [    1.436869]  __device_attach_driver+0xb4/0x120
    [    1.436875]  bus_for_each_drv+0x78/0xd0
    [    1.436881]  __device_attach_async_helper+0xac/0xd0
    [    1.436888]  async_run_entry_fn+0x34/0x110
    [    1.436895]  process_one_work+0x1d0/0x354
    [    1.436903]  worker_thread+0x13c/0x470
    [    1.436910]  kthread+0x150/0x160
    [    1.436915]  ret_from_fork+0x10/0x20
    [    1.436923] ---[ end trace fcfac44cb045c3a8 ]---
    
    Fix the issue by mapping MMC_VDD_35_36 (and MMC_VDD_34_35) to
    SDHCI_POWER_330 as well.
    
    Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
    Acked-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20211004024935.15326-1-shawn.guo@linaro.org
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ac6f66f208a1bc2258aa0e9a0660df6cb97b4839
Author: Jaehoon Chung <jh80.chung@samsung.com>
Date:   Fri Oct 22 17:21:06 2021 +0900

    mmc: dw_mmc: exynos: fix the finding clock sample value
    
    commit 697542bceae51f7620af333b065dd09d213629fb upstream.
    
    Even though there are candiates value if can't find best value, it's
    returned -EIO. It's not proper behavior.
    If there is not best value, use a first candiate value to work eMMC.
    
    Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
    Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Tested-by: Christian Hewitt <christianshewitt@gmail.com>
    Cc: stable@vger.kernel.org
    Fixes: c537a1c5ff63 ("mmc: dw_mmc: exynos: add variable delay tuning sequence")
    Link: https://lore.kernel.org/r/20211022082106.1557-1-jh80.chung@samsung.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b1ad3ecffaac0bfa2c098b972856be273f71067f
Author: Wolfram Sang <wsa+renesas@sang-engineering.com>
Date:   Thu Oct 28 21:51:49 2021 +0200

    mmc: tmio: reenable card irqs after the reset callback
    
    commit 90935eb303e0d12f3d3d0383262e65290321f5f6 upstream.
    
    The reset callback may clear the internal card detect interrupts, so
    make sure to reenable them if needed.
    
    Fixes: b4d86f37eacb ("mmc: renesas_sdhi: do hard reset if possible")
    Reported-by: Biju Das <biju.das.jz@bp.renesas.com>
    Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20211028195149.8003-1-wsa+renesas@sang-engineering.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e1b94f0e744f707fced60bcaed217936c00513df
Author: Wenbin Mei <wenbin.mei@mediatek.com>
Date:   Thu Oct 28 10:20:49 2021 +0800

    mmc: mediatek: Move cqhci init behind ungate clock
    
    commit e8a1ff65927080278e6826f797b7c197fb2611a6 upstream.
    
    We must enable clock before cqhci init, because crypto needs read
    information from CQHCI registers, otherwise, it will hang in MediaTek mmc
    host controller.
    
    Signed-off-by: Wenbin Mei <wenbin.mei@mediatek.com>
    Fixes: 88bd652b3c74 ("mmc: mediatek: command queue support")
    Cc: stable@vger.kernel.org
    Acked-by: Chaotian Jing <chaotian.jing@mediatek.com>
    Link: https://lore.kernel.org/r/20211028022049.22129-1-wenbin.mei@mediatek.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9106d68c8082063a9ef3744fd33f251d38d9a3ef
Author: Wenbin Mei <wenbin.mei@mediatek.com>
Date:   Tue Oct 26 15:08:12 2021 +0800

    mmc: cqhci: clear HALT state after CQE enable
    
    commit 92b18252b91de567cd875f2e84722b10ab34ee28 upstream.
    
    While mmc0 enter suspend state, we need halt CQE to send legacy cmd(flush
    cache) and disable cqe, for resume back, we enable CQE and not clear HALT
    state.
    In this case MediaTek mmc host controller will keep the value for HALT
    state after CQE disable/enable flow, so the next CQE transfer after resume
    will be timeout due to CQE is in HALT state, the log as below:
    <4>.(4)[318:kworker/4:1H]mmc0: cqhci: timeout for tag 2
    <4>.(4)[318:kworker/4:1H]mmc0: cqhci: ============ CQHCI REGISTER DUMP ===========
    <4>.(4)[318:kworker/4:1H]mmc0: cqhci: Caps:      0x100020b6 | Version:  0x00000510
    <4>.(4)[318:kworker/4:1H]mmc0: cqhci: Config:    0x00001103 | Control:  0x00000001
    <4>.(4)[318:kworker/4:1H]mmc0: cqhci: Int stat:  0x00000000 | Int enab: 0x00000006
    <4>.(4)[318:kworker/4:1H]mmc0: cqhci: Int sig:   0x00000006 | Int Coal: 0x00000000
    <4>.(4)[318:kworker/4:1H]mmc0: cqhci: TDL base:  0xfd05f000 | TDL up32: 0x00000000
    <4>.(4)[318:kworker/4:1H]mmc0: cqhci: Doorbell:  0x8000203c | TCN:      0x00000000
    <4>.(4)[318:kworker/4:1H]mmc0: cqhci: Dev queue: 0x00000000 | Dev Pend: 0x00000000
    <4>.(4)[318:kworker/4:1H]mmc0: cqhci: Task clr:  0x00000000 | SSC1:     0x00001000
    <4>.(4)[318:kworker/4:1H]mmc0: cqhci: SSC2:      0x00000001 | DCMD rsp: 0x00000000
    <4>.(4)[318:kworker/4:1H]mmc0: cqhci: RED mask:  0xfdf9a080 | TERRI:    0x00000000
    <4>.(4)[318:kworker/4:1H]mmc0: cqhci: Resp idx:  0x00000000 | Resp arg: 0x00000000
    <4>.(4)[318:kworker/4:1H]mmc0: cqhci: CRNQP:     0x00000000 | CRNQDUN:  0x00000000
    <4>.(4)[318:kworker/4:1H]mmc0: cqhci: CRNQIS:    0x00000000 | CRNQIE:   0x00000000
    
    This change check HALT state after CQE enable, if CQE is in HALT state, we
    will clear it.
    
    Signed-off-by: Wenbin Mei <wenbin.mei@mediatek.com>
    Cc: stable@vger.kernel.org
    Acked-by: Adrian Hunter <adrian.hunter@intel.com>
    Fixes: a4080225f51d ("mmc: cqhci: support for command queue enabled host")
    Link: https://lore.kernel.org/r/20211026070812.9359-1-wenbin.mei@mediatek.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aa2f3e425e22742c411aeb1b385ebb2cf89812d3
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Oct 25 13:56:08 2021 +0200

    mmc: vub300: fix control-message timeouts
    
    commit 8c8171929116cc23f74743d99251eedadf62341a upstream.
    
    USB control-message timeouts are specified in milliseconds and should
    specifically not vary with CONFIG_HZ.
    
    Fixes: 88095e7b473a ("mmc: Add new VUB300 USB-to-SD/SDIO/MMC driver")
    Cc: stable@vger.kernel.org      # 3.0
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Link: https://lore.kernel.org/r/20211025115608.5287-1-johan@kernel.org
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e41473543f75f7dbc5d605007e6f883f1bd13b9a
Author: Daniel Jordan <daniel.m.jordan@oracle.com>
Date:   Wed Oct 27 17:59:20 2021 -0400

    net/tls: Fix flipped sign in tls_err_abort() calls
    
    commit da353fac65fede6b8b4cfe207f0d9408e3121105 upstream.
    
    sk->sk_err appears to expect a positive value, a convention that ktls
    doesn't always follow and that leads to memory corruption in other code.
    For instance,
    
        [kworker]
        tls_encrypt_done(..., err=<negative error from crypto request>)
          tls_err_abort(.., err)
            sk->sk_err = err;
    
        [task]
        splice_from_pipe_feed
          ...
            tls_sw_do_sendpage
              if (sk->sk_err) {
                ret = -sk->sk_err;  // ret is positive
    
        splice_from_pipe_feed (continued)
          ret = actor(...)  // ret is still positive and interpreted as bytes
                            // written, resulting in underflow of buf->len and
                            // sd->len, leading to huge buf->offset and bogus
                            // addresses computed in later calls to actor()
    
    Fix all tls_err_abort() callers to pass a negative error code
    consistently and centralize the error-prone sign flip there, throwing in
    a warning to catch future misuse and uninlining the function so it
    really does only warn once.
    
    Cc: stable@vger.kernel.org
    Fixes: c46234ebb4d1e ("tls: RX path for ktls")
    Reported-by: syzbot+b187b77c8474f9648fae@syzkaller.appspotmail.com
    Signed-off-by: Daniel Jordan <daniel.m.jordan@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8ba94a7f7b9fc2a2b808ccceb99b77135deae21a
Author: Pavel Skripkin <paskripkin@gmail.com>
Date:   Thu Sep 30 20:49:42 2021 +0300

    Revert "net: mdiobus: Fix memory leak in __mdiobus_register"
    
    commit 10eff1f5788b6ffac212c254e2f3666219576889 upstream.
    
    This reverts commit ab609f25d19858513919369ff3d9a63c02cd9e2e.
    
    This patch is correct in the sense that we _should_ call device_put() in
    case of device_register() failure, but the problem in this code is more
    vast.
    
    We need to set bus->state to UNMDIOBUS_REGISTERED before calling
    device_register() to correctly release the device in mdiobus_free().
    This patch prevents us from doing it, since in case of device_register()
    failure put_device() will be called 2 times and it will cause UAF or
    something else.
    
    Also, Reported-by: tag in revered commit was wrong, since syzbot
    reported different leak in same function.
    
    Link: https://lore.kernel.org/netdev/20210928092657.GI2048@kadam/
    Acked-by: Yanfei Xu <yanfei.xu@windriver.com>
    Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
    Link: https://lore.kernel.org/r/f12fb1faa4eccf0f355788225335eb4309ff2599.1633024062.git.paskripkin@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 836f40777d5806b922abe34ad4a90ae34fec090d
Author: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
Date:   Mon Oct 25 16:49:36 2021 +0200

    nfc: port100: fix using -ERRNO as command type mask
    
    commit 2195f2062e4cc93870da8e71c318ef98a1c51cef upstream.
    
    During probing, the driver tries to get a list (mask) of supported
    command types in port100_get_command_type_mask() function.  The value
    is u64 and 0 is treated as invalid mask (no commands supported).  The
    function however returns also -ERRNO as u64 which will be interpret as
    valid command mask.
    
    Return 0 on every error case of port100_get_command_type_mask(), so the
    probing will stop.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 0347a6ab300a ("NFC: port100: Commands mechanism implementation")
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e029c9828c5b503b11a609fcc7c5840de2db3fb4
Author: Max VA <maxv@sentinelone.com>
Date:   Mon Oct 25 17:31:53 2021 +0200

    tipc: fix size validations for the MSG_CRYPTO type
    
    commit fa40d9734a57bcbfa79a280189799f76c88f7bb0 upstream.
    
    The function tipc_crypto_key_rcv is used to parse MSG_CRYPTO messages
    to receive keys from other nodes in the cluster in order to decrypt any
    further messages from them.
    This patch verifies that any supplied sizes in the message body are
    valid for the received message.
    
    Fixes: 1ef6f7c9390f ("tipc: add automatic session key exchange")
    Signed-off-by: Max VA <maxv@sentinelone.com>
    Acked-by: Ying Xue <ying.xue@windriver.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Acked-by: Jon Maloy <jmaloy@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 43849df432c9f727e27cca65f54ff09992b50ae4
Author: Zheyu Ma <zheyuma97@gmail.com>
Date:   Fri Oct 22 09:12:26 2021 +0000

    ata: sata_mv: Fix the error handling of mv_chip_id()
    
    commit a0023bb9dd9bc439d44604eeec62426a990054cd upstream.
    
    mv_init_host() propagates the value returned by mv_chip_id() which in turn
    gets propagated by mv_pci_init_one() and hits local_pci_probe().
    
    During the process of driver probing, the probe function should return < 0
    for failure, otherwise, the kernel will treat value > 0 as success.
    
    Since this is a bug rather than a recoverable runtime error we should
    use dev_alert() instead of dev_err().
    
    Signed-off-by: Zheyu Ma <zheyuma97@gmail.com>
    Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 66a1c8748068063e16088b641e7d66fbaf306adb
Author: Sachi King <nakato@nakato.io>
Date:   Sat Oct 9 14:32:40 2021 +1100

    pinctrl: amd: disable and mask interrupts on probe
    
    commit 4e5a04be88fe335ad5331f4f8c17f4ebd357e065 upstream.
    
    Some systems such as the Microsoft Surface Laptop 4 leave interrupts
    enabled and configured for use in sleep states on boot, which cause
    unexpected behaviour such as spurious wakes and failed resumes in
    s2idle states.
    
    As interrupts should not be enabled until they are claimed and
    explicitly enabled, disabling any interrupts mistakenly left enabled by
    firmware should be safe.
    
    Signed-off-by: Sachi King <nakato@nakato.io>
    Link: https://lore.kernel.org/r/20211009033240.21543-1-nakato@nakato.io
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 18f31a907c9f4c3badabeeb0eb4d2ecd28edf4bf
Author: Rafał Miłecki <rafal@milecki.pl>
Date:   Fri Oct 8 22:59:38 2021 +0200

    Revert "pinctrl: bcm: ns: support updated DT binding as syscon subnode"
    
    commit 6dba4bdfd7a30e77b848a45404b224588bf989e5 upstream.
    
    This reverts commit a49d784d5a8272d0f63c448fe8dc69e589db006e.
    
    The updated binding was wrong / invalid and has been reverted. There
    isn't any upstream kernel DTS using it and Broadcom isn't known to use
    it neither. There is close to zero chance this will cause regression for
    anyone.
    
    Actually in-kernel bcm5301x.dtsi still uses the old good binding and so
    it's broken since the driver update. This revert fixes it.
    
    Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
    Link: https://lore.kernel.org/r/20211008205938.29925-3-zajec5@gmail.com
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b5c410a4af7dfed942cc3dca5430cbe9540cd49e
Author: Wang Hai <wanghai38@huawei.com>
Date:   Tue Oct 26 20:40:15 2021 +0800

    usbnet: fix error return code in usbnet_probe()
    
    commit 6f7c88691191e6c52ef2543d6f1da8d360b27a24 upstream.
    
    Return error code if usb_maxpacket() returns 0 in usbnet_probe()
    
    Fixes: 397430b50a36 ("usbnet: sanity check for maxpacket")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Wang Hai <wanghai38@huawei.com>
    Reviewed-by: Johan Hovold <johan@kernel.org>
    Link: https://lore.kernel.org/r/20211026124015.3025136-1-wanghai38@huawei.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7e8b6a4f18edee070213cb6a77118e8a412253c5
Author: Oliver Neukum <oneukum@suse.com>
Date:   Thu Oct 21 14:29:44 2021 +0200

    usbnet: sanity check for maxpacket
    
    commit 397430b50a363d8b7bdda00522123f82df6adc5e upstream.
    
    maxpacket of 0 makes no sense and oopses as we need to divide
    by it. Give up.
    
    V2: fixed typo in log and stylistic issues
    
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Reported-by: syzbot+76bb1d34ffa0adc03baa@syzkaller.appspotmail.com
    Reviewed-by: Johan Hovold <johan@kernel.org>
    Link: https://lore.kernel.org/r/20211021122944.21816-1-oneukum@suse.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a350df591870c84bcf34ffe3c4a2c2b73949ad7f
Author: LABBE Corentin <clabbe.montjoie@gmail.com>
Date:   Thu Oct 21 10:26:57 2021 +0100

    ARM: 9148/1: handle CONFIG_CPU_ENDIAN_BE32 in arch/arm/kernel/head.S
    
    commit 00568b8a6364e15009b345b462e927e0b9fc2bb9 upstream.
    
    My intel-ixp42x-welltech-epbx100 no longer boot since 4.14.
    This is due to commit 463dbba4d189 ("ARM: 9104/2: Fix Keystone 2 kernel
    mapping regression")
    which forgot to handle CONFIG_CPU_ENDIAN_BE32 as possible BE config.
    
    Suggested-by: Krzysztof Hałasa <khalasa@piap.pl>
    Fixes: 463dbba4d189 ("ARM: 9104/2: Fix Keystone 2 kernel mapping regression")
    Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 351d0f587b4c3346485dd7b5e0268d66ab59de27
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Mon Oct 18 15:30:37 2021 +0100

    ARM: 9141/1: only warn about XIP address when not compile testing
    
    commit 48ccc8edf5b90622cdc4f8878e0042ab5883e2ca upstream.
    
    In randconfig builds, we sometimes come across this warning:
    
    arm-linux-gnueabi-ld: XIP start address may cause MPU programming issues
    
    While this is helpful for actual systems to figure out why it
    fails, the warning does not provide any benefit for build testing,
    so guard it in a check for CONFIG_COMPILE_TEST, which is usually
    set on randconfig builds.
    
    Fixes: 216218308cfb ("ARM: 8713/1: NOMMU: Support MPU in XIP configuration")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a51d78193d210f3c0dd59b9d28af73156f46b04a
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Mon Oct 18 15:30:09 2021 +0100

    ARM: 9139/1: kprobes: fix arch_init_kprobes() prototype
    
    commit 1f323127cab086e4fd618981b1e5edc396eaf0f4 upstream.
    
    With extra warnings enabled, gcc complains about this function
    definition:
    
    arch/arm/probes/kprobes/core.c: In function 'arch_init_kprobes':
    arch/arm/probes/kprobes/core.c:465:12: warning: old-style function definition [-Wold-style-definition]
      465 | int __init arch_init_kprobes()
    
    Link: https://lore.kernel.org/all/20201027093057.c685a14b386acacb3c449e3d@kernel.org/
    
    Fixes: 24ba613c9d6c ("ARM kprobes: core code")
    Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4108f38c05bdf57d8fa8adfb06f3cf49e36993a6
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Mon Oct 18 15:30:08 2021 +0100

    ARM: 9138/1: fix link warning with XIP + frame-pointer
    
    commit 44cc6412e66b2b84544eaf2e14cf1764301e2a80 upstream.
    
    When frame pointers are used instead of the ARM unwinder,
    and the kernel is built using clang with an external assembler
    and CONFIG_XIP_KERNEL, every file produces two warnings
    like:
    
    arm-linux-gnueabi-ld: warning: orphan section `.ARM.extab' from `net/mac802154/util.o' being placed in section `.ARM.extab'
    arm-linux-gnueabi-ld: warning: orphan section `.ARM.exidx' from `net/mac802154/util.o' being placed in section `.ARM.exidx'
    
    The same fix was already merged for the normal (non-XIP)
    
    linker script, with a longer description.
    
    Fixes: c39866f268f8 ("arm/build: Always handle .ARM.exidx and .ARM.extab sections")
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6aa2d9cf81f98c4cb1de523502a2764eebbcd09f
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Mon Oct 18 15:30:04 2021 +0100

    ARM: 9134/1: remove duplicate memcpy() definition
    
    commit eaf6cc7165c9c5aa3c2f9faa03a98598123d0afb upstream.
    
    Both the decompressor code and the kasan logic try to override
    the memcpy() and memmove()  definitions, which leading to a clash
    in a KASAN-enabled kernel with XZ decompression:
    
    arch/arm/boot/compressed/decompress.c:50:9: error: 'memmove' macro redefined [-Werror,-Wmacro-redefined]
     #define memmove memmove
            ^
    arch/arm/include/asm/string.h:59:9: note: previous definition is here
     #define memmove(dst, src, len) __memmove(dst, src, len)
            ^
    arch/arm/boot/compressed/decompress.c:51:9: error: 'memcpy' macro redefined [-Werror,-Wmacro-redefined]
     #define memcpy memcpy
            ^
    arch/arm/include/asm/string.h:58:9: note: previous definition is here
     #define memcpy(dst, src, len) __memcpy(dst, src, len)
            ^
    
    Here we want the set of functions from the decompressor, so undefine
    the other macros before the override.
    
    Link: https://lore.kernel.org/linux-arm-kernel/CACRpkdZYJogU_SN3H9oeVq=zJkRgRT1gDz3xp59gdqWXxw-B=w@mail.gmail.com/
    Link: https://lore.kernel.org/lkml/202105091112.F5rmd4By-lkp@intel.com/
    
    Fixes: d6d51a96c7d6 ("ARM: 9014/2: Replace string mem* functions for KASan")
    Fixes: a7f464f3db93 ("ARM: 7001/2: Wire up support for the XZ decompressor")
    Reported-by: kernel test robot <lkp@intel.com>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 78a7a2694e692e6a4f1e2d6404c69242219e202b
Author: Nick Desaulniers <ndesaulniers@google.com>
Date:   Mon Oct 4 18:03:28 2021 +0100

    ARM: 9133/1: mm: proc-macros: ensure *_tlb_fns are 4B aligned
    
    commit e6a0c958bdf9b2e1b57501fc9433a461f0a6aadd upstream.
    
    A kernel built with CONFIG_THUMB2_KERNEL=y and using clang as the
    assembler could generate non-naturally-aligned v7wbi_tlb_fns which
    results in a boot failure. The original commit adding the macro missed
    the .align directive on this data.
    
    Link: https://github.com/ClangBuiltLinux/linux/issues/1447
    Link: https://lore.kernel.org/all/0699da7b-354f-aecc-a62f-e25693209af4@linaro.org/
    Debugged-by: Ard Biesheuvel <ardb@kernel.org>
    Debugged-by: Nathan Chancellor <nathan@kernel.org>
    Debugged-by: Richard Henderson <richard.henderson@linaro.org>
    
    Fixes: 66a625a88174 ("ARM: mm: proc-macros: Add generic proc/cache/tlb struct definition macros")
    Suggested-by: Ard Biesheuvel <ardb@kernel.org>
    Acked-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    Tested-by: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e108afbd38a5a6693ffdad2f883cf0e224f7c6d0
Author: Lexi Shao <shaolexi@huawei.com>
Date:   Thu Sep 23 03:41:25 2021 +0100

    ARM: 9132/1: Fix __get_user_check failure with ARM KASAN images
    
    commit df909df0770779f1a5560c2bb641a2809655ef28 upstream.
    
    ARM: kasan: Fix __get_user_check failure with kasan
    
    In macro __get_user_check defined in arch/arm/include/asm/uaccess.h,
    error code is store in register int __e(r0). When kasan is
    enabled, assigning value to kernel address might trigger kasan check,
    which unexpectedly overwrites r0 and causes undefined behavior on arm
    kasan images.
    
    One example is failure in do_futex and results in process soft lockup.
    Log:
    watchdog: BUG: soft lockup - CPU#0 stuck for 62946ms! [rs:main
    Q:Reg:1151]
    ...
    (__asan_store4) from (futex_wait_setup+0xf8/0x2b4)
    (futex_wait_setup) from (futex_wait+0x138/0x394)
    (futex_wait) from (do_futex+0x164/0xe40)
    (do_futex) from (sys_futex_time32+0x178/0x230)
    (sys_futex_time32) from (ret_fast_syscall+0x0/0x50)
    
    The soft lockup happens in function futex_wait_setup. The reason is
    function get_futex_value_locked always return EINVAL, thus pc jump
    back to retry label and causes looping.
    
    This line in function get_futex_value_locked
            ret = __get_user(*dest, from);
    is expanded to
            *dest = (typeof(*(p))) __r2; ,
    in macro __get_user_check. Writing to pointer dest triggers kasan check
    and overwrites the return value of __get_user_x function.
    The assembly code of get_futex_value_locked in kernel/futex.c:
    ...
    c01f6dc8:       eb0b020e        bl      c04b7608 <__get_user_4>
    // "x = (typeof(*(p))) __r2;" triggers kasan check and r0 is overwritten
    c01f6dCc:       e1a00007        mov     r0, r7
    c01f6dd0:       e1a05002        mov     r5, r2
    c01f6dd4:       eb04f1e6        bl      c0333574 <__asan_store4>
    c01f6dd8:       e5875000        str     r5, [r7]
    // save ret value of __get_user(*dest, from), which is dest address now
    c01f6ddc:       e1a05000        mov     r5, r0
    ...
    // checking return value of __get_user failed
    c01f6e00:       e3550000        cmp     r5, #0
    ...
    c01f6e0c:       01a00005        moveq   r0, r5
    // assign return value to EINVAL
    c01f6e10:       13e0000d        mvnne   r0, #13
    
    Return value is the destination address of get_user thus certainly
    non-zero, so get_futex_value_locked always return EINVAL.
    
    Fix it by using a tmp vairable to store the error code before the
    assignment. This fix has no effects to non-kasan images thanks to compiler
    optimization. It only affects cases that overwrite r0 due to kasan check.
    
    This should fix bug discussed in Link:
    [1] https://lore.kernel.org/linux-arm-kernel/0ef7c2a5-5d8b-c5e0-63fa-31693fd4495c@gmail.com/
    
    Fixes: 421015713b30 ("ARM: 9017/2: Enable KASan for ARM")
    Signed-off-by: Lexi Shao <shaolexi@huawei.com>
    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>