commit 8a901e19407d3424ad6362c59755182440b939e4
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Jun 10 13:41:49 2021 +0200

    Linux 5.12.10
    
    Link: https://lore.kernel.org/r/20210608175945.476074951@linuxfoundation.org
    Tested-by: Fox Chen <foxhlchen@gmail.com>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Jason Self <jason@bluehome.net>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Florian Fainelli <f.fainelli@gmail.com>
    Tested-by: Justin M. Forbes <jforbes@fedoraproject.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ddf088d7aaaaacfc836104f2e632b29b1d383cfc
Author: David Ahern <dsahern@kernel.org>
Date:   Mon Jun 7 11:35:30 2021 -0600

    neighbour: allow NUD_NOARP entries to be forced GCed
    
    commit 7a6b1ab7475fd6478eeaf5c9d1163e7a18125c8f upstream.
    
    IFF_POINTOPOINT interfaces use NUD_NOARP entries for IPv6. It's possible to
    fill up the neighbour table with enough entries that it will overflow for
    valid connections after that.
    
    This behaviour is more prevalent after commit 58956317c8de ("neighbor:
    Improve garbage collection") is applied, as it prevents removal from
    entries that are not NUD_FAILED, unless they are more than 5s old.
    
    Fixes: 58956317c8de (neighbor: Improve garbage collection)
    Reported-by: Kasper Dupont <kasperd@gjkwv.06.feb.2021.kasperd.net>
    Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
    Signed-off-by: David Ahern <dsahern@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit caec9bcaeb1a5f03f2d406305355c853af10c13e
Author: Roger Pau Monne <roger.pau@citrix.com>
Date:   Mon Jun 7 15:13:15 2021 +0200

    xen-netback: take a reference to the RX task thread
    
    commit 107866a8eb0b664675a260f1ba0655010fac1e08 upstream.
    
    Do this in order to prevent the task from being freed if the thread
    returns (which can be triggered by the frontend) before the call to
    kthread_stop done as part of the backend tear down. Not taking the
    reference will lead to a use-after-free in that scenario. Such
    reference was taken before but dropped as part of the rework done in
    2ac061ce97f4.
    
    Reintroduce the reference taking and add a comment this time
    explaining why it's needed.
    
    This is XSA-374 / CVE-2021-28691.
    
    Fixes: 2ac061ce97f4 ('xen/netback: cleanup init and deinit code')
    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Cc: stable@vger.kernel.org
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2682184605848ae28866bf71c7d4774bda7badfc
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Wed May 19 13:32:20 2021 +0200

    netfilter: nf_tables: missing error reporting for not selected expressions
    
    commit c781471d67a56d7d4c113669a11ede0463b5c719 upstream.
    
    Sometimes users forget to turn on nftables extensions from Kconfig that
    they need. In such case, the error reporting from userspace is
    misleading:
    
     $ sudo nft add rule x y counter
     Error: Could not process rule: No such file or directory
     add rule x y counter
     ^^^^^^^^^^^^^^^^^^^^
    
    Add missing NL_SET_BAD_ATTR() to provide a hint:
    
     $ nft add rule x y counter
     Error: Could not process rule: No such file or directory
     add rule x y counter
                  ^^^^^^^
    
    Fixes: 83d9dcba06c5 ("netfilter: nf_tables: extended netlink error reporting for expressions")
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 551677defbb5f8e2aa9b1d406bb0b2bcdeec0a9b
Author: Jiashuo Liang <liangjs@pku.edu.cn>
Date:   Tue Jun 1 16:52:03 2021 +0800

    x86/fault: Don't send SIGSEGV twice on SEGV_PKUERR
    
    commit 5405b42c2f08efe67b531799ba2fdb35bac93e70 upstream.
    
    __bad_area_nosemaphore() calls both force_sig_pkuerr() and
    force_sig_fault() when handling SEGV_PKUERR. This does not cause
    problems because the second signal is filtered by the legacy_queue()
    check in __send_signal() because in both cases, the signal is SIGSEGV,
    the second one seeing that the first one is already pending.
    
    This causes the kernel to do unnecessary work so send the signal only
    once for SEGV_PKUERR.
    
     [ bp: Massage commit message. ]
    
    Fixes: 9db812dbb29d ("signal/x86: Call force_sig_pkuerr from __bad_area_nosemaphore")
    Suggested-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: Jiashuo Liang <liangjs@pku.edu.cn>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Acked-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Link: https://lkml.kernel.org/r/20210601085203.40214-1-liangjs@pku.edu.cn
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 542bbcaa930ad75a9d181feac3afed0995b5137c
Author: Roja Rani Yarubandi <rojay@codeaurora.org>
Date:   Tue May 25 18:40:51 2021 +0530

    i2c: qcom-geni: Suspend and resume the bus during SYSTEM_SLEEP_PM ops
    
    commit 57648e860485de39c800a89f849fdd03c2d31d15 upstream.
    
    Mark bus as suspended during system suspend to block the future
    transfers. Implement geni_i2c_resume_noirq() to resume the bus.
    
    Fixes: 37692de5d523 ("i2c: i2c-qcom-geni: Add bus driver for the Qualcomm GENI I2C controller")
    Signed-off-by: Roja Rani Yarubandi <rojay@codeaurora.org>
    Reviewed-by: Stephen Boyd <swboyd@chromium.org>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3762e844c5a032119fa31ed11cdc2ef8a601e9c2
Author: Maciej Falkowski <maciej.falkowski9@gmail.com>
Date:   Thu Apr 1 18:20:32 2021 +0200

    ARM: OMAP1: isp1301-omap: Add missing gpiod_add_lookup_table function
    
    commit 7c302314f37b44595f180198fca5ca646bce4a5f upstream.
    
    The gpiod table was added without any usage making it unused
    as reported by Clang compilation from omap1_defconfig on linux-next:
    
    arch/arm/mach-omap1/board-h2.c:347:34: warning: unused variable
    'isp1301_gpiod_table' [-Wunused-variable]
    static struct gpiod_lookup_table isp1301_gpiod_table = {
                                     ^
    1 warning generated.
    
    The patch adds the missing gpiod_add_lookup_table() function.
    
    Signed-off-by: Maciej Falkowski <maciej.falkowski9@gmail.com>
    Fixes: f3ef38160e3d ("usb: isp1301-omap: Convert to use GPIO descriptors")
    Link: https://github.com/ClangBuiltLinux/linux/issues/1325
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5a3d82dc8aced6e6a9d3f18b2211031d841ec41d
Author: Zenghui Yu <yuzenghui@huawei.com>
Date:   Tue Jun 1 22:07:38 2021 +0800

    KVM: arm64: Resolve all pending PC updates before immediate exit
    
    commit e3e880bb1518eb10a4b4bb4344ed614d6856f190 upstream.
    
    Commit 26778aaa134a ("KVM: arm64: Commit pending PC adjustemnts before
    returning to userspace") fixed the PC updating issue by forcing an explicit
    synchronisation of the exception state on vcpu exit to userspace.
    
    However, we forgot to take into account the case where immediate_exit is
    set by userspace and KVM_RUN will exit immediately. Fix it by resolving all
    pending PC updates before returning to userspace.
    
    Since __kvm_adjust_pc() relies on a loaded vcpu context, I moved the
    immediate_exit checking right after vcpu_load(). We will get some overhead
    if immediate_exit is true (which should hopefully be rare).
    
    Fixes: 26778aaa134a ("KVM: arm64: Commit pending PC adjustemnts before returning to userspace")
    Signed-off-by: Zenghui Yu <yuzenghui@huawei.com>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20210526141831.1662-1-yuzenghui@huawei.com
    Cc: stable@vger.kernel.org # 5.11
    [yuz: stable-5.12.y backport]
    Signed-off-by: Zenghui Yu <yuzenghui@huawei.com>
    Reviewed-by: Marc Zyngier <maz@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 830e7653e940820c2bf1e5a2b93f386e03653dd6
Author: Marc Zyngier <maz@kernel.org>
Date:   Tue Jun 1 22:07:37 2021 +0800

    KVM: arm64: Commit pending PC adjustemnts before returning to userspace
    
    commit 26778aaa134a9aefdf5dbaad904054d7be9d656d upstream.
    
    KVM currently updates PC (and the corresponding exception state)
    using a two phase approach: first by setting a set of flags,
    then by converting these flags into a state update when the vcpu
    is about to enter the guest.
    
    However, this creates a disconnect with userspace if the vcpu thread
    returns there with any exception/PC flag set. In this case, the exposed
    context is wrong, as userspace doesn't have access to these flags
    (they aren't architectural). It also means that these flags are
    preserved across a reset, which isn't expected.
    
    To solve this problem, force an explicit synchronisation of the
    exception state on vcpu exit to userspace. As an optimisation
    for nVHE systems, only perform this when there is something pending.
    
    Reported-by: Zenghui Yu <yuzenghui@huawei.com>
    Reviewed-by: Alexandru Elisei <alexandru.elisei@arm.com>
    Reviewed-by: Zenghui Yu <yuzenghui@huawei.com>
    Tested-by: Zenghui Yu <yuzenghui@huawei.com>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Cc: stable@vger.kernel.org # 5.11
    [yuz: stable-5.12.y backport: allocate a new number (15) for
     __KVM_HOST_SMCCC_FUNC___kvm_adjust_pc to keep the host_hcall array
     tightly packed]
    Signed-off-by: Zenghui Yu <yuzenghui@huawei.com>
    Reviewed-by: Marc Zyngier <maz@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9b77839fd4b636c78ae75b2fc4fe8321ea0c9da3
Author: Vitaly Kuznetsov <vkuznets@redhat.com>
Date:   Tue Jun 1 09:16:44 2021 +0200

    x86/kvm: Disable all PV features on crash
    
    commit 3d6b84132d2a57b5a74100f6923a8feb679ac2ce upstream.
    
    Crash shutdown handler only disables kvmclock and steal time, other PV
    features remain active so we risk corrupting memory or getting some
    side-effects in kdump kernel. Move crash handler to kvm.c and unify
    with CPU offline.
    
    Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Message-Id: <20210414123544.1060604-5-vkuznets@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1df2dc09926f61319116c80ee85701df33577d70
Author: Vitaly Kuznetsov <vkuznets@redhat.com>
Date:   Tue Jun 1 09:16:43 2021 +0200

    x86/kvm: Disable kvmclock on all CPUs on shutdown
    
    commit c02027b5742b5aa804ef08a4a9db433295533046 upstream.
    
    Currenly, we disable kvmclock from machine_shutdown() hook and this
    only happens for boot CPU. We need to disable it for all CPUs to
    guard against memory corruption e.g. on restore from hibernate.
    
    Note, writing '0' to kvmclock MSR doesn't clear memory location, it
    just prevents hypervisor from updating the location so for the short
    while after write and while CPU is still alive, the clock remains usable
    and correct so we don't need to switch to some other clocksource.
    
    Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Message-Id: <20210414123544.1060604-4-vkuznets@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Andrea Righi <andrea.righi@canonical.com>
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d1629b5b925de9b27979e929dae7fcb766daf6b6
Author: Vitaly Kuznetsov <vkuznets@redhat.com>
Date:   Tue Jun 1 09:16:42 2021 +0200

    x86/kvm: Teardown PV features on boot CPU as well
    
    commit 8b79feffeca28c5459458fe78676b081e87c93a4 upstream.
    
    Various PV features (Async PF, PV EOI, steal time) work through memory
    shared with hypervisor and when we restore from hibernation we must
    properly teardown all these features to make sure hypervisor doesn't
    write to stale locations after we jump to the previously hibernated kernel
    (which can try to place anything there). For secondary CPUs the job is
    already done by kvm_cpu_down_prepare(), register syscore ops to do
    the same for boot CPU.
    
    Krzysztof:
    This fixes memory corruption visible after second resume from
    hibernation:
    
      BUG: Bad page state in process dbus-daemon  pfn:18b01
      page:ffffea000062c040 refcount:0 mapcount:0 mapping:0000000000000000 index:0x1 compound_mapcount: -30591
      flags: 0xfffffc0078141(locked|error|workingset|writeback|head|mappedtodisk|reclaim)
      raw: 000fffffc0078141 dead0000000002d0 dead000000000100 0000000000000000
      raw: 0000000000000001 0000000000000000 00000000ffffffff 0000000000000000
      page dumped because: PAGE_FLAGS_CHECK_AT_PREP flag set
      bad because of flags: 0x78141(locked|error|workingset|writeback|head|mappedtodisk|reclaim)
    
    Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Message-Id: <20210414123544.1060604-3-vkuznets@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Andrea Righi <andrea.righi@canonical.com>
    [krzysztof: Extend the commit message, adjust for v5.10 context]
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6f2a834f364dbe05454ed654e1636ca7f0469ded
Author: Sean Christopherson <seanjc@google.com>
Date:   Wed Apr 21 19:21:22 2021 -0700

    KVM: SVM: Truncate GPR value for DR and CR accesses in !64-bit mode
    
    commit 0884335a2e653b8a045083aa1d57ce74269ac81d upstream.
    
    Drop bits 63:32 on loads/stores to/from DRs and CRs when the vCPU is not
    in 64-bit mode.  The APM states bits 63:32 are dropped for both DRs and
    CRs:
    
      In 64-bit mode, the operand size is fixed at 64 bits without the need
      for a REX prefix. In non-64-bit mode, the operand size is fixed at 32
      bits and the upper 32 bits of the destination are forced to 0.
    
    Fixes: 7ff76d58a9dc ("KVM: SVM: enhance MOV CR intercept handler")
    Fixes: cae3797a4639 ("KVM: SVM: enhance mov DR intercept handler")
    Cc: stable@vger.kernel.org
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Message-Id: <20210422022128.3464144-4-seanjc@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9ddd1b2c8c310cbae1c3d4e7e92a7cf213299126
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Thu Apr 1 05:05:33 2021 +0300

    drm/msm/dpu: always use mdp device to scale bandwidth
    
    commit a670ff578f1fb855fedc7931fa5bbc06b567af22 upstream.
    
    Currently DPU driver scales bandwidth and core clock for sc7180 only,
    while the rest of chips get static bandwidth votes. Make all chipsets
    scale bandwidth and clock per composition requirements like sc7180 does.
    Drop old voting path completely.
    
    Tested on RB3 (SDM845) and RB5 (SM8250).
    
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Link: https://lore.kernel.org/r/20210401020533.3956787-2-dmitry.baryshkov@linaro.org
    Signed-off-by: Rob Clark <robdclark@chromium.org>
    Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6280e8aca1e0c86a36d45032b4f17e68732b8880
Author: Mina Almasry <almasrymina@google.com>
Date:   Fri Jun 4 20:01:36 2021 -0700

    mm, hugetlb: fix simple resv_huge_pages underflow on UFFDIO_COPY
    
    [ Upstream commit d84cf06e3dd8c5c5b547b5d8931015fc536678e5 ]
    
    The userfaultfd hugetlb tests cause a resv_huge_pages underflow.  This
    happens when hugetlb_mcopy_atomic_pte() is called with !is_continue on
    an index for which we already have a page in the cache.  When this
    happens, we allocate a second page, double consuming the reservation,
    and then fail to insert the page into the cache and return -EEXIST.
    
    To fix this, we first check if there is a page in the cache which
    already consumed the reservation, and return -EEXIST immediately if so.
    
    There is still a rare condition where we fail to copy the page contents
    AND race with a call for hugetlb_no_page() for this index and again we
    will underflow resv_huge_pages.  That is fixed in a more complicated
    patch not targeted for -stable.
    
    Test:
    
      Hacked the code locally such that resv_huge_pages underflows produce a
      warning, then:
    
      ./tools/testing/selftests/vm/userfaultfd hugetlb_shared 10
            2 /tmp/kokonut_test/huge/userfaultfd_test && echo test success
      ./tools/testing/selftests/vm/userfaultfd hugetlb 10
            2 /tmp/kokonut_test/huge/userfaultfd_test && echo test success
    
    Both tests succeed and produce no warnings.  After the test runs number
    of free/resv hugepages is correct.
    
    [mike.kravetz@oracle.com: changelog fixes]
    
    Link: https://lkml.kernel.org/r/20210528004649.85298-1-almasrymina@google.com
    Fixes: 8fb5debc5fcd ("userfaultfd: hugetlbfs: add hugetlb_mcopy_atomic_pte for userfaultfd support")
    Signed-off-by: Mina Almasry <almasrymina@google.com>
    Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com>
    Cc: Axel Rasmussen <axelrasmussen@google.com>
    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: Sasha Levin <sashal@kernel.org>

commit 7feb7361efe03623b6fe00cb81924fe7537c2f7b
Author: Filipe Manana <fdmanana@suse.com>
Date:   Tue May 25 11:05:28 2021 +0100

    btrfs: fix deadlock when cloning inline extents and low on available space
    
    commit 76a6d5cd74479e7ec8a7f9a29bce63d5549b6b2e upstream.
    
    There are a few cases where cloning an inline extent requires copying data
    into a page of the destination inode. For these cases we are allocating
    the required data and metadata space while holding a leaf locked. This can
    result in a deadlock when we are low on available space because allocating
    the space may flush delalloc and two deadlock scenarios can happen:
    
    1) When starting writeback for an inode with a very small dirty range that
       fits in an inline extent, we deadlock during the writeback when trying
       to insert the inline extent, at cow_file_range_inline(), if the extent
       is going to be located in the leaf for which we are already holding a
       read lock;
    
    2) After successfully starting writeback, for non-inline extent cases,
       the async reclaim thread will hang waiting for an ordered extent to
       complete if the ordered extent completion needs to modify the leaf
       for which the clone task is holding a read lock (for adding or
       replacing file extent items). So the cloning task will wait forever
       on the async reclaim thread to make progress, which in turn is
       waiting for the ordered extent completion which in turn is waiting
       to acquire a write lock on the same leaf.
    
    So fix this by making sure we release the path (and therefore the leaf)
    every time we need to copy the inline extent's data into a page of the
    destination inode, as by that time we do not need to have the leaf locked.
    
    Fixes: 05a5a7621ce66c ("Btrfs: implement full reflink support for inline extents")
    CC: stable@vger.kernel.org # 5.10+
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ff8de2cec65a8c8521faade12a31b39c80e49f5b
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Wed May 19 14:04:21 2021 -0400

    btrfs: abort in rename_exchange if we fail to insert the second ref
    
    commit dc09ef3562726cd520c8338c1640872a60187af5 upstream.
    
    Error injection stress uncovered a problem where we'd leave a dangling
    inode ref if we failed during a rename_exchange.  This happens because
    we insert the inode ref for one side of the rename, and then for the
    other side.  If this second inode ref insert fails we'll leave the first
    one dangling and leave a corrupt file system behind.  Fix this by
    aborting if we did the insert for the first inode ref.
    
    CC: stable@vger.kernel.org # 4.9+
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4cd303735bdfacd115ee20a6f3235b0084924174
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Wed May 19 13:13:15 2021 -0400

    btrfs: fixup error handling in fixup_inode_link_counts
    
    commit 011b28acf940eb61c000059dd9e2cfcbf52ed96b upstream.
    
    This function has the following pattern
    
            while (1) {
                    ret = whatever();
                    if (ret)
                            goto out;
            }
            ret = 0
    out:
            return ret;
    
    However several places in this while loop we simply break; when there's
    a problem, thus clearing the return value, and in one case we do a
    return -EIO, and leak the memory for the path.
    
    Fix this by re-arranging the loop to deal with ret == 1 coming from
    btrfs_search_slot, and then simply delete the
    
            ret = 0;
    out:
    
    bit so everybody can break if there is an error, which will allow for
    proper error handling to occur.
    
    CC: stable@vger.kernel.org # 4.4+
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a70d4dac28aaa64c5a71a5ecdf8ed5deeafb1395
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Wed May 19 11:26:25 2021 -0400

    btrfs: check error value from btrfs_update_inode in tree log
    
    commit f96d44743a44e3332f75d23d2075bb8270900e1d upstream.
    
    Error injection testing uncovered a case where we ended up with invalid
    link counts on an inode.  This happened because we failed to notice an
    error when updating the inode while replaying the tree log, and
    committed the transaction with an invalid file system.
    
    Fix this by checking the return value of btrfs_update_inode.  This
    resolved the link count errors I was seeing, and we already properly
    handle passing up the error values in these paths.
    
    CC: stable@vger.kernel.org # 4.4+
    Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b37885cc013516f0412d7d2e99f043dd112c99a6
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon May 24 11:35:53 2021 +0100

    btrfs: fix fsync failure and transaction abort after writes to prealloc extents
    
    commit ea7036de0d36c4e6c9508f68789e9567d514333a upstream.
    
    When doing a series of partial writes to different ranges of preallocated
    extents with transaction commits and fsyncs in between, we can end up with
    a checksum items in a log tree. This causes an fsync to fail with -EIO and
    abort the transaction, turning the filesystem to RO mode, when syncing the
    log.
    
    For this to happen, we need to have a full fsync of a file following one
    or more fast fsyncs.
    
    The following example reproduces the problem and explains how it happens:
    
      $ mkfs.btrfs -f /dev/sdc
      $ mount /dev/sdc /mnt
    
      # Create our test file with 2 preallocated extents. Leave a 1M hole
      # between them to ensure that we get two file extent items that will
      # never be merged into a single one. The extents are contiguous on disk,
      # which will later result in the checksums for their data to be merged
      # into a single checksum item in the csums btree.
      #
      $ xfs_io -f \
               -c "falloc 0 1M" \
               -c "falloc 3M 3M" \
               /mnt/foobar
    
      # Now write to the second extent and leave only 1M of it as unwritten,
      # which corresponds to the file range [4M, 5M[.
      #
      # Then fsync the file to flush delalloc and to clear full sync flag from
      # the inode, so that a future fsync will use the fast code path.
      #
      # After the writeback triggered by the fsync we have 3 file extent items
      # that point to the second extent we previously allocated:
      #
      # 1) One file extent item of type BTRFS_FILE_EXTENT_REG that covers the
      #    file range [3M, 4M[
      #
      # 2) One file extent item of type BTRFS_FILE_EXTENT_PREALLOC that covers
      #    the file range [4M, 5M[
      #
      # 3) One file extent item of type BTRFS_FILE_EXTENT_REG that covers the
      #    file range [5M, 6M[
      #
      # All these file extent items have a generation of 6, which is the ID of
      # the transaction where they were created. The split of the original file
      # extent item is done at btrfs_mark_extent_written() when ordered extents
      # complete for the file ranges [3M, 4M[ and [5M, 6M[.
      #
      $ xfs_io -c "pwrite -S 0xab 3M 1M" \
               -c "pwrite -S 0xef 5M 1M" \
               -c "fsync" \
               /mnt/foobar
    
      # Commit the current transaction. This wipes out the log tree created by
      # the previous fsync.
      sync
    
      # Now write to the unwritten range of the second extent we allocated,
      # corresponding to the file range [4M, 5M[, and fsync the file, which
      # triggers the fast fsync code path.
      #
      # The fast fsync code path sees that there is a new extent map covering
      # the file range [4M, 5M[ and therefore it will log a checksum item
      # covering the range [1M, 2M[ of the second extent we allocated.
      #
      # Also, after the fsync finishes we no longer have the 3 file extent
      # items that pointed to 3 sections of the second extent we allocated.
      # Instead we end up with a single file extent item pointing to the whole
      # extent, with a type of BTRFS_FILE_EXTENT_REG and a generation of 7 (the
      # current transaction ID). This is due to the file extent item merging we
      # do when completing ordered extents into ranges that point to unwritten
      # (preallocated) extents. This merging is done at
      # btrfs_mark_extent_written().
      #
      $ xfs_io -c "pwrite -S 0xcd 4M 1M" \
               -c "fsync" \
               /mnt/foobar
    
      # Now do some write to our file outside the range of the second extent
      # that we allocated with fallocate() and truncate the file size from 6M
      # down to 5M.
      #
      # The truncate operation sets the full sync runtime flag on the inode,
      # forcing the next fsync to use the slow code path. It also changes the
      # length of the second file extent item so that it represents the file
      # range [3M, 5M[ and not the range [3M, 6M[ anymore.
      #
      # Finally fsync the file. Since this is a fsync that triggers the slow
      # code path, it will remove all items associated to the inode from the
      # log tree and then it will scan for file extent items in the
      # fs/subvolume tree that have a generation matching the current
      # transaction ID, which is 7. This means it will log 2 file extent
      # items:
      #
      # 1) One for the first extent we allocated, covering the file range
      #    [0, 1M[
      #
      # 2) Another for the first 2M of the second extent we allocated,
      #    covering the file range [3M, 5M[
      #
      # When logging the first file extent item we log a single checksum item
      # that has all the checksums for the entire extent.
      #
      # When logging the second file extent item, we also lookup for the
      # checksums that are associated with the range [0, 2M[ of the second
      # extent we allocated (file range [3M, 5M[), and then we log them with
      # btrfs_csum_file_blocks(). However that results in ending up with a log
      # that has two checksum items with ranges that overlap:
      #
      # 1) One for the range [1M, 2M[ of the second extent we allocated,
      #    corresponding to the file range [4M, 5M[, which we logged in the
      #    previous fsync that used the fast code path;
      #
      # 2) One for the ranges [0, 1M[ and [0, 2M[ of the first and second
      #    extents, respectively, corresponding to the files ranges [0, 1M[
      #    and [3M, 5M[. This one was added during this last fsync that uses
      #    the slow code path and overlaps with the previous one logged by
      #    the previous fast fsync.
      #
      # This happens because when logging the checksums for the second
      # extent, we notice they start at an offset that matches the end of the
      # checksums item that we logged for the first extent, and because both
      # extents are contiguous on disk, btrfs_csum_file_blocks() decides to
      # extend that existing checksums item and append the checksums for the
      # second extent to this item. The end result is we end up with two
      # checksum items in the log tree that have overlapping ranges, as
      # listed before, resulting in the fsync to fail with -EIO and aborting
      # the transaction, turning the filesystem into RO mode.
      #
      $ xfs_io -c "pwrite -S 0xff 0 1M" \
               -c "truncate 5M" \
               -c "fsync" \
               /mnt/foobar
      fsync: Input/output error
    
    After running the example, dmesg/syslog shows the tree checker complained
    about the checksum items with overlapping ranges and we aborted the
    transaction:
    
      $ dmesg
      (...)
      [756289.557487] BTRFS critical (device sdc): corrupt leaf: root=18446744073709551610 block=30720000 slot=5, csum end range (16777216) goes beyond the start range (15728640) of the next csum item
      [756289.560583] BTRFS info (device sdc): leaf 30720000 gen 7 total ptrs 7 free space 11677 owner 18446744073709551610
      [756289.562435] BTRFS info (device sdc): refs 2 lock_owner 0 current 2303929
      [756289.563654]       item 0 key (257 1 0) itemoff 16123 itemsize 160
      [756289.564649]               inode generation 6 size 5242880 mode 100600
      [756289.565636]       item 1 key (257 12 256) itemoff 16107 itemsize 16
      [756289.566694]       item 2 key (257 108 0) itemoff 16054 itemsize 53
      [756289.567725]               extent data disk bytenr 13631488 nr 1048576
      [756289.568697]               extent data offset 0 nr 1048576 ram 1048576
      [756289.569689]       item 3 key (257 108 1048576) itemoff 16001 itemsize 53
      [756289.570682]               extent data disk bytenr 0 nr 0
      [756289.571363]               extent data offset 0 nr 2097152 ram 2097152
      [756289.572213]       item 4 key (257 108 3145728) itemoff 15948 itemsize 53
      [756289.573246]               extent data disk bytenr 14680064 nr 3145728
      [756289.574121]               extent data offset 0 nr 2097152 ram 3145728
      [756289.574993]       item 5 key (18446744073709551606 128 13631488) itemoff 12876 itemsize 3072
      [756289.576113]       item 6 key (18446744073709551606 128 15728640) itemoff 11852 itemsize 1024
      [756289.577286] BTRFS error (device sdc): block=30720000 write time tree block corruption detected
      [756289.578644] ------------[ cut here ]------------
      [756289.579376] WARNING: CPU: 0 PID: 2303929 at fs/btrfs/disk-io.c:465 csum_one_extent_buffer+0xed/0x100 [btrfs]
      [756289.580857] Modules linked in: btrfs dm_zero dm_dust loop dm_snapshot (...)
      [756289.591534] CPU: 0 PID: 2303929 Comm: xfs_io Tainted: G        W         5.12.0-rc8-btrfs-next-87 #1
      [756289.592580] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.14.0-0-g155821a1990b-prebuilt.qemu.org 04/01/2014
      [756289.594161] RIP: 0010:csum_one_extent_buffer+0xed/0x100 [btrfs]
      [756289.595122] Code: 5d c3 e8 76 60 (...)
      [756289.597509] RSP: 0018:ffffb51b416cb898 EFLAGS: 00010282
      [756289.598142] RAX: 0000000000000000 RBX: fffff02b8a365bc0 RCX: 0000000000000000
      [756289.598970] RDX: 0000000000000000 RSI: ffffffffa9112421 RDI: 00000000ffffffff
      [756289.599798] RBP: ffffa06500880000 R08: 0000000000000000 R09: 0000000000000000
      [756289.600619] R10: 0000000000000000 R11: 0000000000000001 R12: 0000000000000000
      [756289.601456] R13: ffffa0652b1d8980 R14: ffffa06500880000 R15: 0000000000000000
      [756289.602278] FS:  00007f08b23c9800(0000) GS:ffffa0682be00000(0000) knlGS:0000000000000000
      [756289.603217] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [756289.603892] CR2: 00005652f32d0138 CR3: 000000025d616003 CR4: 0000000000370ef0
      [756289.604725] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      [756289.605563] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      [756289.606400] Call Trace:
      [756289.606704]  btree_csum_one_bio+0x244/0x2b0 [btrfs]
      [756289.607313]  btrfs_submit_metadata_bio+0xb7/0x100 [btrfs]
      [756289.608040]  submit_one_bio+0x61/0x70 [btrfs]
      [756289.608587]  btree_write_cache_pages+0x587/0x610 [btrfs]
      [756289.609258]  ? free_debug_processing+0x1d5/0x240
      [756289.609812]  ? __module_address+0x28/0xf0
      [756289.610298]  ? lock_acquire+0x1a0/0x3e0
      [756289.610754]  ? lock_acquired+0x19f/0x430
      [756289.611220]  ? lock_acquire+0x1a0/0x3e0
      [756289.611675]  do_writepages+0x43/0xf0
      [756289.612101]  ? __filemap_fdatawrite_range+0xa4/0x100
      [756289.612800]  __filemap_fdatawrite_range+0xc5/0x100
      [756289.613393]  btrfs_write_marked_extents+0x68/0x160 [btrfs]
      [756289.614085]  btrfs_sync_log+0x21c/0xf20 [btrfs]
      [756289.614661]  ? finish_wait+0x90/0x90
      [756289.615096]  ? __mutex_unlock_slowpath+0x45/0x2a0
      [756289.615661]  ? btrfs_log_inode_parent+0x3c9/0xdc0 [btrfs]
      [756289.616338]  ? lock_acquire+0x1a0/0x3e0
      [756289.616801]  ? lock_acquired+0x19f/0x430
      [756289.617284]  ? lock_acquire+0x1a0/0x3e0
      [756289.617750]  ? lock_release+0x214/0x470
      [756289.618221]  ? lock_acquired+0x19f/0x430
      [756289.618704]  ? dput+0x20/0x4a0
      [756289.619079]  ? dput+0x20/0x4a0
      [756289.619452]  ? lockref_put_or_lock+0x9/0x30
      [756289.619969]  ? lock_release+0x214/0x470
      [756289.620445]  ? lock_release+0x214/0x470
      [756289.620924]  ? lock_release+0x214/0x470
      [756289.621415]  btrfs_sync_file+0x46a/0x5b0 [btrfs]
      [756289.621982]  do_fsync+0x38/0x70
      [756289.622395]  __x64_sys_fsync+0x10/0x20
      [756289.622907]  do_syscall_64+0x33/0x80
      [756289.623438]  entry_SYSCALL_64_after_hwframe+0x44/0xae
      [756289.624063] RIP: 0033:0x7f08b27fbb7b
      [756289.624588] Code: 0f 05 48 3d 00 (...)
      [756289.626760] RSP: 002b:00007ffe2583f940 EFLAGS: 00000293 ORIG_RAX: 000000000000004a
      [756289.627639] RAX: ffffffffffffffda RBX: 00005652f32cd0f0 RCX: 00007f08b27fbb7b
      [756289.628464] RDX: 00005652f32cbca0 RSI: 00005652f32cd110 RDI: 0000000000000003
      [756289.629323] RBP: 00005652f32cd110 R08: 0000000000000000 R09: 00007f08b28c4be0
      [756289.630172] R10: fffffffffffff39a R11: 0000000000000293 R12: 0000000000000001
      [756289.631007] R13: 00005652f32cd0f0 R14: 0000000000000001 R15: 00005652f32cc480
      [756289.631819] irq event stamp: 0
      [756289.632188] hardirqs last  enabled at (0): [<0000000000000000>] 0x0
      [756289.632911] hardirqs last disabled at (0): [<ffffffffa7e97c29>] copy_process+0x879/0x1cc0
      [756289.633893] softirqs last  enabled at (0): [<ffffffffa7e97c29>] copy_process+0x879/0x1cc0
      [756289.634871] softirqs last disabled at (0): [<0000000000000000>] 0x0
      [756289.635606] ---[ end trace 0a039fdc16ff3fef ]---
      [756289.636179] BTRFS: error (device sdc) in btrfs_sync_log:3136: errno=-5 IO failure
      [756289.637082] BTRFS info (device sdc): forced readonly
    
    Having checksum items covering ranges that overlap is dangerous as in some
    cases it can lead to having extent ranges for which we miss checksums
    after log replay or getting the wrong checksum item. There were some fixes
    in the past for bugs that resulted in this problem, and were explained and
    fixed by the following commits:
    
      27b9a8122ff71a ("Btrfs: fix csum tree corruption, duplicate and outdated checksums")
      b84b8390d6009c ("Btrfs: fix file read corruption after extent cloning and fsync")
      40e046acbd2f36 ("Btrfs: fix missing data checksums after replaying a log tree")
      e289f03ea79bbc ("btrfs: fix corrupt log due to concurrent fsync of inodes with shared extents")
    
    Fix the issue by making btrfs_csum_file_blocks() taking into account the
    start offset of the next checksum item when it decides to extend an
    existing checksum item, so that it never extends the checksum to end at a
    range that goes beyond the start range of the next checksum item.
    
    When we can not access the next checksum item without releasing the path,
    simply drop the optimization of extending the previous checksum item and
    fallback to inserting a new checksum item - this happens rarely and the
    optimization is not significant enough for a log tree in order to justify
    the extra complexity, as it would only save a few bytes (the size of a
    struct btrfs_item) of leaf space.
    
    This behaviour is only needed when inserting into a log tree because
    for the regular checksums tree we never have a case where we try to
    insert a range of checksums that overlap with a range that was previously
    inserted.
    
    A test case for fstests will follow soon.
    
    Reported-by: Philipp Fent <fent@in.tum.de>
    Link: https://lore.kernel.org/linux-btrfs/93c4600e-5263-5cba-adf0-6f47526e7561@in.tum.de/
    CC: stable@vger.kernel.org # 5.4+
    Tested-by: Anand Jain <anand.jain@oracle.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 363747ad1f44449b775e3180e412d5b2418734c4
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Wed May 19 10:52:46 2021 -0400

    btrfs: return errors from btrfs_del_csums in cleanup_ref_head
    
    commit 856bd270dc4db209c779ce1e9555c7641ffbc88e upstream.
    
    We are unconditionally returning 0 in cleanup_ref_head, despite the fact
    that btrfs_del_csums could fail.  We need to return the error so the
    transaction gets aborted properly, fix this by returning ret from
    btrfs_del_csums in cleanup_ref_head.
    
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    CC: stable@vger.kernel.org # 4.19+
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 99eee2efe4b7238ded8ba2563fc8cee117a35107
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Wed May 19 10:52:45 2021 -0400

    btrfs: fix error handling in btrfs_del_csums
    
    commit b86652be7c83f70bf406bed18ecf55adb9bfb91b upstream.
    
    Error injection stress would sometimes fail with checksums on disk that
    did not have a corresponding extent.  This occurred because the pattern
    in btrfs_del_csums was
    
            while (1) {
                    ret = btrfs_search_slot();
                    if (ret < 0)
                            break;
            }
            ret = 0;
    out:
            btrfs_free_path(path);
            return ret;
    
    If we got an error from btrfs_search_slot we'd clear the error because
    we were breaking instead of goto out.  Instead of using goto out, simply
    handle the cases where we may leave a random value in ret, and get rid
    of the
    
            ret = 0;
    out:
    
    pattern and simply allow break to have the proper error reporting.  With
    this fix we properly abort the transaction and do not commit thinking we
    successfully deleted the csum.
    
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    CC: stable@vger.kernel.org # 4.4+
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 22beee867bf1bce729fa2894c6df3ef6dc260a07
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Wed May 19 09:38:27 2021 -0400

    btrfs: mark ordered extent and inode with error if we fail to finish
    
    commit d61bec08b904cf171835db98168f82bc338e92e4 upstream.
    
    While doing error injection testing I saw that sometimes we'd get an
    abort that wouldn't stop the current transaction commit from completing.
    This abort was coming from finish ordered IO, but at this point in the
    transaction commit we should have gotten an error and stopped.
    
    It turns out the abort came from finish ordered io while trying to write
    out the free space cache.  It occurred to me that any failure inside of
    finish_ordered_io isn't actually raised to the person doing the writing,
    so we could have any number of failures in this path and think the
    ordered extent completed successfully and the inode was fine.
    
    Fix this by marking the ordered extent with BTRFS_ORDERED_IOERR, and
    marking the mapping of the inode with mapping_set_error, so any callers
    that simply call fdatawait will also get the error.
    
    With this we're seeing the IO error on the free space inode when we fail
    to do the finish_ordered_io.
    
    CC: stable@vger.kernel.org # 4.19+
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 50863015b6a7e31f23da18fc0fe68e9b022887f8
Author: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
Date:   Wed May 19 16:17:17 2021 +0530

    powerpc/kprobes: Fix validation of prefixed instructions across page boundary
    
    commit 82123a3d1d5a306fdf50c968a474cc60fe43a80f upstream.
    
    When checking if the probed instruction is the suffix of a prefixed
    instruction, we access the instruction at the previous word. If the
    probed instruction is the very first word of a module, we can end up
    trying to access an invalid page.
    
    Fix this by skipping the check for all instructions at the beginning of
    a page. Prefixed instructions cannot cross a 64-byte boundary and as
    such, we don't expect to encounter a suffix as the very first word in a
    page for kernel text. Even if there are prefixed instructions crossing
    a page boundary (from a module, for instance), the instruction will be
    illegal, so preventing probing on the suffix of such prefix instructions
    isn't worthwhile.
    
    Fixes: b4657f7650ba ("powerpc/kprobes: Don't allow breakpoints on suffixes")
    Cc: stable@vger.kernel.org # v5.8+
    Reported-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/0df9a032a05576a2fa8e97d1b769af2ff0eafbd6.1621416666.git.naveen.n.rao@linux.vnet.ibm.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3cbf4d6d2b52009ef74f808630664789d55650cd
Author: Borislav Petkov <bp@suse.de>
Date:   Thu May 27 11:02:26 2021 +0200

    x86/thermal: Fix LVT thermal setup for SMI delivery mode
    
    commit 9a90ed065a155d13db0d0ffeaad5cc54e51c90c6 upstream.
    
    There are machines out there with added value crap^WBIOS which provide an
    SMI handler for the local APIC thermal sensor interrupt. Out of reset,
    the BSP on those machines has something like 0x200 in that APIC register
    (timestamps left in because this whole issue is timing sensitive):
    
      [    0.033858] read lvtthmr: 0x330, val: 0x200
    
    which means:
    
     - bit 16 - the interrupt mask bit is clear and thus that interrupt is enabled
     - bits [10:8] have 010b which means SMI delivery mode.
    
    Now, later during boot, when the kernel programs the local APIC, it
    soft-disables it temporarily through the spurious vector register:
    
      setup_local_APIC:
    
            ...
    
            /*
             * If this comes from kexec/kcrash the APIC might be enabled in
             * SPIV. Soft disable it before doing further initialization.
             */
            value = apic_read(APIC_SPIV);
            value &= ~APIC_SPIV_APIC_ENABLED;
            apic_write(APIC_SPIV, value);
    
    which means (from the SDM):
    
    "10.4.7.2 Local APIC State After It Has Been Software Disabled
    
    ...
    
    * The mask bits for all the LVT entries are set. Attempts to reset these
    bits will be ignored."
    
    And this happens too:
    
      [    0.124111] APIC: Switch to symmetric I/O mode setup
      [    0.124117] lvtthmr 0x200 before write 0xf to APIC 0xf0
      [    0.124118] lvtthmr 0x10200 after write 0xf to APIC 0xf0
    
    This results in CPU 0 soft lockups depending on the placement in time
    when the APIC soft-disable happens. Those soft lockups are not 100%
    reproducible and the reason for that can only be speculated as no one
    tells you what SMM does. Likely, it confuses the SMM code that the APIC
    is disabled and the thermal interrupt doesn't doesn't fire at all,
    leading to CPU 0 stuck in SMM forever...
    
    Now, before
    
      4f432e8bb15b ("x86/mce: Get rid of mcheck_intel_therm_init()")
    
    due to how the APIC_LVTTHMR was read before APIC initialization in
    mcheck_intel_therm_init(), it would read the value with the mask bit 16
    clear and then intel_init_thermal() would replicate it onto the APs and
    all would be peachy - the thermal interrupt would remain enabled.
    
    But that commit moved that reading to a later moment in
    intel_init_thermal(), resulting in reading APIC_LVTTHMR on the BSP too
    late and with its interrupt mask bit set.
    
    Thus, revert back to the old behavior of reading the thermal LVT
    register before the APIC gets initialized.
    
    Fixes: 4f432e8bb15b ("x86/mce: Get rid of mcheck_intel_therm_init()")
    Reported-by: James Feeney <james@nurealm.net>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Cc: <stable@vger.kernel.org>
    Cc: Zhang Rui <rui.zhang@intel.com>
    Cc: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Link: https://lkml.kernel.org/r/YKIqDdFNaXYd39wz@zn.tnic
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 25823b4e08f63a72936cc13e7c3d3f7e2d9a19a3
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Tue May 25 13:08:41 2021 +0200

    x86/apic: Mark _all_ legacy interrupts when IO/APIC is missing
    
    commit 7d65f9e80646c595e8c853640a9d0768a33e204c upstream.
    
    PIC interrupts do not support affinity setting and they can end up on
    any online CPU. Therefore, it's required to mark the associated vectors
    as system-wide reserved. Otherwise, the corresponding irq descriptors
    are copied to the secondary CPUs but the vectors are not marked as
    assigned or reserved. This works correctly for the IO/APIC case.
    
    When the IO/APIC is disabled via config, kernel command line or lack of
    enumeration then all legacy interrupts are routed through the PIC, but
    nothing marks them as system-wide reserved vectors.
    
    As a consequence, a subsequent allocation on a secondary CPU can result in
    allocating one of these vectors, which triggers the BUG() in
    apic_update_vector() because the interrupt descriptor slot is not empty.
    
    Imran tried to work around that by marking those interrupts as allocated
    when a CPU comes online. But that's wrong in case that the IO/APIC is
    available and one of the legacy interrupts, e.g. IRQ0, has been switched to
    PIC mode because then marking them as allocated will fail as they are
    already marked as system vectors.
    
    Stay consistent and update the legacy vectors after attempting IO/APIC
    initialization and mark them as system vectors in case that no IO/APIC is
    available.
    
    Fixes: 69cde0004a4b ("x86/vector: Use matrix allocator for vector assignment")
    Reported-by: Imran Khan <imran.f.khan@oracle.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20210519233928.2157496-1-imran.f.khan@oracle.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a1f10530c7320270d1d0eab032d4b62ec3c92aa3
Author: Nirmoy Das <nirmoy.das@amd.com>
Date:   Fri May 28 16:54:16 2021 +0200

    drm/amdgpu: make sure we unpin the UVD BO
    
    commit 07438603a07e52f1c6aa731842bd298d2725b7be upstream.
    
    Releasing pinned BOs is illegal now. UVD 6 was missing from:
    commit 2f40801dc553 ("drm/amdgpu: make sure we unpin the UVD BO")
    
    Fixes: 2f40801dc553 ("drm/amdgpu: make sure we unpin the UVD BO")
    Cc: stable@vger.kernel.org
    Signed-off-by: Nirmoy Das <nirmoy.das@amd.com>
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9d1d6c04a60352e04c30bdc085dea04a2084a5d8
Author: Luben Tuikov <luben.tuikov@amd.com>
Date:   Wed May 12 12:33:23 2021 -0400

    drm/amdgpu: Don't query CE and UE errors
    
    commit dce3d8e1d070900e0feeb06787a319ff9379212c upstream.
    
    On QUERY2 IOCTL don't query counts of correctable
    and uncorrectable errors, since when RAS is
    enabled and supported on Vega20 server boards,
    this takes insurmountably long time, in O(n^3),
    which slows the system down to the point of it
    being unusable when we have GUI up.
    
    Fixes: ae363a212b14 ("drm/amdgpu: Add a new flag to AMDGPU_CTX_OP_QUERY_STATE2")
    Cc: Alexander Deucher <Alexander.Deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Luben Tuikov <luben.tuikov@amd.com>
    Reviewed-by: Alexander Deucher <Alexander.Deucher@amd.com>
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0c4559736d9a4ec1ca58ba98ca34e7c4da4c422b
Author: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
Date:   Mon May 31 09:21:38 2021 +0200

    nfc: fix NULL ptr dereference in llcp_sock_getname() after failed connect
    
    commit 4ac06a1e013cf5fdd963317ffd3b968560f33bba upstream.
    
    It's possible to trigger NULL pointer dereference by local unprivileged
    user, when calling getsockname() after failed bind() (e.g. the bind
    fails because LLCP_SAP_MAX used as SAP):
    
      BUG: kernel NULL pointer dereference, address: 0000000000000000
      CPU: 1 PID: 426 Comm: llcp_sock_getna Not tainted 5.13.0-rc2-next-20210521+ #9
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.14.0-1 04/01/2014
      Call Trace:
       llcp_sock_getname+0xb1/0xe0
       __sys_getpeername+0x95/0xc0
       ? lockdep_hardirqs_on_prepare+0xd5/0x180
       ? syscall_enter_from_user_mode+0x1c/0x40
       __x64_sys_getpeername+0x11/0x20
       do_syscall_64+0x36/0x70
       entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    This can be reproduced with Syzkaller C repro (bind followed by
    getpeername):
    https://syzkaller.appspot.com/x/repro.c?x=14def446e00000
    
    Cc: <stable@vger.kernel.org>
    Fixes: d646960f7986 ("NFC: Initial LLCP support")
    Reported-by: syzbot+80fb126e7f7d8b1a5914@syzkaller.appspotmail.com
    Reported-by: butt3rflyh4ck <butterflyhuangxx@gmail.com>
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
    Link: https://lore.kernel.org/r/20210531072138.5219-1-krzysztof.kozlowski@canonical.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bf63f3676c5f553c0cbaa8bc952484ac1e113fac
Author: Nicholas Piggin <npiggin@gmail.com>
Date:   Wed May 26 22:58:51 2021 +1000

    KVM: PPC: Book3S HV: Save host FSCR in the P7/8 path
    
    commit 1438709e6328925ef496dafd467dbd0353137434 upstream.
    
    Similar to commit 25edcc50d76c ("KVM: PPC: Book3S HV: Save and restore
    FSCR in the P9 path"), ensure the P7/8 path saves and restores the host
    FSCR. The logic explained in that patch actually applies there to the
    old path well: a context switch can be made before kvmppc_vcpu_run_hv
    restores the host FSCR and returns.
    
    Now both the p9 and the p7/8 paths now save and restore their FSCR, it
    no longer needs to be restored at the end of kvmppc_vcpu_run_hv
    
    Fixes: b005255e12a3 ("KVM: PPC: Book3S HV: Context-switch new POWER8 SPRs")
    Cc: stable@vger.kernel.org # v3.14+
    Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
    Reviewed-by: Fabiano Rosas <farosas@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20210526125851.3436735-1-npiggin@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 01049949f673494b5a0717b41e77a1d8779a8c36
Author: Pu Wen <puwen@hygon.cn>
Date:   Wed Jun 2 15:02:07 2021 +0800

    x86/sev: Check SME/SEV support in CPUID first
    
    commit 009767dbf42ac0dbe3cf48c1ee224f6b778aa85a upstream.
    
    The first two bits of the CPUID leaf 0x8000001F EAX indicate whether SEV
    or SME is supported, respectively. It's better to check whether SEV or
    SME is actually supported before accessing the MSR_AMD64_SEV to check
    whether SEV or SME is enabled.
    
    This is both a bare-metal issue and a guest/VM issue. Since the first
    generation Hygon Dhyana CPU doesn't support the MSR_AMD64_SEV, reading that
    MSR results in a #GP - either directly from hardware in the bare-metal
    case or via the hypervisor (because the RDMSR is actually intercepted)
    in the guest/VM case, resulting in a failed boot. And since this is very
    early in the boot phase, rdmsrl_safe()/native_read_msr_safe() can't be
    used.
    
    So check the CPUID bits first, before accessing the MSR.
    
     [ tlendacky: Expand and improve commit message. ]
     [ bp: Massage commit message. ]
    
    Fixes: eab696d8e8b9 ("x86/sev: Do not require Hypervisor CPUID bit for SEV guests")
    Signed-off-by: Pu Wen <puwen@hygon.cn>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Acked-by: Tom Lendacky <thomas.lendacky@amd.com>
    Cc: <stable@vger.kernel.org> # v5.10+
    Link: https://lkml.kernel.org/r/20210602070207.2480-1-puwen@hygon.cn
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit de8a25bef8609adf9c1d4a26bcb865c62a6ac9aa
Author: Borislav Petkov <bp@suse.de>
Date:   Wed Jun 2 12:07:52 2021 +0200

    dmaengine: idxd: Use cpu_feature_enabled()
    
    commit 74b2fc882d380d8fafc2a26f01d401c2a7beeadb upstream.
    
    When testing x86 feature bits, use cpu_feature_enabled() so that
    build-disabled features can remain off, regardless of what CPUID says.
    
    Fixes: 8e50d392652f ("dmaengine: idxd: Add shared workqueue support")
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-By: Vinod Koul <vkoul@kernel.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 25aaa062fa73f8a24dc73c31f024fb977db6559e
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Sat May 29 11:17:30 2021 +0200

    x86/cpufeatures: Force disable X86_FEATURE_ENQCMD and remove update_pasid()
    
    commit 9bfecd05833918526cc7357d55e393393440c5fa upstream.
    
    While digesting the XSAVE-related horrors which got introduced with
    the supervisor/user split, the recent addition of ENQCMD-related
    functionality got on the radar and turned out to be similarly broken.
    
    update_pasid(), which is only required when X86_FEATURE_ENQCMD is
    available, is invoked from two places:
    
     1) From switch_to() for the incoming task
    
     2) Via a SMP function call from the IOMMU/SMV code
    
    #1 is half-ways correct as it hacks around the brokenness of get_xsave_addr()
       by enforcing the state to be 'present', but all the conditionals in that
       code are completely pointless for that.
    
       Also the invocation is just useless overhead because at that point
       it's guaranteed that TIF_NEED_FPU_LOAD is set on the incoming task
       and all of this can be handled at return to user space.
    
    #2 is broken beyond repair. The comment in the code claims that it is safe
       to invoke this in an IPI, but that's just wishful thinking.
    
       FPU state of a running task is protected by fregs_lock() which is
       nothing else than a local_bh_disable(). As BH-disabled regions run
       usually with interrupts enabled the IPI can hit a code section which
       modifies FPU state and there is absolutely no guarantee that any of the
       assumptions which are made for the IPI case is true.
    
       Also the IPI is sent to all CPUs in mm_cpumask(mm), but the IPI is
       invoked with a NULL pointer argument, so it can hit a completely
       unrelated task and unconditionally force an update for nothing.
       Worse, it can hit a kernel thread which operates on a user space
       address space and set a random PASID for it.
    
    The offending commit does not cleanly revert, but it's sufficient to
    force disable X86_FEATURE_ENQCMD and to remove the broken update_pasid()
    code to make this dysfunctional all over the place. Anything more
    complex would require more surgery and none of the related functions
    outside of the x86 core code are blatantly wrong, so removing those
    would be overkill.
    
    As nothing enables the PASID bit in the IA32_XSS MSR yet, which is
    required to make this actually work, this cannot result in a regression
    except for related out of tree train-wrecks, but they are broken already
    today.
    
    Fixes: 20f0afd1fb3d ("x86/mmu: Allocate/free a PASID")
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Acked-by: Andy Lutomirski <luto@kernel.org>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/87mtsd6gr9.ffs@nanos.tec.linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4c438acbfbdfb90d6b922eeee25eaa6bdb029aa2
Author: James Smart <jsmart2021@gmail.com>
Date:   Fri May 28 14:22:40 2021 -0700

    scsi: lpfc: Fix failure to transmit ABTS on FC link
    
    commit 696770e72f2b42b92ea0a4a98087fb2ba376417a upstream.
    
    The abort_cmd_ia flag in an abort wqe describes whether an ABTS basic link
    service should be transmitted on the FC link or not.  Code added in
    lpfc_sli4_issue_abort_iotag() set the abort_cmd_ia flag incorrectly,
    surpressing ABTS transmission.
    
    A previous LPFC change to build an abort wqe inverted prior logic that
    determined whether an ABTS was to be issued on the FC link.
    
    Revert this logic to its proper state.
    
    Link: https://lore.kernel.org/r/20210528212240.11387-1-jsmart2021@gmail.com
    Fixes: db7531d2b377 ("scsi: lpfc: Convert abort handling to SLI-3 and SLI-4 handlers")
    Cc: <stable@vger.kernel.org> # v5.11+
    Signed-off-by: James Smart <jsmart2021@gmail.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 455170aca45afb46d1f12ce2517be73ecf5bfde5
Author: Ding Hui <dinghui@sangfor.com.cn>
Date:   Fri Jun 4 20:01:21 2021 -0700

    mm/page_alloc: fix counting of free pages after take off from buddy
    
    commit bac9c6fa1f929213bbd0ac9cdf21e8e2f0916828 upstream.
    
    Recently we found that there is a lot MemFree left in /proc/meminfo
    after do a lot of pages soft offline, it's not quite correct.
    
    Before Oscar's rework of soft offline for free pages [1], if we soft
    offline free pages, these pages are left in buddy with HWPoison flag,
    and NR_FREE_PAGES is not updated immediately.  So the difference between
    NR_FREE_PAGES and real number of available free pages is also even big
    at the beginning.
    
    However, with the workload running, when we catch HWPoison page in any
    alloc functions subsequently, we will remove it from buddy, meanwhile
    update the NR_FREE_PAGES and try again, so the NR_FREE_PAGES will get
    more and more closer to the real number of available free pages.
    (regardless of unpoison_memory())
    
    Now, for offline free pages, after a successful call
    take_page_off_buddy(), the page is no longer belong to buddy allocator,
    and will not be used any more, but we missed accounting NR_FREE_PAGES in
    this situation, and there is no chance to be updated later.
    
    Do update in take_page_off_buddy() like rmqueue() does, but avoid double
    counting if some one already set_migratetype_isolate() on the page.
    
    [1]: commit 06be6ff3d2ec ("mm,hwpoison: rework soft offline for free pages")
    
    Link: https://lkml.kernel.org/r/20210526075247.11130-1-dinghui@sangfor.com.cn
    Fixes: 06be6ff3d2ec ("mm,hwpoison: rework soft offline for free pages")
    Signed-off-by: Ding Hui <dinghui@sangfor.com.cn>
    Suggested-by: Naoya Horiguchi <naoya.horiguchi@nec.com>
    Reviewed-by: Oscar Salvador <osalvador@suse.de>
    Acked-by: David Hildenbrand <david@redhat.com>
    Acked-by: Naoya Horiguchi <naoya.horiguchi@nec.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 3c822fea4bb28988b762617c2edd059c20256443
Author: Gerald Schaefer <gerald.schaefer@linux.ibm.com>
Date:   Fri Jun 4 20:01:18 2021 -0700

    mm/debug_vm_pgtable: fix alignment for pmd/pud_advanced_tests()
    
    commit 04f7ce3f07ce39b1a3ca03a56b238a53acc52cfd upstream.
    
    In pmd/pud_advanced_tests(), the vaddr is aligned up to the next pmd/pud
    entry, and so it does not match the given pmdp/pudp and (aligned down)
    pfn any more.
    
    For s390, this results in memory corruption, because the IDTE
    instruction used e.g.  in xxx_get_and_clear() will take the vaddr for
    some calculations, in combination with the given pmdp.  It will then end
    up with a wrong table origin, ending on ...ff8, and some of those
    wrongly set low-order bits will also select a wrong pagetable level for
    the index addition.  IDTE could therefore invalidate (or 0x20) something
    outside of the page tables, depending on the wrongly picked index, which
    in turn depends on the random vaddr.
    
    As result, we sometimes see "BUG task_struct (Not tainted): Padding
    overwritten" on s390, where one 0x5a padding value got overwritten with
    0x7a.
    
    Fix this by aligning down, similar to how the pmd/pud_aligned pfns are
    calculated.
    
    Link: https://lkml.kernel.org/r/20210525130043.186290-2-gerald.schaefer@linux.ibm.com
    Fixes: a5c3b9ffb0f40 ("mm/debug_vm_pgtable: add tests validating advanced arch page table helpers")
    Signed-off-by: Gerald Schaefer <gerald.schaefer@linux.ibm.com>
    Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com>
    Cc: Vineet Gupta <vgupta@synopsys.com>
    Cc: Palmer Dabbelt <palmer@dabbelt.com>
    Cc: Paul Walmsley <paul.walmsley@sifive.com>
    Cc: <stable@vger.kernel.org>    [5.9+]
    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 0a31dd6fd2f4e7db538fb6eb1f06973d81f8dd3b
Author: Junxiao Bi <junxiao.bi@oracle.com>
Date:   Fri Jun 4 20:01:42 2021 -0700

    ocfs2: fix data corruption by fallocate
    
    commit 6bba4471f0cc1296fe3c2089b9e52442d3074b2e upstream.
    
    When fallocate punches holes out of inode size, if original isize is in
    the middle of last cluster, then the part from isize to the end of the
    cluster will be zeroed with buffer write, at that time isize is not yet
    updated to match the new size, if writeback is kicked in, it will invoke
    ocfs2_writepage()->block_write_full_page() where the pages out of inode
    size will be dropped.  That will cause file corruption.  Fix this by
    zero out eof blocks when extending the inode size.
    
    Running the following command with qemu-image 4.2.1 can get a corrupted
    coverted image file easily.
    
        qemu-img convert -p -t none -T none -f qcow2 $qcow_image \
                 -O qcow2 -o compat=1.1 $qcow_image.conv
    
    The usage of fallocate in qemu is like this, it first punches holes out
    of inode size, then extend the inode size.
    
        fallocate(11, FALLOC_FL_KEEP_SIZE|FALLOC_FL_PUNCH_HOLE, 2276196352, 65536) = 0
        fallocate(11, 0, 2276196352, 65536) = 0
    
    v1: https://www.spinics.net/lists/linux-fsdevel/msg193999.html
    v2: https://lore.kernel.org/linux-fsdevel/20210525093034.GB4112@quack2.suse.cz/T/
    
    Link: https://lkml.kernel.org/r/20210528210648.9124-1-junxiao.bi@oracle.com
    Signed-off-by: Junxiao Bi <junxiao.bi@oracle.com>
    Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.com>
    Cc: Jan Kara <jack@suse.cz>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    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 b8ff869f20152fbe66b6c2e2715d26a2f9897cca
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Fri Jun 4 20:01:14 2021 -0700

    pid: take a reference when initializing `cad_pid`
    
    commit 0711f0d7050b9e07c44bc159bbc64ac0a1022c7f upstream.
    
    During boot, kernel_init_freeable() initializes `cad_pid` to the init
    task's struct pid.  Later on, we may change `cad_pid` via a sysctl, and
    when this happens proc_do_cad_pid() will increment the refcount on the
    new pid via get_pid(), and will decrement the refcount on the old pid
    via put_pid().  As we never called get_pid() when we initialized
    `cad_pid`, we decrement a reference we never incremented, can therefore
    free the init task's struct pid early.  As there can be dangling
    references to the struct pid, we can later encounter a use-after-free
    (e.g.  when delivering signals).
    
    This was spotted when fuzzing v5.13-rc3 with Syzkaller, but seems to
    have been around since the conversion of `cad_pid` to struct pid in
    commit 9ec52099e4b8 ("[PATCH] replace cad_pid by a struct pid") from the
    pre-KASAN stone age of v2.6.19.
    
    Fix this by getting a reference to the init task's struct pid when we
    assign it to `cad_pid`.
    
    Full KASAN splat below.
    
       ==================================================================
       BUG: KASAN: use-after-free in ns_of_pid include/linux/pid.h:153 [inline]
       BUG: KASAN: use-after-free in task_active_pid_ns+0xc0/0xc8 kernel/pid.c:509
       Read of size 4 at addr ffff23794dda0004 by task syz-executor.0/273
    
       CPU: 1 PID: 273 Comm: syz-executor.0 Not tainted 5.12.0-00001-g9aef892b2d15 #1
       Hardware name: linux,dummy-virt (DT)
       Call trace:
        ns_of_pid include/linux/pid.h:153 [inline]
        task_active_pid_ns+0xc0/0xc8 kernel/pid.c:509
        do_notify_parent+0x308/0xe60 kernel/signal.c:1950
        exit_notify kernel/exit.c:682 [inline]
        do_exit+0x2334/0x2bd0 kernel/exit.c:845
        do_group_exit+0x108/0x2c8 kernel/exit.c:922
        get_signal+0x4e4/0x2a88 kernel/signal.c:2781
        do_signal arch/arm64/kernel/signal.c:882 [inline]
        do_notify_resume+0x300/0x970 arch/arm64/kernel/signal.c:936
        work_pending+0xc/0x2dc
    
       Allocated by task 0:
        slab_post_alloc_hook+0x50/0x5c0 mm/slab.h:516
        slab_alloc_node mm/slub.c:2907 [inline]
        slab_alloc mm/slub.c:2915 [inline]
        kmem_cache_alloc+0x1f4/0x4c0 mm/slub.c:2920
        alloc_pid+0xdc/0xc00 kernel/pid.c:180
        copy_process+0x2794/0x5e18 kernel/fork.c:2129
        kernel_clone+0x194/0x13c8 kernel/fork.c:2500
        kernel_thread+0xd4/0x110 kernel/fork.c:2552
        rest_init+0x44/0x4a0 init/main.c:687
        arch_call_rest_init+0x1c/0x28
        start_kernel+0x520/0x554 init/main.c:1064
        0x0
    
       Freed by task 270:
        slab_free_hook mm/slub.c:1562 [inline]
        slab_free_freelist_hook+0x98/0x260 mm/slub.c:1600
        slab_free mm/slub.c:3161 [inline]
        kmem_cache_free+0x224/0x8e0 mm/slub.c:3177
        put_pid.part.4+0xe0/0x1a8 kernel/pid.c:114
        put_pid+0x30/0x48 kernel/pid.c:109
        proc_do_cad_pid+0x190/0x1b0 kernel/sysctl.c:1401
        proc_sys_call_handler+0x338/0x4b0 fs/proc/proc_sysctl.c:591
        proc_sys_write+0x34/0x48 fs/proc/proc_sysctl.c:617
        call_write_iter include/linux/fs.h:1977 [inline]
        new_sync_write+0x3ac/0x510 fs/read_write.c:518
        vfs_write fs/read_write.c:605 [inline]
        vfs_write+0x9c4/0x1018 fs/read_write.c:585
        ksys_write+0x124/0x240 fs/read_write.c:658
        __do_sys_write fs/read_write.c:670 [inline]
        __se_sys_write fs/read_write.c:667 [inline]
        __arm64_sys_write+0x78/0xb0 fs/read_write.c:667
        __invoke_syscall arch/arm64/kernel/syscall.c:37 [inline]
        invoke_syscall arch/arm64/kernel/syscall.c:49 [inline]
        el0_svc_common.constprop.1+0x16c/0x388 arch/arm64/kernel/syscall.c:129
        do_el0_svc+0xf8/0x150 arch/arm64/kernel/syscall.c:168
        el0_svc+0x28/0x38 arch/arm64/kernel/entry-common.c:416
        el0_sync_handler+0x134/0x180 arch/arm64/kernel/entry-common.c:432
        el0_sync+0x154/0x180 arch/arm64/kernel/entry.S:701
    
       The buggy address belongs to the object at ffff23794dda0000
        which belongs to the cache pid of size 224
       The buggy address is located 4 bytes inside of
        224-byte region [ffff23794dda0000, ffff23794dda00e0)
       The buggy address belongs to the page:
       page:(____ptrval____) refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x4dda0
       head:(____ptrval____) order:1 compound_mapcount:0
       flags: 0x3fffc0000010200(slab|head)
       raw: 03fffc0000010200 dead000000000100 dead000000000122 ffff23794d40d080
       raw: 0000000000000000 0000000000190019 00000001ffffffff 0000000000000000
       page dumped because: kasan: bad access detected
    
       Memory state around the buggy address:
        ffff23794dd9ff00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
        ffff23794dd9ff80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
       >ffff23794dda0000: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                          ^
        ffff23794dda0080: fb fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc
        ffff23794dda0100: fc fc fc fc fc fc fc fc 00 00 00 00 00 00 00 00
       ==================================================================
    
    Link: https://lkml.kernel.org/r/20210524172230.38715-1-mark.rutland@arm.com
    Fixes: 9ec52099e4b8678a ("[PATCH] replace cad_pid by a struct pid")
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Acked-by: Christian Brauner <christian.brauner@ubuntu.com>
    Cc: Cedric Le Goater <clg@fr.ibm.com>
    Cc: Christian Brauner <christian@brauner.io>
    Cc: Eric W. Biederman <ebiederm@xmission.com>
    Cc: Kees Cook <keescook@chromium.org
    Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Cc: Paul Mackerras <paulus@samba.org>
    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 9a01a5cd63cd4e419f56f163012f6ed0c4b7a69d
Author: Marco Elver <elver@google.com>
Date:   Fri Jun 4 20:01:11 2021 -0700

    kfence: use TASK_IDLE when awaiting allocation
    
    commit 8fd0e995cc7b6a7a8a40bc03d52a2cd445beeff4 upstream.
    
    Since wait_event() uses TASK_UNINTERRUPTIBLE by default, waiting for an
    allocation counts towards load.  However, for KFENCE, this does not make
    any sense, since there is no busy work we're awaiting.
    
    Instead, use TASK_IDLE via wait_event_idle() to not count towards load.
    
    BugLink: https://bugzilla.suse.com/show_bug.cgi?id=1185565
    Link: https://lkml.kernel.org/r/20210521083209.3740269-1-elver@google.com
    Fixes: 407f1d8c1b5f ("kfence: await for allocation using wait_event")
    Signed-off-by: Marco Elver <elver@google.com>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Alexander Potapenko <glider@google.com>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: David Laight <David.Laight@ACULAB.COM>
    Cc: Hillf Danton <hdanton@sina.com>
    Cc: <stable@vger.kernel.org>    [5.12+]
    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 18071d618c1a09e751af193b0888cc4753ec47e3
Author: Marco Elver <elver@google.com>
Date:   Tue May 4 18:40:24 2021 -0700

    kfence: maximize allocation wait timeout duration
    
    commit 37c9284f6932b915043717703d6496dfd59c85f5 upstream.
    
    The allocation wait timeout was initially added because of warnings due to
    CONFIG_DETECT_HUNG_TASK=y [1].  While the 1 sec timeout is sufficient to
    resolve the warnings (given the hung task timeout must be 1 sec or larger)
    it may cause unnecessary wake-ups if the system is idle:
    
      https://lkml.kernel.org/r/CADYN=9J0DQhizAGB0-jz4HOBBh+05kMBXb4c0cXMS7Qi5NAJiw@mail.gmail.com
    
    Fix it by computing the timeout duration in terms of the current
    sysctl_hung_task_timeout_secs value.
    
    Link: https://lkml.kernel.org/r/20210421105132.3965998-3-elver@google.com
    Signed-off-by: Marco Elver <elver@google.com>
    Cc: Alexander Potapenko <glider@google.com>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: Hillf Danton <hdanton@sina.com>
    Cc: Jann Horn <jannh@google.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    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 08ec01b5318a65abdef9f5ab88ceb0f4fc0b19e2
Author: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Date:   Fri Jun 4 20:01:08 2021 -0700

    Revert "MIPS: make userspace mapping young by default"
    
    commit 50c25ee97cf6ab011542167ab590c17012cea4ed upstream.
    
    This reverts commit f685a533a7fab35c5d069dcd663f59c8e4171a75.
    
    The MIPS cache flush logic needs to know whether the mapping was already
    established to decide how to flush caches.  This is done by checking the
    valid bit in the PTE.  The commit above breaks this logic by setting the
    valid in the PTE in new mappings, which causes kernel crashes.
    
    Link: https://lkml.kernel.org/r/20210526094335.92948-1-tsbogend@alpha.franken.de
    Fixes: f685a533a7f ("MIPS: make userspace mapping young by default")
    Reported-by: Zhou Yanjie <zhouyanjie@wanyeetech.com>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Cc: Huang Pei <huangpei@loongson.cn>
    Cc: Nicholas Piggin <npiggin@gmail.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 62fa43c7ee55cde443e6e7f1b71f490ffe304d04
Author: Phil Elwell <phil@raspberrypi.com>
Date:   Tue Jun 8 13:00:49 2021 +0100

    usb: dwc2: Fix build in periphal-only mode
    
    In branches to which 24d209dba5a3 ("usb: dwc2: Fix hibernation between
    host and device modes.") has been back-ported, the bus_suspended member
    of struct dwc2_hsotg is only present in builds that support host-mode.
    To avoid having to pull in several more non-Fix commits in order to
    get it to compile, wrap the usage of the member in a macro conditional.
    
    Fixes: 24d209dba5a3 ("usb: dwc2: Fix hibernation between host and device modes.")
    Signed-off-by: Phil Elwell <phil@raspberrypi.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c48d71d1367f85d2d90767dc17cc9b9e507f3ed4
Author: Ritesh Harjani <riteshh@linux.ibm.com>
Date:   Thu Apr 29 16:13:44 2021 +0530

    ext4: fix accessing uninit percpu counter variable with fast_commit
    
    commit b45f189a19b38e01676628db79cd3eeb1333516e upstream.
    
    When running generic/527 with fast_commit configuration, the following
    issue is seen on Power.  With fast_commit, during ext4_fc_replay()
    (which can be called from ext4_fill_super()), if inode eviction
    happens then it can access an uninitialized percpu counter variable.
    
    This patch adds the check before accessing the counters in
    ext4_free_inode() path.
    
    [  321.165371] run fstests generic/527 at 2021-04-29 08:38:43
    [  323.027786] EXT4-fs (dm-0): mounted filesystem with ordered data mode. Opts: block_validity. Quota mode: none.
    [  323.618772] BUG: Unable to handle kernel data access on read at 0x1fbd80000
    [  323.619767] Faulting instruction address: 0xc000000000bae78c
    cpu 0x1: Vector: 300 (Data Access) at [c000000010706ef0]
        pc: c000000000bae78c: percpu_counter_add_batch+0x3c/0x100
        lr: c0000000006d0bb0: ext4_free_inode+0x780/0xb90
        pid   = 5593, comm = mount
            ext4_free_inode+0x780/0xb90
            ext4_evict_inode+0xa8c/0xc60
            evict+0xfc/0x1e0
            ext4_fc_replay+0xc50/0x20f0
            do_one_pass+0xfe0/0x1350
            jbd2_journal_recover+0x184/0x2e0
            jbd2_journal_load+0x1c0/0x4a0
            ext4_fill_super+0x2458/0x4200
            mount_bdev+0x1dc/0x290
            ext4_mount+0x28/0x40
            legacy_get_tree+0x4c/0xa0
            vfs_get_tree+0x4c/0x120
            path_mount+0xcf8/0xd70
            do_mount+0x80/0xd0
            sys_mount+0x3fc/0x490
            system_call_exception+0x384/0x3d0
            system_call_common+0xec/0x278
    
    Cc: stable@kernel.org
    Fixes: 8016e29f4362 ("ext4: fast commit recovery path")
    Signed-off-by: Ritesh Harjani <riteshh@linux.ibm.com>
    Reviewed-by: Harshad Shirwadkar <harshadshirwadkar@gmail.com>
    Link: https://lore.kernel.org/r/6cceb9a75c54bef8fa9696c1b08c8df5ff6169e2.1619692410.git.riteshh@linux.ibm.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 04fb2baa0b147f51db065a1b13a11954abe592d0
Author: Phillip Potter <phil@philpotter.co.uk>
Date:   Mon Apr 12 08:38:37 2021 +0100

    ext4: fix memory leak in ext4_mb_init_backend on error path.
    
    commit a8867f4e3809050571c98de7a2d465aff5e4daf5 upstream.
    
    Fix a memory leak discovered by syzbot when a file system is corrupted
    with an illegally large s_log_groups_per_flex.
    
    Reported-by: syzbot+aa12d6106ea4ca1b6aae@syzkaller.appspotmail.com
    Signed-off-by: Phillip Potter <phil@philpotter.co.uk>
    Cc: stable@kernel.org
    Link: https://lore.kernel.org/r/20210412073837.1686-1-phil@philpotter.co.uk
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ba499e0bf9c81a258548e813915f4a4cb4395ea2
Author: Harshad Shirwadkar <harshadshirwadkar@gmail.com>
Date:   Wed May 19 14:59:20 2021 -0700

    ext4: fix fast commit alignment issues
    
    commit a7ba36bc94f20b6c77f16364b9a23f582ea8faac upstream.
    
    Fast commit recovery data on disk may not be aligned. So, when the
    recovery code reads it, this patch makes sure that fast commit info
    found on-disk is first memcpy-ed into an aligned variable before
    accessing it. As a consequence of it, we also remove some macros that
    could resulted in unaligned accesses.
    
    Cc: stable@kernel.org
    Fixes: 8016e29f4362 ("ext4: fast commit recovery path")
    Signed-off-by: Harshad Shirwadkar <harshadshirwadkar@gmail.com>
    Link: https://lore.kernel.org/r/20210519215920.2037527-1-harshads@google.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 48105dc98c9ca35af418746277b087cb2bc6df7c
Author: Ye Bin <yebin10@huawei.com>
Date:   Thu May 6 22:10:42 2021 +0800

    ext4: fix bug on in ext4_es_cache_extent as ext4_split_extent_at failed
    
    commit 082cd4ec240b8734a82a89ffb890216ac98fec68 upstream.
    
    We got follow bug_on when run fsstress with injecting IO fault:
    [130747.323114] kernel BUG at fs/ext4/extents_status.c:762!
    [130747.323117] Internal error: Oops - BUG: 0 [#1] SMP
    ......
    [130747.334329] Call trace:
    [130747.334553]  ext4_es_cache_extent+0x150/0x168 [ext4]
    [130747.334975]  ext4_cache_extents+0x64/0xe8 [ext4]
    [130747.335368]  ext4_find_extent+0x300/0x330 [ext4]
    [130747.335759]  ext4_ext_map_blocks+0x74/0x1178 [ext4]
    [130747.336179]  ext4_map_blocks+0x2f4/0x5f0 [ext4]
    [130747.336567]  ext4_mpage_readpages+0x4a8/0x7a8 [ext4]
    [130747.336995]  ext4_readpage+0x54/0x100 [ext4]
    [130747.337359]  generic_file_buffered_read+0x410/0xae8
    [130747.337767]  generic_file_read_iter+0x114/0x190
    [130747.338152]  ext4_file_read_iter+0x5c/0x140 [ext4]
    [130747.338556]  __vfs_read+0x11c/0x188
    [130747.338851]  vfs_read+0x94/0x150
    [130747.339110]  ksys_read+0x74/0xf0
    
    This patch's modification is according to Jan Kara's suggestion in:
    https://patchwork.ozlabs.org/project/linux-ext4/patch/20210428085158.3728201-1-yebin10@huawei.com/
    "I see. Now I understand your patch. Honestly, seeing how fragile is trying
    to fix extent tree after split has failed in the middle, I would probably
    go even further and make sure we fix the tree properly in case of ENOSPC
    and EDQUOT (those are easily user triggerable).  Anything else indicates a
    HW problem or fs corruption so I'd rather leave the extent tree as is and
    don't try to fix it (which also means we will not create overlapping
    extents)."
    
    Cc: stable@kernel.org
    Signed-off-by: Ye Bin <yebin10@huawei.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Link: https://lore.kernel.org/r/20210506141042.3298679-1-yebin10@huawei.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1385b23396d511d5233b8b921ac3058b3f86a5e1
Author: Alexey Makhalov <amakhalov@vmware.com>
Date:   Fri May 21 07:55:33 2021 +0000

    ext4: fix memory leak in ext4_fill_super
    
    commit afd09b617db3786b6ef3dc43e28fe728cfea84df upstream.
    
    Buffer head references must be released before calling kill_bdev();
    otherwise the buffer head (and its page referenced by b_data) will not
    be freed by kill_bdev, and subsequently that bh will be leaked.
    
    If blocksizes differ, sb_set_blocksize() will kill current buffers and
    page cache by using kill_bdev(). And then super block will be reread
    again but using correct blocksize this time. sb_set_blocksize() didn't
    fully free superblock page and buffer head, and being busy, they were
    not freed and instead leaked.
    
    This can easily be reproduced by calling an infinite loop of:
    
      systemctl start <ext4_on_lvm>.mount, and
      systemctl stop <ext4_on_lvm>.mount
    
    ... since systemd creates a cgroup for each slice which it mounts, and
    the bh leak get amplified by a dying memory cgroup that also never
    gets freed, and memory consumption is much more easily noticed.
    
    Fixes: ce40733ce93d ("ext4: Check for return value from sb_set_blocksize")
    Fixes: ac27a0ec112a ("ext4: initial copy of files from ext3")
    Link: https://lore.kernel.org/r/20210521075533.95732-1-amakhalov@vmware.com
    Signed-off-by: Alexey Makhalov <amakhalov@vmware.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ff7fe51dc492d83857005710ee7bd7a1cb917f33
Author: Marek Vasut <marex@denx.de>
Date:   Mon Apr 26 12:23:21 2021 +0200

    ARM: dts: imx6q-dhcom: Add PU,VDD1P1,VDD2P5 regulators
    
    commit 8967b27a6c1c19251989c7ab33c058d16e4a5f53 upstream.
    
    Per schematic, both PU and SOC regulator are supplied from LTC3676 SW1
    via VDDSOC_IN rail, add the PU input. Both VDD1P1, VDD2P5 are supplied
    from LTC3676 SW2 via VDDHIGH_IN rail, add both inputs.
    
    While no instability or problems are currently observed, the regulators
    should be fully described in DT and that description should fully match
    the hardware, else this might lead to unforseen issues later. Fix this.
    
    Fixes: 52c7a088badd ("ARM: dts: imx6q: Add support for the DHCOM iMX6 SoM and PDK2")
    Reviewed-by: Fabio Estevam <festevam@gmail.com>
    Signed-off-by: Marek Vasut <marex@denx.de>
    Cc: Christoph Niedermaier <cniedermaier@dh-electronics.com>
    Cc: Fabio Estevam <festevam@gmail.com>
    Cc: Ludwig Zenz <lzenz@dh-electronics.com>
    Cc: NXP Linux Team <linux-imx@nxp.com>
    Cc: Shawn Guo <shawnguo@kernel.org>
    Cc: stable@vger.kernel.org
    Reviewed-by: Christoph Niedermaier <cniedermaier@dh-electronics.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d16c0b0658b270a35d78548391a698a1246d6390
Author: Michal Vokáč <michal.vokac@ysoft.com>
Date:   Tue Apr 13 16:45:57 2021 +0200

    ARM: dts: imx6dl-yapp4: Fix RGMII connection to QCA8334 switch
    
    commit 0e4a4a08cd78efcaddbc2e4c5ed86b5a5cb8a15e upstream.
    
    The FEC does not have a PHY so it should not have a phy-handle. It is
    connected to the switch at RGMII level so we need a fixed-link sub-node
    on both ends.
    
    This was not a problem until the qca8k.c driver was converted to PHYLINK
    by commit b3591c2a3661 ("net: dsa: qca8k: Switch to PHYLINK instead of
    PHYLIB"). That commit revealed the FEC configuration was not correct.
    
    Fixes: 87489ec3a77f ("ARM: dts: imx: Add Y Soft IOTA Draco, Hydra and Ursa boards")
    Cc: stable@vger.kernel.org
    Signed-off-by: Michal Vokáč <michal.vokac@ysoft.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5c671c9d836377304c107a8748374e67d61e4109
Author: Hui Wang <hui.wang@canonical.com>
Date:   Wed Jun 2 22:54:24 2021 +0800

    ALSA: hda: update the power_state during the direct-complete
    
    commit b8b90c17602689eeaa5b219d104bbc215d1225cc upstream.
    
    The patch_realtek.c needs to check if the power_state.event equals
    PM_EVENT_SUSPEND, after using the direct-complete, the suspend() and
    resume() will be skipped if the codec is already rt_suspended, in this
    case, the patch_realtek.c will always get PM_EVENT_ON even the system
    is really resumed from S3.
    
    We could set power_state to PMSG_SUSPEND in the prepare(), if other
    PM functions are called before complete(), those functions will
    override power_state; if no other PM functions are called before
    complete(), we could know the suspend() and resume() are skipped since
    only S3 pm functions could be skipped by direct-complete, in this case
    set power_state to PMSG_RESUME in the complete(). This could guarantee
    the first time of calling hda_codec_runtime_resume() after complete()
    has the correct power_state.
    
    Fixes: 215a22ed31a1 ("ALSA: hda: Refactor codec PM to use direct-complete optimization")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Hui Wang <hui.wang@canonical.com>
    Link: https://lore.kernel.org/r/20210602145424.3132-1-hui.wang@canonical.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 89b6aacdc4830d010848f1f42974a73fc2ff0334
Author: Carlos M <carlos.marr.pz@gmail.com>
Date:   Mon May 31 22:20:26 2021 +0200

    ALSA: hda: Fix for mute key LED for HP Pavilion 15-CK0xx
    
    commit 901be145a46eb79879367d853194346a549e623d upstream.
    
    For the HP Pavilion 15-CK0xx, with audio subsystem ID 0x103c:0x841c,
    adding a line in patch_realtek.c to apply the ALC269_FIXUP_HP_MUTE_LED_MIC3
    fix activates the mute key LED.
    
    Signed-off-by: Carlos M <carlos.marr.pz@gmail.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20210531202026.35427-1-carlos.marr.pz@gmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 601554201a95323b3e430be411b50b1f62fd62b7
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Jun 2 13:38:23 2021 +0200

    ALSA: timer: Fix master timer notification
    
    commit 9c1fe96bded935369f8340c2ac2e9e189f697d5d upstream.
    
    snd_timer_notify1() calls the notification to each slave for a master
    event, but it passes a wrong event number.  It should be +10 offset,
    corresponding to SNDRV_TIMER_EVENT_MXXX, but it's incorrectly with
    +100 offset.  Casually this was spotted by UBSAN check via syzkaller.
    
    Reported-by: syzbot+d102fa5b35335a7e544e@syzkaller.appspotmail.com
    Reviewed-by: Jaroslav Kysela <perex@perex.cz>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/000000000000e5560e05c3bd1d63@google.com
    Link: https://lore.kernel.org/r/20210602113823.23777-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 112c92cf82a2dbc6a4855bd56b58011522b12049
Author: Bob Peterson <rpeterso@redhat.com>
Date:   Tue May 18 09:12:10 2021 -0400

    gfs2: fix scheduling while atomic bug in glocks
    
    commit 20265d9a67e40eafd39a8884658ca2e36f05985d upstream.
    
    Before this patch, in the unlikely event that gfs2_glock_dq encountered
    a withdraw, it would do a wait_on_bit to wait for its journal to be
    recovered, but it never released the glock's spin_lock, which caused a
    scheduling-while-atomic error.
    
    This patch unlocks the lockref spin_lock before waiting for recovery.
    
    Fixes: 601ef0d52e96 ("gfs2: Force withdraw to replay journals and wait for it to finish")
    Cc: stable@vger.kernel.org # v5.7+
    Reported-by: Alexander Aring <aahringo@redhat.com>
    Signed-off-by: Bob Peterson <rpeterso@redhat.com>
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 92462d2e0a4c7cfc6ab490db2c0a049409581288
Author: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>
Date:   Mon Mar 8 18:42:03 2021 +0100

    HID: multitouch: require Finger field to mark Win8 reports as MT
    
    commit a2353e3b26012ff43bcdf81d37a3eaddd7ecdbf3 upstream.
    
    This effectively changes collection_is_mt from
      contact ID in report->field
    to
      (device is Win8 => collection is finger) && contact ID in report->field
    
    Some devices erroneously report Pen for fingers, and Win8 stylus-on-touchscreen
    devices report contact ID, but mark the accompanying touchscreen device's
    collection correctly
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>
    Acked-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9cf27473f21913a3eaf4702dd2a25415afd5f33f
Author: Johan Hovold <johan@kernel.org>
Date:   Mon May 17 12:04:30 2021 +0200

    HID: magicmouse: fix NULL-deref on disconnect
    
    commit 4b4f6cecca446abcb686c6e6c451d4f1ec1a7497 upstream.
    
    Commit 9d7b18668956 ("HID: magicmouse: add support for Apple Magic
    Trackpad 2") added a sanity check for an Apple trackpad but returned
    success instead of -ENODEV when the check failed. This means that the
    remove callback will dereference the never-initialised driver data
    pointer when the driver is later unbound (e.g. on USB disconnect).
    
    Reported-by: syzbot+ee6f6e2e68886ca256a8@syzkaller.appspotmail.com
    Fixes: 9d7b18668956 ("HID: magicmouse: add support for Apple Magic Trackpad 2")
    Cc: stable@vger.kernel.org      # 4.20
    Cc: Claudio Mettler <claudio@ponyfleisch.ch>
    Cc: Marek Wyborski <marek.wyborski@emwesoft.com>
    Cc: Sean O'Brien <seobrien@chromium.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4a88d9210c5209dca696b6d79b500a063c519d43
Author: Johnny Chuang <johnny.chuang.emc@gmail.com>
Date:   Tue Apr 13 09:20:50 2021 +0800

    HID: i2c-hid: Skip ELAN power-on command after reset
    
    commit ca66a6770bd9d6d99e469debd1c7363ac455daf9 upstream.
    
    For ELAN touchscreen, we found our boot code of IC was not flexible enough
    to receive and handle this command.
    Once the FW main code of our controller is crashed for some reason,
    the controller could not be enumerated successfully to be recognized
    by the system host. therefore, it lost touch functionality.
    
    Add quirk for skip send power-on command after reset.
    It will impact to ELAN touchscreen and touchpad on HID over I2C projects.
    
    Fixes: 43b7029f475e ("HID: i2c-hid: Send power-on command after reset").
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Johnny Chuang <johnny.chuang.emc@gmail.com>
    Reviewed-by: Harry Cutts <hcutts@chromium.org>
    Reviewed-by: Douglas Anderson <dianders@chromium.org>
    Tested-by: Douglas Anderson <dianders@chromium.org>
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dde8686985ec24d6b00487080a906609bd613ea1
Author: Pavel Skripkin <paskripkin@gmail.com>
Date:   Thu Jun 3 19:39:35 2021 +0300

    net: caif: fix memory leak in cfusbl_device_notify
    
    commit 7f5d86669fa4d485523ddb1d212e0a2d90bd62bb upstream.
    
    In case of caif_enroll_dev() fail, allocated
    link_support won't be assigned to the corresponding
    structure. So simply free allocated pointer in case
    of error.
    
    Fixes: 7ad65bf68d70 ("caif: Add support for CAIF over CDC NCM USB interface")
    Cc: stable@vger.kernel.org
    Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6a0e317f61094d377335547e015dd2ff12caf893
Author: Pavel Skripkin <paskripkin@gmail.com>
Date:   Thu Jun 3 19:39:11 2021 +0300

    net: caif: fix memory leak in caif_device_notify
    
    commit b53558a950a89824938e9811eddfc8efcd94e1bb upstream.
    
    In case of caif_enroll_dev() fail, allocated
    link_support won't be assigned to the corresponding
    structure. So simply free allocated pointer in case
    of error
    
    Fixes: 7c18d2205ea7 ("caif: Restructure how link caif link layer enroll")
    Cc: stable@vger.kernel.org
    Reported-and-tested-by: syzbot+7ec324747ce876a29db6@syzkaller.appspotmail.com
    Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 88550e9c900b8800f54963ca2c9a6b4744d13e3d
Author: Pavel Skripkin <paskripkin@gmail.com>
Date:   Thu Jun 3 19:38:51 2021 +0300

    net: caif: add proper error handling
    
    commit a2805dca5107d5603f4bbc027e81e20d93476e96 upstream.
    
    caif_enroll_dev() can fail in some cases. Ingnoring
    these cases can lead to memory leak due to not assigning
    link_support pointer to anywhere.
    
    Fixes: 7c18d2205ea7 ("caif: Restructure how link caif link layer enroll")
    Cc: stable@vger.kernel.org
    Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 19e089e07e19a218c397a94916b26cb0002bfe54
Author: Pavel Skripkin <paskripkin@gmail.com>
Date:   Thu Jun 3 19:38:12 2021 +0300

    net: caif: added cfserl_release function
    
    commit bce130e7f392ddde8cfcb09927808ebd5f9c8669 upstream.
    
    Added cfserl_release() function.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5ceb59f40c094e6de1265c1d0e4bd560f692e272
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Fri Jun 4 17:17:38 2021 +0200

    wireguard: allowedips: free empty intermediate nodes when removing single node
    
    commit bf7b042dc62a31f66d3a41dd4dfc7806f267b307 upstream.
    
    When removing single nodes, it's possible that that node's parent is an
    empty intermediate node, in which case, it too should be removed.
    Otherwise the trie fills up and never is fully emptied, leading to
    gradual memory leaks over time for tries that are modified often. There
    was originally code to do this, but was removed during refactoring in
    2016 and never reworked. Now that we have proper parent pointers from
    the previous commits, we can implement this properly.
    
    In order to reduce branching and expensive comparisons, we want to keep
    the double pointer for parent assignment (which lets us easily chain up
    to the root), but we still need to actually get the parent's base
    address. So encode the bit number into the last two bits of the pointer,
    and pack and unpack it as needed. This is a little bit clumsy but is the
    fastest and less memory wasteful of the compromises. Note that we align
    the root struct here to a minimum of 4, because it's embedded into a
    larger struct, and we're relying on having the bottom two bits for our
    flag, which would only be 16-bit aligned on m68k.
    
    The existing macro-based helpers were a bit unwieldy for adding the bit
    packing to, so this commit replaces them with safer and clearer ordinary
    functions.
    
    We add a test to the randomized/fuzzer part of the selftests, to free
    the randomized tries by-peer, refuzz it, and repeat, until it's supposed
    to be empty, and then then see if that actually resulted in the whole
    thing being emptied. That combined with kmemcheck should hopefully make
    sure this commit is doing what it should. Along the way this resulted in
    various other cleanups of the tests and fixes for recent graphviz.
    
    Fixes: e7096c131e51 ("net: WireGuard secure network tunnel")
    Cc: stable@vger.kernel.org
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit af04157d885e1d11400d595416a6644f27925c2a
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Fri Jun 4 17:17:37 2021 +0200

    wireguard: allowedips: allocate nodes in kmem_cache
    
    commit dc680de28ca849dfe589dc15ac56d22505f0ef11 upstream.
    
    The previous commit moved from O(n) to O(1) for removal, but in the
    process introduced an additional pointer member to a struct that
    increased the size from 60 to 68 bytes, putting nodes in the 128-byte
    slab. With deployed systems having as many as 2 million nodes, this
    represents a significant doubling in memory usage (128 MiB -> 256 MiB).
    Fix this by using our own kmem_cache, that's sized exactly right. This
    also makes wireguard's memory usage more transparent in tools like
    slabtop and /proc/slabinfo.
    
    Fixes: e7096c131e51 ("net: WireGuard secure network tunnel")
    Suggested-by: Arnd Bergmann <arnd@arndb.de>
    Suggested-by: Matthew Wilcox <willy@infradead.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6f425fc65c08ff50ec24472fde3cd030c6898ea5
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Fri Jun 4 17:17:36 2021 +0200

    wireguard: allowedips: remove nodes in O(1)
    
    commit f634f418c227c912e7ea95a3299efdc9b10e4022 upstream.
    
    Previously, deleting peers would require traversing the entire trie in
    order to rebalance nodes and safely free them. This meant that removing
    1000 peers from a trie with a half million nodes would take an extremely
    long time, during which we're holding the rtnl lock. Large-scale users
    were reporting 200ms latencies added to the networking stack as a whole
    every time their userspace software would queue up significant removals.
    That's a serious situation.
    
    This commit fixes that by maintaining a double pointer to the parent's
    bit pointer for each node, and then using the already existing node list
    belonging to each peer to go directly to the node, fix up its pointers,
    and free it with RCU. This means removal is O(1) instead of O(n), and we
    don't use gobs of stack.
    
    The removal algorithm has the same downside as the code that it fixes:
    it won't collapse needlessly long runs of fillers.  We can enhance that
    in the future if it ever becomes a problem. This commit documents that
    limitation with a TODO comment in code, a small but meaningful
    improvement over the prior situation.
    
    Currently the biggest flaw, which the next commit addresses, is that
    because this increases the node size on 64-bit machines from 60 bytes to
    68 bytes. 60 rounds up to 64, but 68 rounds up to 128. So we wind up
    using twice as much memory per node, because of power-of-two
    allocations, which is a big bummer. We'll need to figure something out
    there.
    
    Fixes: e7096c131e51 ("net: WireGuard secure network tunnel")
    Cc: stable@vger.kernel.org
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8eee870d82900005216c4ae7ee650411cce38b63
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Fri Jun 4 17:17:35 2021 +0200

    wireguard: allowedips: initialize list head in selftest
    
    commit 46cfe8eee285cde465b420637507884551f5d7ca upstream.
    
    The randomized trie tests weren't initializing the dummy peer list head,
    resulting in a NULL pointer dereference when used. Fix this by
    initializing it in the randomized trie test, just like we do for the
    static unit test.
    
    While we're at it, all of the other strings like this have the word
    "self-test", so add it to the missing place here.
    
    Fixes: e7096c131e51 ("net: WireGuard secure network tunnel")
    Cc: stable@vger.kernel.org
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 90b33dbb8395ba4c5428480385c50c269e275293
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Fri Jun 4 17:17:31 2021 +0200

    wireguard: selftests: make sure rp_filter is disabled on vethc
    
    commit f8873d11d4121aad35024f9379e431e0c83abead upstream.
    
    Some distros may enable strict rp_filter by default, which will prevent
    vethc from receiving the packets with an unrouteable reverse path address.
    
    Reported-by: Hangbin Liu <liuhangbin@gmail.com>
    Fixes: e7096c131e51 ("net: WireGuard secure network tunnel")
    Cc: stable@vger.kernel.org
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4b8aa955bf47759f99668476f6a088a77607ac3e
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Fri Jun 4 17:17:30 2021 +0200

    wireguard: selftests: remove old conntrack kconfig value
    
    commit acf2492b51c9a3c4dfb947f4d3477a86d315150f upstream.
    
    On recent kernels, this config symbol is no longer used.
    
    Reported-by: Rui Salvaterra <rsalvaterra@gmail.com>
    Fixes: e7096c131e51 ("net: WireGuard secure network tunnel")
    Cc: stable@vger.kernel.org
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3709c87e0dbe36fea241e9d7b70d4a229b3e322a
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Fri Jun 4 17:17:33 2021 +0200

    wireguard: use synchronize_net rather than synchronize_rcu
    
    commit 24b70eeeb4f46c09487f8155239ebfb1f875774a upstream.
    
    Many of the synchronization points are sometimes called under the rtnl
    lock, which means we should use synchronize_net rather than
    synchronize_rcu. Under the hood, this expands to using the expedited
    flavor of function in the event that rtnl is held, in order to not stall
    other concurrent changes.
    
    This fixes some very, very long delays when removing multiple peers at
    once, which would cause some operations to take several minutes.
    
    Fixes: e7096c131e51 ("net: WireGuard secure network tunnel")
    Cc: stable@vger.kernel.org
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 958810e99f6fb8b33c2e6694d3cd02daab0c5513
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Fri Jun 4 17:17:34 2021 +0200

    wireguard: peer: allocate in kmem_cache
    
    commit a4e9f8e3287c9eb6bf70df982870980dd3341863 upstream.
    
    With deployments having upwards of 600k peers now, this somewhat heavy
    structure could benefit from more fine-grained allocations.
    Specifically, instead of using a 2048-byte slab for a 1544-byte object,
    we can now use 1544-byte objects directly, thus saving almost 25%
    per-peer, or with 600k peers, that's a savings of 303 MiB. This also
    makes wireguard's memory usage more transparent in tools like slabtop
    and /proc/slabinfo.
    
    Fixes: 8b5553ace83c ("wireguard: queueing: get rid of per-peer ring buffers")
    Suggested-by: Arnd Bergmann <arnd@arndb.de>
    Suggested-by: Matthew Wilcox <willy@infradead.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8af215cc83053a96ce899670b09bbe9e704918ab
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Fri Jun 4 17:17:32 2021 +0200

    wireguard: do not use -O3
    
    commit cc5060ca0285efe2728bced399a1955a7ce808b2 upstream.
    
    Apparently, various versions of gcc have O3-related miscompiles. Looking
    at the difference between -O2 and -O3 for gcc 11 doesn't indicate
    miscompiles, but the difference also doesn't seem so significant for
    performance that it's worth risking.
    
    Link: https://lore.kernel.org/lkml/CAHk-=wjuoGyxDhAF8SsrTkN0-YfCx7E6jUN3ikC_tn2AKWTTsA@mail.gmail.com/
    Link: https://lore.kernel.org/lkml/CAHmME9otB5Wwxp7H8bR_i2uH2esEMvoBMC8uEXBMH9p0q1s6Bw@mail.gmail.com/
    Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
    Fixes: e7096c131e51 ("net: WireGuard secure network tunnel")
    Cc: stable@vger.kernel.org
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7422eadcf201f2e25eb45b46ffc900fc4214e14f
Author: Lin Ma <linma@zju.edu.cn>
Date:   Sun May 30 21:37:43 2021 +0800

    Bluetooth: use correct lock to prevent UAF of hdev object
    
    commit e305509e678b3a4af2b3cfd410f409f7cdaabb52 upstream.
    
    The hci_sock_dev_event() function will cleanup the hdev object for
    sockets even if this object may still be in used within the
    hci_sock_bound_ioctl() function, result in UAF vulnerability.
    
    This patch replace the BH context lock to serialize these affairs
    and prevent the race condition.
    
    Signed-off-by: Lin Ma <linma@zju.edu.cn>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3556fac71e41f342d61331f3367d48bbbc292308
Author: Lin Ma <linma@zju.edu.cn>
Date:   Tue May 25 14:39:02 2021 +0200

    Bluetooth: fix the erroneous flush_work() order
    
    commit 6a137caec23aeb9e036cdfd8a46dd8a366460e5d upstream.
    
    In the cleanup routine for failed initialization of HCI device,
    the flush_work(&hdev->rx_work) need to be finished before the
    flush_work(&hdev->cmd_work). Otherwise, the hci_rx_work() can
    possibly invoke new cmd_work and cause a bug, like double free,
    in late processings.
    
    This was assigned CVE-2021-3564.
    
    This patch reorder the flush_work() to fix this bug.
    
    Cc: Marcel Holtmann <marcel@holtmann.org>
    Cc: Johan Hedberg <johan.hedberg@gmail.com>
    Cc: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: Jakub Kicinski <kuba@kernel.org>
    Cc: linux-bluetooth@vger.kernel.org
    Cc: netdev@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Lin Ma <linma@zju.edu.cn>
    Signed-off-by: Hao Xiong <mart1n@zju.edu.cn>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit af512f09385af8c913dcc80215c70173f6d43439
Author: James Zhu <James.Zhu@amd.com>
Date:   Wed May 19 12:08:20 2021 -0400

    drm/amdgpu/jpeg3: add cancel_delayed_work_sync before power gate
    
    [ Upstream commit 20ebbfd22f8115a1e4f60d3d289f66be4d47f1ec ]
    
    Add cancel_delayed_work_sync before set power gating state
    to avoid race condition issue when power gating.
    
    Signed-off-by: James Zhu <James.Zhu@amd.com>
    Reviewed-by: Leo Liu <leo.liu@amd.com>
    Acked-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 805e5a259f9900e8c1f9501cecd207f295104e89
Author: James Zhu <James.Zhu@amd.com>
Date:   Wed May 19 12:04:38 2021 -0400

    drm/amdgpu/jpeg2.5: add cancel_delayed_work_sync before power gate
    
    [ Upstream commit 23f10a571da5eaa63b7845d16e2f49837e841ab9 ]
    
    Add cancel_delayed_work_sync before set power gating state
    to avoid race condition issue when power gating.
    
    Signed-off-by: James Zhu <James.Zhu@amd.com>
    Reviewed-by: Leo Liu <leo.liu@amd.com>
    Acked-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4a728699bc2aba79240e1d66b4fefa9245bda675
Author: James Zhu <James.Zhu@amd.com>
Date:   Mon May 17 16:39:17 2021 -0400

    drm/amdgpu/vcn3: add cancel_delayed_work_sync before power gate
    
    [ Upstream commit 4a62542ae064e3b645d6bbf2295a6c05136956c6 ]
    
    Add cancel_delayed_work_sync before set power gating state
    to avoid race condition issue when power gating.
    
    Signed-off-by: James Zhu <James.Zhu@amd.com>
    Reviewed-by: Leo Liu <leo.liu@amd.com>
    Acked-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1f64f5e903b9d1d157875721e02adadc9d6f0a5d
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Fri May 14 12:02:50 2021 +0100

    io_uring: fix ltout double free on completion race
    
    [ Upstream commit 447c19f3b5074409c794b350b10306e1da1ef4ba ]
    
    Always remove linked timeout on io_link_timeout_fn() from the master
    request link list, otherwise we may get use-after-free when first
    io_link_timeout_fn() puts linked timeout in the fail path, and then
    will be found and put on master's free.
    
    Cc: stable@vger.kernel.org # 5.10+
    Fixes: 90cd7e424969d ("io_uring: track link timeout's master explicitly")
    Reported-and-tested-by: syzbot+5a864149dd970b546223@syzkaller.appspotmail.com
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Link: https://lore.kernel.org/r/69c46bf6ce37fec4fdcd98f0882e18eb07ce693a.1620990121.git.asml.silence@gmail.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9e44293267a54694167a215f397b443cfccb470a
Author: Jens Axboe <axboe@kernel.dk>
Date:   Wed Feb 24 13:28:27 2021 -0700

    io_uring: wrap io_kiocb reference count manipulation in helpers
    
    [ Upstream commit de9b4ccad750f216616730b74ed2be16c80892a4 ]
    
    No functional changes in this patch, just in preparation for handling the
    references a bit more efficiently.
    
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0cd6e16742d41264c65795de4823cdd3f24a8488
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Sun Feb 28 22:35:15 2021 +0000

    io_uring: use better types for cflags
    
    [ Upstream commit 8c3f9cd1603d0e4af6c50ebc6d974ab7bdd03cf4 ]
    
    __io_cqring_fill_event() takes cflags as long to squeeze it into u32 in
    an CQE, awhile all users pass int or unsigned. Replace it with unsigned
    int and store it as u32 in struct io_completion to match CQE.
    
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 876808dba2ff7509bdd7f230c4f374a0caf4f410
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Fri May 7 21:06:38 2021 +0100

    io_uring: fix link timeout refs
    
    [ Upstream commit a298232ee6b9a1d5d732aa497ff8be0d45b5bd82 ]
    
    WARNING: CPU: 0 PID: 10242 at lib/refcount.c:28 refcount_warn_saturate+0x15b/0x1a0 lib/refcount.c:28
    RIP: 0010:refcount_warn_saturate+0x15b/0x1a0 lib/refcount.c:28
    Call Trace:
     __refcount_sub_and_test include/linux/refcount.h:283 [inline]
     __refcount_dec_and_test include/linux/refcount.h:315 [inline]
     refcount_dec_and_test include/linux/refcount.h:333 [inline]
     io_put_req fs/io_uring.c:2140 [inline]
     io_queue_linked_timeout fs/io_uring.c:6300 [inline]
     __io_queue_sqe+0xbef/0xec0 fs/io_uring.c:6354
     io_submit_sqe fs/io_uring.c:6534 [inline]
     io_submit_sqes+0x2bbd/0x7c50 fs/io_uring.c:6660
     __do_sys_io_uring_enter fs/io_uring.c:9240 [inline]
     __se_sys_io_uring_enter+0x256/0x1d60 fs/io_uring.c:9182
    
    io_link_timeout_fn() should put only one reference of the linked timeout
    request, however in case of racing with the master request's completion
    first io_req_complete() puts one and then io_put_req_deferred() is
    called.
    
    Cc: stable@vger.kernel.org # 5.12+
    Fixes: 9ae1f8dd372e0 ("io_uring: fix inconsistent lock state")
    Reported-by: syzbot+a2910119328ce8e7996f@syzkaller.appspotmail.com
    Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
    Link: https://lore.kernel.org/r/ff51018ff29de5ffa76f09273ef48cb24c720368.1620417627.git.asml.silence@gmail.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5a5357cd2cd9a38944594eb5cd74377932e176bf
Author: Simon Ser <contact@emersion.fr>
Date:   Wed Apr 21 11:16:35 2021 +0200

    amdgpu: fix GEM obj leak in amdgpu_display_user_framebuffer_create
    
    [ Upstream commit e0c16eb4b3610298a74ae5504c7f6939b12be991 ]
    
    This error code-path is missing a drm_gem_object_put call. Other
    error code-paths are fine.
    
    Signed-off-by: Simon Ser <contact@emersion.fr>
    Fixes: 1769152ac64b ("drm/amdgpu: Fail fb creation from imported dma-bufs. (v2)")
    Cc: Alex Deucher <alexander.deucher@amd.com>
    Cc: Harry Wentland <hwentlan@amd.com>
    Cc: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
    Cc: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 904987a6509290d128394d60a7370fde6dad675e
Author: Jisheng Zhang <jszhang@kernel.org>
Date:   Fri Apr 2 21:29:08 2021 +0800

    riscv: vdso: fix and clean-up Makefile
    
    [ Upstream commit 772d7891e8b3b0baae7bb88a294d61fd07ba6d15 ]
    
    Running "make" on an already compiled kernel tree will rebuild the
    kernel even without any modifications:
    
      CALL    linux/scripts/checksyscalls.sh
      CALL    linux/scripts/atomic/check-atomics.sh
      CHK     include/generated/compile.h
      SO2S    arch/riscv/kernel/vdso/vdso-syms.S
      AS      arch/riscv/kernel/vdso/vdso-syms.o
      AR      arch/riscv/kernel/vdso/built-in.a
      AR      arch/riscv/kernel/built-in.a
      AR      arch/riscv/built-in.a
      GEN     .version
      CHK     include/generated/compile.h
      UPD     include/generated/compile.h
      CC      init/version.o
      AR      init/built-in.a
      LD      vmlinux.o
    
    The reason is "Any target that utilizes if_changed must be listed in
    $(targets), otherwise the command line check will fail, and the target
    will always be built" as explained by Documentation/kbuild/makefiles.rst
    
    Fix this build bug by adding vdso-syms.S to $(targets)
    
    At the same time, there are two trivial clean up modifications:
    
    - the vdso-dummy.o is not needed any more after so remove it.
    
    - vdso.lds is a generated file, so it should be prefixed with
      $(obj)/ instead of $(src)/
    
    Fixes: c2c81bb2f691 ("RISC-V: Fix the VDSO symbol generaton for binutils-2.35+")
    Cc: stable@vger.kernel.org
    Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
    Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f9a2672791d0d6012546ef9341a0ecfe0c083b8d
Author: Johan Hovold <johan@kernel.org>
Date:   Fri Apr 16 16:05:56 2021 +0200

    serial: stm32: fix threaded interrupt handling
    
    [ Upstream commit e359b4411c2836cf87c8776682d1b594635570de ]
    
    When DMA is enabled the receive handler runs in a threaded handler, but
    the primary handler up until very recently neither disabled interrupts
    in the device or used IRQF_ONESHOT. This would lead to a deadlock if an
    interrupt comes in while the threaded receive handler is running under
    the port lock.
    
    Commit ad7676812437 ("serial: stm32: fix a deadlock condition with
    wakeup event") claimed to fix an unrelated deadlock, but unfortunately
    also disabled interrupts in the threaded handler. While this prevents
    the deadlock mentioned in the previous paragraph it also defeats the
    purpose of using a threaded handler in the first place.
    
    Fix this by making the interrupt one-shot and not disabling interrupts
    in the threaded handler.
    
    Note that (receive) DMA must not be used for a console port as the
    threaded handler could be interrupted while holding the port lock,
    something which could lead to a deadlock in case an interrupt handler
    ends up calling printk.
    
    Fixes: ad7676812437 ("serial: stm32: fix a deadlock condition with wakeup event")
    Fixes: 3489187204eb ("serial: stm32: adding dma support")
    Cc: stable@vger.kernel.org      # 4.9
    Cc: Alexandre TORGUE <alexandre.torgue@st.com>
    Cc: Gerald Baeza <gerald.baeza@st.com>
    Reviewed-by: Valentin Caron<valentin.caron@foss.st.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Link: https://lore.kernel.org/r/20210416140557.25177-3-johan@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ab5cfe2c05fec9fe0890bb048cf527500e271f2e
Author: Hoang Le <hoang.h.le@dektech.com.au>
Date:   Thu Apr 1 09:30:48 2021 +0700

    tipc: fix unique bearer names sanity check
    
    [ Upstream commit f20a46c3044c3f75232b3d0e2d09af9b25efaf45 ]
    
    When enabling a bearer by name, we don't sanity check its name with
    higher slot in bearer list. This may have the effect that the name
    of an already enabled bearer bypasses the check.
    
    To fix the above issue, we just perform an extra checking with all
    existing bearers.
    
    Fixes: cb30a63384bc9 ("tipc: refactor function tipc_enable_bearer()")
    Cc: stable@vger.kernel.org
    Acked-by: Jon Maloy <jmaloy@redhat.com>
    Signed-off-by: Hoang Le <hoang.h.le@dektech.com.au>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 506285aa2f7fb37c0300dcece36e638277c26056
Author: Hoang Le <hoang.h.le@dektech.com.au>
Date:   Thu Mar 25 08:56:41 2021 +0700

    tipc: add extack messages for bearer/media failure
    
    [ Upstream commit b83e214b2e04204f1fc674574362061492c37245 ]
    
    Add extack error messages for -EINVAL errors when enabling bearer,
    getting/setting properties for a media/bearer
    
    Acked-by: Jon Maloy <jmaloy@redhat.com>
    Signed-off-by: Hoang Le <hoang.h.le@dektech.com.au>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ca93a7e6d22d7ecbfbb20921d0e8906ef591152b
Author: Jerome Brunet <jbrunet@baylibre.com>
Date:   Thu Apr 29 10:38:23 2021 +0200

    arm64: meson: select COMMON_CLK
    
    [ Upstream commit 4cce442ffe5448ef572adc8b3abe7001b398e709 ]
    
    This fix the recent removal of clock drivers selection.
    While it is not necessary to select the clock drivers themselves, we need
    to select a proper implementation of the clock API, which for the meson, is
    CCF
    
    Fixes: ba66a25536dd ("arm64: meson: ship only the necessary clock controllers")
    Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
    Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
    Reviewed-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    Signed-off-by: Kevin Hilman <khilman@baylibre.com>
    Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
    Link: https://lore.kernel.org/r/20210429083823.59546-1-jbrunet@baylibre.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c8f7f44ca1e9aa113147d94d19c8bd8ff9e0d2ff
Author: Tony Lindgren <tony@atomide.com>
Date:   Tue May 25 09:08:23 2021 +0300

    bus: ti-sysc: Fix flakey idling of uarts and stop using swsup_sidle_act
    
    [ Upstream commit c8692ad416dcc420ce1b403596a425c8f4c2720b ]
    
    Looks like the swsup_sidle_act quirk handling is unreliable for serial
    ports. The serial ports just eventually stop idling until woken up and
    re-idled again. As the serial port not idling blocks any deeper SoC idle
    states, it's adds an annoying random flakeyness for power management.
    
    Let's just switch to swsup_sidle quirk instead like we already do for
    omap3 uarts. This means we manually idle the port instead of trying to
    use the hardware autoidle features when not in use.
    
    For more details on why the serial ports have been using swsup_idle_act,
    see commit 66dde54e978a ("ARM: OMAP2+: hwmod-data: UART IP needs software
    control to manage sidle modes"). It seems that the swsup_idle_act quirk
    handling is not enough though, and for example the TI Android kernel
    changed to using swsup_sidle with commit 77c34c84e1e0 ("OMAP4: HWMOD:
    UART1: disable smart-idle.").
    
    Fixes: b4a9a7a38917 ("bus: ti-sysc: Handle swsup idle mode quirks")
    Cc: Carl Philipp Klemm <philipp@uvos.xyz>
    Cc: Ivan Jelincic <parazyd@dyne.org>
    Cc: Merlijn Wajer <merlijn@wizzup.org>
    Cc: Pavel Machek <pavel@ucw.cz>
    Cc: Sebastian Reichel <sre@kernel.org>
    Cc: Sicelo A. Mhlongo <absicsz@gmail.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0c41a1124d374d7cff12515ad3a05829ea7f8ec0
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Fri May 21 09:54:07 2021 +0200

    ARM: dts: imx: emcon-avari: Fix nxp,pca8574 #gpio-cells
    
    [ Upstream commit b73eb6b3b91ff7d76cff5f8c7ab92fe0c51e3829 ]
    
    According to the DT bindings, #gpio-cells must be two.
    
    Fixes: 63e71fedc07c4ece ("ARM: dts: Add support for emtrion emCON-MX6 series")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1f00cc03b8a1c5a5a5816dc52402b9a878a21522
Author: Fabio Estevam <festevam@gmail.com>
Date:   Thu May 20 18:42:13 2021 -0300

    ARM: dts: imx7d-pico: Fix the 'tuning-step' property
    
    [ Upstream commit 0e2fa4959c4f44815ce33e46e4054eeb0f346053 ]
    
    According to Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.yaml, the
    correct name of the property is 'fsl,tuning-step'.
    
    Fix it accordingly.
    
    Signed-off-by: Fabio Estevam <festevam@gmail.com>
    Fixes: f13f571ac8a1 ("ARM: dts: imx7d-pico: Extend peripherals support")
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 250792f40b6d8ec1cc76fd36318d76557c2af523
Author: Fabio Estevam <festevam@gmail.com>
Date:   Thu May 20 18:42:12 2021 -0300

    ARM: dts: imx7d-meerkat96: Fix the 'tuning-step' property
    
    [ Upstream commit 7c8f0338cdacc90fdf6468adafa8e27952987f00 ]
    
    According to Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.yaml, the
    correct name of the property is 'fsl,tuning-step'.
    
    Fix it accordingly.
    
    Signed-off-by: Fabio Estevam <festevam@gmail.com>
    Fixes: ae7b3384b61b ("ARM: dts: Add support for 96Boards Meerkat96 board")
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8567131103a5fcd1593c5266603038bee626c701
Author: Michael Walle <michael@walle.cc>
Date:   Fri May 14 20:55:53 2021 +0200

    arm64: dts: freescale: sl28: var1: fix RGMII clock and voltage
    
    [ Upstream commit 52387bb9a4a75b88887383cb91d3995ae6f4044a ]
    
    During hardware validation it was noticed that the clock isn't
    continuously enabled when there is no link. This is because the 125MHz
    clock is derived from the internal PLL which seems to go into some kind
    of power-down mode every once in a while. The LS1028A expects a contiuous
    clock. Thus enable the PLL all the time.
    
    Also, the RGMII pad voltage is wrong, it was configured to 2.5V (that is
    the VDDH regulator). The correct voltage is 1.8V, i.e. the VDDIO
    regulator.
    
    This fix is for the freescale/fsl-ls1028a-kontron-sl28-var1.dts.
    
    Fixes: 642856097c18 ("arm64: dts: freescale: sl28: add variant 1")
    Signed-off-by: Michael Walle <michael@walle.cc>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f3b70e434a6e2d7dd82f44ea4de4ab597a7e022c
Author: Michael Walle <michael@walle.cc>
Date:   Fri May 14 20:55:52 2021 +0200

    arm64: dts: freescale: sl28: var4: fix RGMII clock and voltage
    
    [ Upstream commit 25201269c6ec3e9398426962ccdd55428261f7d0 ]
    
    During hardware validation it was noticed that the clock isn't
    continuously enabled when there is no link. This is because the 125MHz
    clock is derived from the internal PLL which seems to go into some kind
    of power-down mode every once in a while. The LS1028A expects a contiuous
    clock. Thus enable the PLL all the time.
    
    Also, the RGMII pad voltage is wrong. It was configured to 2.5V (that is
    the VDDH regulator). The correct voltage is 1.8V, i.e. the VDDIO
    regulator.
    
    This fix is for the freescale/fsl-ls1028a-kontron-sl28-var4.dts.
    
    Fixes: 815364d0424e ("arm64: dts: freescale: add Kontron sl28 support")
    Signed-off-by: Michael Walle <michael@walle.cc>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f61ce6a8225c5603ea03dab59407299a551dbafc
Author: Lucas Stach <l.stach@pengutronix.de>
Date:   Fri May 7 21:44:40 2021 +0200

    arm64: dts: zii-ultra: fix 12V_MAIN voltage
    
    [ Upstream commit ac0cbf9d13dccfd09bebc2f8f5697b6d3ffe27c4 ]
    
    As this is a fixed regulator on the board there was no harm in the wrong
    voltage being specified, apart from a confusing reporting to userspace.
    
    Fixes: 4a13b3bec3b4 ("arm64: dts: imx: add Zii Ultra board support")
    Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e86d02dbd177d8070bb416f25c093f83d54972df
Author: Lucas Stach <l.stach@pengutronix.de>
Date:   Fri May 7 21:44:39 2021 +0200

    arm64: dts: zii-ultra: remove second GEN_3V3 regulator instance
    
    [ Upstream commit e98d98028989e023e0cbff539dc616c4e5036839 ]
    
    When adding the sound support a second instance of the GEN_3V3 regulator was
    added by accident. Remove it and point the consumers to the first instance.
    
    Fixes: 663a5b5efa51 ("arm64: dts: zii-ultra: add sound support")
    Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c57ad9d4102685cf71858469889a387176e87b41
Author: Michael Walle <michael@walle.cc>
Date:   Thu Apr 8 13:02:18 2021 +0200

    arm64: dts: ls1028a: fix memory node
    
    [ Upstream commit dabea675faf16e8682aa478ff3ce65dd775620bc ]
    
    While enabling EDAC support for the LS1028A it was discovered that the
    memory node has a wrong endianness setting as well as a wrong interrupt
    assignment. Fix both.
    
    This was tested on a sl28 board. To force ECC errors, you can use the
    error injection supported by the controller in hardware (with
    CONFIG_EDAC_DEBUG enabled):
    
     # enable error injection
     $ echo 0x100 > /sys/devices/system/edac/mc/mc0/inject_ctrl
     # flip lowest bit of the data
     $ echo 0x1 > /sys/devices/system/edac/mc/mc0/inject_data_lo
    
    Fixes: 8897f3255c9c ("arm64: dts: Add support for NXP LS1028A SoC")
    Signed-off-by: Michael Walle <michael@walle.cc>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 484634991cdc423c20e76a7642023e4d5a54145a
Author: Tony Lindgren <tony@atomide.com>
Date:   Tue May 18 09:47:23 2021 +0300

    bus: ti-sysc: Fix am335x resume hang for usb otg module
    
    [ Upstream commit 4d7b324e231366ea772ab10df46be31273ca39af ]
    
    On am335x, suspend and resume only works once, and the system hangs if
    suspend is attempted again. However, turns out suspend and resume works
    fine multiple times if the USB OTG driver for musb controller is loaded.
    
    The issue is caused my the interconnect target module losing context
    during suspend, and it needs a restore on resume to be reconfigure again
    as debugged earlier by Dave Gerlach <d-gerlach@ti.com>.
    
    There are also other modules that need a restore on resume, like gpmc as
    noted by Dave. So let's add a common way to restore an interconnect
    target module based on a quirk flag. For now, let's enable the quirk for
    am335x otg only to fix the suspend and resume issue.
    
    As gpmc is not causing hangs based on tests with BeagleBone, let's patch
    gpmc separately. For gpmc, we also need a hardware reset done before
    restore according to Dave.
    
    To reinit the modules, we decouple system suspend from PM runtime. We
    replace calls to pm_runtime_force_suspend() and pm_runtime_force_resume()
    with direct calls to internal functions and rely on the driver internal
    state. There no point trying to handle complex system suspend and resume
    quirks via PM runtime.
    
    This is issue should have already been noticed with commit 1819ef2e2d12
    ("bus: ti-sysc: Use swsup quirks also for am335x musb") when quirk
    handling was added for am335x otg for swsup. But the issue went unnoticed
    as having musb driver loaded hides the issue, and suspend and resume works
    once without the driver loaded.
    
    Fixes: 1819ef2e2d12 ("bus: ti-sysc: Use swsup quirks also for am335x musb")
    Suggested-by: Dave Gerlach <d-gerlach@ti.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bc6a0dfb05353c77763c7f12cd18605de15ea51c
Author: Jens Wiklander <jens.wiklander@linaro.org>
Date:   Mon Apr 19 18:46:30 2021 +0200

    optee: use export_uuid() to copy client UUID
    
    [ Upstream commit 673c7aa2436bfc857b92417f3e590a297c586dde ]
    
    Prior to this patch optee_open_session() was making assumptions about
    the internal format of uuid_t by casting a memory location in a
    parameter struct to uuid_t *. Fix this using export_uuid() to get a well
    defined binary representation and also add an octets field in struct
    optee_msg_param in order to avoid casting.
    
    Fixes: c5b4312bea5d ("tee: optee: Add support for session login client UUID generation")
    Suggested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 435d7f1049e0b0d04821fbcde0a7a46f42c48702
Author: Vignesh Raghavendra <vigneshr@ti.com>
Date:   Mon May 10 23:36:01 2021 +0530

    arm64: dts: ti: j7200-main: Mark Main NAVSS as dma-coherent
    
    [ Upstream commit 52ae30f55a2a40cff549fac95de82f25403bd387 ]
    
    Traffic through main NAVSS interconnect is coherent wrt ARM caches on
    J7200 SoC.  Add missing dma-coherent property to main_navss node.
    
    Also add dma-ranges to be consistent with mcu_navss node
    and with AM65/J721e main_navss and mcu_navss nodes.
    
    Fixes: d361ed88455fe ("arm64: dts: ti: Add support for J7200 SoC")
    Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
    Reviewed-by: Peter Ujfalusi <peter.ujfalusi@gmail.com>
    Signed-off-by: Nishanth Menon <nm@ti.com>
    Link: https://lore.kernel.org/r/20210510180601.19458-1-vigneshr@ti.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 88728042be15e811a027a21694d28812b2f8bc44
Author: Magnus Karlsson <magnus.karlsson@intel.com>
Date:   Mon May 10 11:38:51 2021 +0200

    ixgbe: add correct exception tracing for XDP
    
    [ Upstream commit 8281356b1cab1cccc71412eb4cf28b99d6bb2c19 ]
    
    Add missing exception tracing to XDP when a number of different
    errors can occur. The support was only partial. Several errors
    where not logged which would confuse the user quite a lot not
    knowing where and why the packets disappeared.
    
    Fixes: 33fdc82f0883 ("ixgbe: add support for XDP_TX action")
    Fixes: d0bcacd0a130 ("ixgbe: add AF_XDP zero-copy Rx support")
    Reported-by: Jesper Dangaard Brouer <brouer@redhat.com>
    Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com>
    Tested-by: Vishakha Jambekar <vishakha.jambekar@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 85e8a90cd7cbc0a2063ce0bcafd37b92cc702984
Author: Magnus Karlsson <magnus.karlsson@intel.com>
Date:   Wed Dec 2 16:07:23 2020 +0100

    ixgbe: optimize for XDP_REDIRECT in xsk path
    
    [ Upstream commit 7d52fe2eaddfa3d7255d43c3e89ebf2748b7ea7a ]
    
    Optimize ixgbe_run_xdp_zc() for the XDP program verdict being
    XDP_REDIRECT in the xsk zero-copy path. This path is only used when
    having AF_XDP zero-copy on and in that case most packets will be
    directed to user space. This provides a little under 100k extra
    packets in throughput on my server when running l2fwd in xdpsock.
    
    Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com>
    Tested-by: Vishakha Jambekar <vishakha.jambekar@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1b002f376a9dc3bb37ff91d667f39d39ad99bf47
Author: Magnus Karlsson <magnus.karlsson@intel.com>
Date:   Mon May 10 11:38:50 2021 +0200

    ice: add correct exception tracing for XDP
    
    [ Upstream commit 89d65df024c59988291f643b4e45d1528c51aef9 ]
    
    Add missing exception tracing to XDP when a number of different
    errors can occur. The support was only partial. Several errors
    where not logged which would confuse the user quite a lot not
    knowing where and why the packets disappeared.
    
    Fixes: efc2214b6047 ("ice: Add support for XDP")
    Fixes: 2d4238f55697 ("ice: Add support for AF_XDP")
    Reported-by: Jesper Dangaard Brouer <brouer@redhat.com>
    Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com>
    Tested-by: Kiran Bhandare <kiranx.bhandare@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e2d914baa1c2c7cd40c685cf32ff1272023a4bf3
Author: Magnus Karlsson <magnus.karlsson@intel.com>
Date:   Wed Dec 2 16:07:24 2020 +0100

    ice: optimize for XDP_REDIRECT in xsk path
    
    [ Upstream commit bb52073645a618ab4d93c8d932fb8faf114c55bc ]
    
    Optimize ice_run_xdp_zc() for the XDP program verdict being
    XDP_REDIRECT in the xsk zero-copy path. This path is only used when
    having AF_XDP zero-copy on and in that case most packets will be
    directed to user space. This provides a little over 100k extra packets
    in throughput on my server when running l2fwd in xdpsock.
    
    Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com>
    Tested-by: George Kuruvinakunnel <george.kuruvinakunnel@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 567d67a3cb9d71c497808d6731ac94bdf95adadc
Author: Magnus Karlsson <magnus.karlsson@intel.com>
Date:   Mon May 10 11:38:49 2021 +0200

    i40e: add correct exception tracing for XDP
    
    [ Upstream commit f6c10b48f8c8da44adaff730d8e700b6272add2b ]
    
    Add missing exception tracing to XDP when a number of different errors
    can occur. The support was only partial. Several errors where not
    logged which would confuse the user quite a lot not knowing where and
    why the packets disappeared.
    
    Fixes: 74608d17fe29 ("i40e: add support for XDP_TX action")
    Fixes: 0a714186d3c0 ("i40e: add AF_XDP zero-copy Rx support")
    Reported-by: Jesper Dangaard Brouer <brouer@redhat.com>
    Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com>
    Tested-by: Kiran Bhandare <kiranx.bhandare@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c93d6b8040353807c5b05a0636210451c2b24af6
Author: Magnus Karlsson <magnus.karlsson@intel.com>
Date:   Wed Dec 2 16:07:22 2020 +0100

    i40e: optimize for XDP_REDIRECT in xsk path
    
    [ Upstream commit 346497c78d15cdd5bdc3b642a895009359e5457f ]
    
    Optimize i40e_run_xdp_zc() for the XDP program verdict being
    XDP_REDIRECT in the xsk zero-copy path. This path is only used when
    having AF_XDP zero-copy on and in that case most packets will be
    directed to user space. This provides a little over 100k extra packets
    in throughput on my server when running l2fwd in xdpsock.
    
    Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com>
    Tested-by: George Kuruvinakunnel <george.kuruvinakunnel@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0ce89496a1f9b92c0bc442421858f870d7d1af2b
Author: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
Date:   Fri Jun 4 16:48:18 2021 +0530

    cxgb4: avoid link re-train during TC-MQPRIO configuration
    
    [ Upstream commit 3822d0670c9d4342794d73e0d0e615322b40438e ]
    
    When configuring TC-MQPRIO offload, only turn off netdev carrier and
    don't bring physical link down in hardware. Otherwise, when the
    physical link is brought up again after configuration, it gets
    re-trained and stalls ongoing traffic.
    
    Also, when firmware is no longer accessible or crashed, avoid sending
    FLOWC and waiting for reply that will never come.
    
    Fix following hung_task_timeout_secs trace seen in these cases.
    
    INFO: task tc:20807 blocked for more than 122 seconds.
          Tainted: G S                5.13.0-rc3+ #122
    "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
    task:tc   state:D stack:14768 pid:20807 ppid: 19366 flags:0x00000000
    Call Trace:
     __schedule+0x27b/0x6a0
     schedule+0x37/0xa0
     schedule_preempt_disabled+0x5/0x10
     __mutex_lock.isra.14+0x2a0/0x4a0
     ? netlink_lookup+0x120/0x1a0
     ? rtnl_fill_ifinfo+0x10f0/0x10f0
     __netlink_dump_start+0x70/0x250
     rtnetlink_rcv_msg+0x28b/0x380
     ? rtnl_fill_ifinfo+0x10f0/0x10f0
     ? rtnl_calcit.isra.42+0x120/0x120
     netlink_rcv_skb+0x4b/0xf0
     netlink_unicast+0x1a0/0x280
     netlink_sendmsg+0x216/0x440
     sock_sendmsg+0x56/0x60
     __sys_sendto+0xe9/0x150
     ? handle_mm_fault+0x6d/0x1b0
     ? do_user_addr_fault+0x1c5/0x620
     __x64_sys_sendto+0x1f/0x30
     do_syscall_64+0x3c/0x80
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    RIP: 0033:0x7f7f73218321
    RSP: 002b:00007ffd19626208 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
    RAX: ffffffffffffffda RBX: 000055b7c0a8b240 RCX: 00007f7f73218321
    RDX: 0000000000000028 RSI: 00007ffd19626210 RDI: 0000000000000003
    RBP: 000055b7c08680ff R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 000055b7c085f5f6
    R13: 000055b7c085f60a R14: 00007ffd19636470 R15: 00007ffd196262a0
    
    Fixes: b1396c2bd675 ("cxgb4: parse and configure TC-MQPRIO offload")
    Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2411c02d03892a5057499f8102d0cc1e0f852416
Author: Yunjian Wang <wangyunjian@huawei.com>
Date:   Fri Jun 4 19:03:18 2021 +0800

    sch_htb: fix refcount leak in htb_parent_to_leaf_offload
    
    [ Upstream commit 944d671d5faa0d78980a3da5c0f04960ef1ad893 ]
    
    The commit ae81feb7338c ("sch_htb: fix null pointer dereference
    on a null new_q") fixes a NULL pointer dereference bug, but it
    is not correct.
    
    Because htb_graft_helper properly handles the case when new_q
    is NULL, and after the previous patch by skipping this call
    which creates an inconsistency : dev_queue->qdisc will still
    point to the old qdisc, but cl->parent->leaf.q will point to
    the new one (which will be noop_qdisc, because new_q was NULL).
    The code is based on an assumption that these two pointers are
    the same, so it can lead to refcount leaks.
    
    The correct fix is to add a NULL pointer check to protect
    qdisc_refcount_inc inside htb_parent_to_leaf_offload.
    
    Fixes: ae81feb7338c ("sch_htb: fix null pointer dereference on a null new_q")
    Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
    Suggested-by: Maxim Mikityanskiy <maximmi@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bf807cfb9febd00974e44dc1529b5878777a1514
Author: Roja Rani Yarubandi <rojay@codeaurora.org>
Date:   Tue May 25 18:40:50 2021 +0530

    i2c: qcom-geni: Add shutdown callback for i2c
    
    [ Upstream commit 9f78c607600ce4f2a952560de26534715236f612 ]
    
    If the hardware is still accessing memory after SMMU translation
    is disabled (as part of smmu shutdown callback), then the
    IOVAs (I/O virtual address) which it was using will go on the bus
    as the physical addresses which will result in unknown crashes
    like NoC/interconnect errors.
    
    So, implement shutdown callback for i2c driver to suspend the bus
    during system "reboot" or "shutdown".
    
    Fixes: 37692de5d523 ("i2c: i2c-qcom-geni: Add bus driver for the Qualcomm GENI I2C controller")
    Signed-off-by: Roja Rani Yarubandi <rojay@codeaurora.org>
    Reviewed-by: Stephen Boyd <swboyd@chromium.org>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5cd9ec7ad51cf4a2ceed5cacb2d2d258abf410da
Author: Dave Ertman <david.m.ertman@intel.com>
Date:   Wed May 5 14:17:59 2021 -0700

    ice: Allow all LLDP packets from PF to Tx
    
    [ Upstream commit f9f83202b7263ac371d616d6894a2c9ed79158ef ]
    
    Currently in the ice driver, the check whether to
    allow a LLDP packet to egress the interface from the
    PF_VSI is being based on the SKB's priority field.
    It checks to see if the packets priority is equal to
    TC_PRIO_CONTROL.  Injected LLDP packets do not always
    meet this condition.
    
    SCAPY defaults to a sk_buff->protocol value of ETH_P_ALL
    (0x0003) and does not set the priority field.  There will
    be other injection methods (even ones used by end users)
    that will not correctly configure the socket so that
    SKB fields are correctly populated.
    
    Then ethernet header has to have to correct value for
    the protocol though.
    
    Add a check to also allow packets whose ethhdr->h_proto
    matches ETH_P_LLDP (0x88CC).
    
    Fixes: 0c3a6101ff2d ("ice: Allow egress control packets from PF_VSI")
    Signed-off-by: Dave Ertman <david.m.ertman@intel.com>
    Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9ba861c7957a143d862aa280f31f664826e599fa
Author: Paul Greenwalt <paul.greenwalt@intel.com>
Date:   Wed May 5 14:17:58 2021 -0700

    ice: report supported and advertised autoneg using PHY capabilities
    
    [ Upstream commit 5cd349c349d6ec52862e550d3576893d35ab8ac2 ]
    
    Ethtool incorrectly reported supported and advertised auto-negotiation
    settings for a backplane PHY image which did not support auto-negotiation.
    This can occur when using media or PHY type for reporting ethtool
    supported and advertised auto-negotiation settings.
    
    Remove setting supported and advertised auto-negotiation settings based
    on PHY type in ice_phy_type_to_ethtool(), and MAC type in
    ice_get_link_ksettings().
    
    Ethtool supported and advertised auto-negotiation settings should be
    based on the PHY image using the AQ command get PHY capabilities with
    media. Add setting supported and advertised auto-negotiation settings
    based get PHY capabilities with media in ice_get_link_ksettings().
    
    Fixes: 48cb27f2fd18 ("ice: Implement handlers for ethtool PHY/link operations")
    Signed-off-by: Paul Greenwalt <paul.greenwalt@intel.com>
    Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4f000fa8076b2df99f51a90b0b56c3b7d6f2f587
Author: Haiyue Wang <haiyue.wang@intel.com>
Date:   Fri Feb 26 13:19:31 2021 -0800

    ice: handle the VF VSI rebuild failure
    
    [ Upstream commit c7ee6ce1cf60b7fcdbdd2354d377d00bae3fa2d2 ]
    
    VSI rebuild can be failed for LAN queue config, then the VF's VSI will
    be NULL, the VF reset should be stopped with the VF entering into the
    disable state.
    
    Fixes: 12bb018c538c ("ice: Refactor VF reset")
    Signed-off-by: Haiyue Wang <haiyue.wang@intel.com>
    Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 53ba29c32b41ea9728dfcb5abe41a059174cd993
Author: Brett Creeley <brett.creeley@intel.com>
Date:   Fri Feb 26 13:19:21 2021 -0800

    ice: Fix VFR issues for AVF drivers that expect ATQLEN cleared
    
    [ Upstream commit 8679f07a9922068b9b6be81b632f52cac45d1b91 ]
    
    Some AVF drivers expect the VF_MBX_ATQLEN register to be cleared for any
    type of VFR/VFLR. Fix this by clearing the VF_MBX_ATQLEN register at the
    same time as VF_MBX_ARQLEN.
    
    Fixes: 82ba01282cf8 ("ice: clear VF ARQLEN register on reset")
    Signed-off-by: Brett Creeley <brett.creeley@intel.com>
    Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e2bd0bc13d27746cb704d3d5e4763b386d73557d
Author: Brett Creeley <brett.creeley@intel.com>
Date:   Fri Feb 26 13:19:20 2021 -0800

    ice: Fix allowing VF to request more/less queues via virtchnl
    
    [ Upstream commit f0457690af56673cb0c47af6e25430389a149225 ]
    
    Commit 12bb018c538c ("ice: Refactor VF reset") caused a regression
    that removes the ability for a VF to request a different amount of
    queues via VIRTCHNL_OP_REQUEST_QUEUES. This prevents VF drivers to
    either increase or decrease the number of queue pairs they are
    allocated. Fix this by using the variable vf->num_req_qs when
    determining the vf->num_vf_qs during VF VSI creation.
    
    Fixes: 12bb018c538c ("ice: Refactor VF reset")
    Signed-off-by: Brett Creeley <brett.creeley@intel.com>
    Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0a462e25ef0f7ab305081a08d435bbd1f13c0a94
Author: Coco Li <lixiaoyan@google.com>
Date:   Thu Jun 3 07:32:58 2021 +0000

    ipv6: Fix KASAN: slab-out-of-bounds Read in fib6_nh_flush_exceptions
    
    [ Upstream commit 821bbf79fe46a8b1d18aa456e8ed0a3c208c3754 ]
    
    Reported by syzbot:
    HEAD commit:    90c911ad Merge tag 'fixes' of git://git.kernel.org/pub/scm..
    git tree:       git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
    dashboard link: https://syzkaller.appspot.com/bug?extid=123aa35098fd3c000eb7
    compiler:       Debian clang version 11.0.1-2
    
    ==================================================================
    BUG: KASAN: slab-out-of-bounds in fib6_nh_get_excptn_bucket net/ipv6/route.c:1604 [inline]
    BUG: KASAN: slab-out-of-bounds in fib6_nh_flush_exceptions+0xbd/0x360 net/ipv6/route.c:1732
    Read of size 8 at addr ffff8880145c78f8 by task syz-executor.4/17760
    
    CPU: 0 PID: 17760 Comm: syz-executor.4 Not tainted 5.12.0-rc8-syzkaller #0
    Call Trace:
     <IRQ>
     __dump_stack lib/dump_stack.c:79 [inline]
     dump_stack+0x202/0x31e lib/dump_stack.c:120
     print_address_description+0x5f/0x3b0 mm/kasan/report.c:232
     __kasan_report mm/kasan/report.c:399 [inline]
     kasan_report+0x15c/0x200 mm/kasan/report.c:416
     fib6_nh_get_excptn_bucket net/ipv6/route.c:1604 [inline]
     fib6_nh_flush_exceptions+0xbd/0x360 net/ipv6/route.c:1732
     fib6_nh_release+0x9a/0x430 net/ipv6/route.c:3536
     fib6_info_destroy_rcu+0xcb/0x1c0 net/ipv6/ip6_fib.c:174
     rcu_do_batch kernel/rcu/tree.c:2559 [inline]
     rcu_core+0x8f6/0x1450 kernel/rcu/tree.c:2794
     __do_softirq+0x372/0x7a6 kernel/softirq.c:345
     invoke_softirq kernel/softirq.c:221 [inline]
     __irq_exit_rcu+0x22c/0x260 kernel/softirq.c:422
     irq_exit_rcu+0x5/0x20 kernel/softirq.c:434
     sysvec_apic_timer_interrupt+0x91/0xb0 arch/x86/kernel/apic/apic.c:1100
     </IRQ>
     asm_sysvec_apic_timer_interrupt+0x12/0x20 arch/x86/include/asm/idtentry.h:632
    RIP: 0010:lock_acquire+0x1f6/0x720 kernel/locking/lockdep.c:5515
    Code: f6 84 24 a1 00 00 00 02 0f 85 8d 02 00 00 f7 c3 00 02 00 00 49 bd 00 00 00 00 00 fc ff df 74 01 fb 48 c7 44 24 40 0e 36 e0 45 <4b> c7 44 3d 00 00 00 00 00 4b c7 44 3d 09 00 00 00 00 43 c7 44 3d
    RSP: 0018:ffffc90009e06560 EFLAGS: 00000206
    RAX: 1ffff920013c0cc0 RBX: 0000000000000246 RCX: dffffc0000000000
    RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
    RBP: ffffc90009e066e0 R08: dffffc0000000000 R09: fffffbfff1f992b1
    R10: fffffbfff1f992b1 R11: 0000000000000000 R12: 0000000000000000
    R13: dffffc0000000000 R14: 0000000000000000 R15: 1ffff920013c0cb4
     rcu_lock_acquire+0x2a/0x30 include/linux/rcupdate.h:267
     rcu_read_lock include/linux/rcupdate.h:656 [inline]
     ext4_get_group_info+0xea/0x340 fs/ext4/ext4.h:3231
     ext4_mb_prefetch+0x123/0x5d0 fs/ext4/mballoc.c:2212
     ext4_mb_regular_allocator+0x8a5/0x28f0 fs/ext4/mballoc.c:2379
     ext4_mb_new_blocks+0xc6e/0x24f0 fs/ext4/mballoc.c:4982
     ext4_ext_map_blocks+0x2be3/0x7210 fs/ext4/extents.c:4238
     ext4_map_blocks+0xab3/0x1cb0 fs/ext4/inode.c:638
     ext4_getblk+0x187/0x6c0 fs/ext4/inode.c:848
     ext4_bread+0x2a/0x1c0 fs/ext4/inode.c:900
     ext4_append+0x1a4/0x360 fs/ext4/namei.c:67
     ext4_init_new_dir+0x337/0xa10 fs/ext4/namei.c:2768
     ext4_mkdir+0x4b8/0xc00 fs/ext4/namei.c:2814
     vfs_mkdir+0x45b/0x640 fs/namei.c:3819
     ovl_do_mkdir fs/overlayfs/overlayfs.h:161 [inline]
     ovl_mkdir_real+0x53/0x1a0 fs/overlayfs/dir.c:146
     ovl_create_real+0x280/0x490 fs/overlayfs/dir.c:193
     ovl_workdir_create+0x425/0x600 fs/overlayfs/super.c:788
     ovl_make_workdir+0xed/0x1140 fs/overlayfs/super.c:1355
     ovl_get_workdir fs/overlayfs/super.c:1492 [inline]
     ovl_fill_super+0x39ee/0x5370 fs/overlayfs/super.c:2035
     mount_nodev+0x52/0xe0 fs/super.c:1413
     legacy_get_tree+0xea/0x180 fs/fs_context.c:592
     vfs_get_tree+0x86/0x270 fs/super.c:1497
     do_new_mount fs/namespace.c:2903 [inline]
     path_mount+0x196f/0x2be0 fs/namespace.c:3233
     do_mount fs/namespace.c:3246 [inline]
     __do_sys_mount fs/namespace.c:3454 [inline]
     __se_sys_mount+0x2f9/0x3b0 fs/namespace.c:3431
     do_syscall_64+0x2d/0x70 arch/x86/entry/common.c:46
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    RIP: 0033:0x4665f9
    Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 bc ff ff ff f7 d8 64 89 01 48
    RSP: 002b:00007f68f2b87188 EFLAGS: 00000246 ORIG_RAX: 00000000000000a5
    RAX: ffffffffffffffda RBX: 000000000056bf60 RCX: 00000000004665f9
    RDX: 00000000200000c0 RSI: 0000000020000000 RDI: 000000000040000a
    RBP: 00000000004bfbb9 R08: 0000000020000100 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 000000000056bf60
    R13: 00007ffe19002dff R14: 00007f68f2b87300 R15: 0000000000022000
    
    Allocated by task 17768:
     kasan_save_stack mm/kasan/common.c:38 [inline]
     kasan_set_track mm/kasan/common.c:46 [inline]
     set_alloc_info mm/kasan/common.c:427 [inline]
     ____kasan_kmalloc+0xc2/0xf0 mm/kasan/common.c:506
     kasan_kmalloc include/linux/kasan.h:233 [inline]
     __kmalloc+0xb4/0x380 mm/slub.c:4055
     kmalloc include/linux/slab.h:559 [inline]
     kzalloc include/linux/slab.h:684 [inline]
     fib6_info_alloc+0x2c/0xd0 net/ipv6/ip6_fib.c:154
     ip6_route_info_create+0x55d/0x1a10 net/ipv6/route.c:3638
     ip6_route_add+0x22/0x120 net/ipv6/route.c:3728
     inet6_rtm_newroute+0x2cd/0x2260 net/ipv6/route.c:5352
     rtnetlink_rcv_msg+0xb34/0xe70 net/core/rtnetlink.c:5553
     netlink_rcv_skb+0x1f0/0x460 net/netlink/af_netlink.c:2502
     netlink_unicast_kernel net/netlink/af_netlink.c:1312 [inline]
     netlink_unicast+0x7de/0x9b0 net/netlink/af_netlink.c:1338
     netlink_sendmsg+0xaa6/0xe90 net/netlink/af_netlink.c:1927
     sock_sendmsg_nosec net/socket.c:654 [inline]
     sock_sendmsg net/socket.c:674 [inline]
     ____sys_sendmsg+0x5a2/0x900 net/socket.c:2350
     ___sys_sendmsg net/socket.c:2404 [inline]
     __sys_sendmsg+0x319/0x400 net/socket.c:2433
     do_syscall_64+0x2d/0x70 arch/x86/entry/common.c:46
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    Last potentially related work creation:
     kasan_save_stack+0x27/0x50 mm/kasan/common.c:38
     kasan_record_aux_stack+0xee/0x120 mm/kasan/generic.c:345
     __call_rcu kernel/rcu/tree.c:3039 [inline]
     call_rcu+0x1b1/0xa30 kernel/rcu/tree.c:3114
     fib6_info_release include/net/ip6_fib.h:337 [inline]
     ip6_route_info_create+0x10c4/0x1a10 net/ipv6/route.c:3718
     ip6_route_add+0x22/0x120 net/ipv6/route.c:3728
     inet6_rtm_newroute+0x2cd/0x2260 net/ipv6/route.c:5352
     rtnetlink_rcv_msg+0xb34/0xe70 net/core/rtnetlink.c:5553
     netlink_rcv_skb+0x1f0/0x460 net/netlink/af_netlink.c:2502
     netlink_unicast_kernel net/netlink/af_netlink.c:1312 [inline]
     netlink_unicast+0x7de/0x9b0 net/netlink/af_netlink.c:1338
     netlink_sendmsg+0xaa6/0xe90 net/netlink/af_netlink.c:1927
     sock_sendmsg_nosec net/socket.c:654 [inline]
     sock_sendmsg net/socket.c:674 [inline]
     ____sys_sendmsg+0x5a2/0x900 net/socket.c:2350
     ___sys_sendmsg net/socket.c:2404 [inline]
     __sys_sendmsg+0x319/0x400 net/socket.c:2433
     do_syscall_64+0x2d/0x70 arch/x86/entry/common.c:46
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    Second to last potentially related work creation:
     kasan_save_stack+0x27/0x50 mm/kasan/common.c:38
     kasan_record_aux_stack+0xee/0x120 mm/kasan/generic.c:345
     insert_work+0x54/0x400 kernel/workqueue.c:1331
     __queue_work+0x981/0xcc0 kernel/workqueue.c:1497
     queue_work_on+0x111/0x200 kernel/workqueue.c:1524
     queue_work include/linux/workqueue.h:507 [inline]
     call_usermodehelper_exec+0x283/0x470 kernel/umh.c:433
     kobject_uevent_env+0x1349/0x1730 lib/kobject_uevent.c:617
     kvm_uevent_notify_change+0x309/0x3b0 arch/x86/kvm/../../../virt/kvm/kvm_main.c:4809
     kvm_destroy_vm arch/x86/kvm/../../../virt/kvm/kvm_main.c:877 [inline]
     kvm_put_kvm+0x9c/0xd10 arch/x86/kvm/../../../virt/kvm/kvm_main.c:920
     kvm_vcpu_release+0x53/0x60 arch/x86/kvm/../../../virt/kvm/kvm_main.c:3120
     __fput+0x352/0x7b0 fs/file_table.c:280
     task_work_run+0x146/0x1c0 kernel/task_work.c:140
     tracehook_notify_resume include/linux/tracehook.h:189 [inline]
     exit_to_user_mode_loop kernel/entry/common.c:174 [inline]
     exit_to_user_mode_prepare+0x10b/0x1e0 kernel/entry/common.c:208
     __syscall_exit_to_user_mode_work kernel/entry/common.c:290 [inline]
     syscall_exit_to_user_mode+0x26/0x70 kernel/entry/common.c:301
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    The buggy address belongs to the object at ffff8880145c7800
     which belongs to the cache kmalloc-192 of size 192
    The buggy address is located 56 bytes to the right of
     192-byte region [ffff8880145c7800, ffff8880145c78c0)
    The buggy address belongs to the page:
    page:ffffea00005171c0 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x145c7
    flags: 0xfff00000000200(slab)
    raw: 00fff00000000200 ffffea00006474c0 0000000200000002 ffff888010c41a00
    raw: 0000000000000000 0000000080100010 00000001ffffffff 0000000000000000
    page dumped because: kasan: bad access detected
    
    Memory state around the buggy address:
     ffff8880145c7780: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc
     ffff8880145c7800: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    >ffff8880145c7880: 00 00 00 00 fc fc fc fc fc fc fc fc fc fc fc fc
                                                                    ^
     ffff8880145c7900: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
     ffff8880145c7980: fb fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc
    ==================================================================
    
    In the ip6_route_info_create function, in the case that the nh pointer
    is not NULL, the fib6_nh in fib6_info has not been allocated.
    Therefore, when trying to free fib6_info in this error case using
    fib6_info_release, the function will call fib6_info_destroy_rcu,
    which it will access fib6_nh_release(f6i->fib6_nh);
    However, f6i->fib6_nh doesn't have any refcount yet given the lack of allocation
    causing the reported memory issue above.
    Therefore, releasing the empty pointer directly instead would be the solution.
    
    Fixes: f88d8ea67fbdb ("ipv6: Plumb support for nexthop object in a fib6_info")
    Fixes: 706ec91916462 ("ipv6: Fix nexthop refcnt leak when creating ipv6 route info")
    Signed-off-by: Coco Li <lixiaoyan@google.com>
    Cc: David Ahern <dsahern@kernel.org>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 511ffe92734e55f1ee35c750cec4dc524496c2f3
Author: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
Date:   Wed Jun 2 19:38:59 2021 +0530

    cxgb4: fix regression with HASH tc prio value update
    
    [ Upstream commit a27fb314cba8cb84cd6456a4699c3330a83c326d ]
    
    commit db43b30cd89c ("cxgb4: add ethtool n-tuple filter deletion")
    has moved searching for next highest priority HASH filter rule to
    cxgb4_flow_rule_destroy(), which searches the rhashtable before the
    the rule is removed from it and hence always finds at least 1 entry.
    Fix by removing the rule from rhashtable first before calling
    cxgb4_flow_rule_destroy() and hence avoid fetching stale info.
    
    Fixes: db43b30cd89c ("cxgb4: add ethtool n-tuple filter deletion")
    Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1d34fa4fcf06649036ba0c97854fcf7a741ee18c
Author: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
Date:   Tue Apr 27 21:52:09 2021 +0200

    ice: track AF_XDP ZC enabled queues in bitmap
    
    [ Upstream commit e102db780e1c14f10c70dafa7684af22a745b51d ]
    
    Commit c7a219048e45 ("ice: Remove xsk_buff_pool from VSI structure")
    silently introduced a regression and broke the Tx side of AF_XDP in copy
    mode. xsk_pool on ice_ring is set only based on the existence of the XDP
    prog on the VSI which in turn picks ice_clean_tx_irq_zc to be executed.
    That is not something that should happen for copy mode as it should use
    the regular data path ice_clean_tx_irq.
    
    This results in a following splat when xdpsock is run in txonly or l2fwd
    scenarios in copy mode:
    
    <snip>
    [  106.050195] BUG: kernel NULL pointer dereference, address: 0000000000000030
    [  106.057269] #PF: supervisor read access in kernel mode
    [  106.062493] #PF: error_code(0x0000) - not-present page
    [  106.067709] PGD 0 P4D 0
    [  106.070293] Oops: 0000 [#1] PREEMPT SMP NOPTI
    [  106.074721] CPU: 61 PID: 0 Comm: swapper/61 Not tainted 5.12.0-rc2+ #45
    [  106.081436] Hardware name: Intel Corporation S2600WFT/S2600WFT, BIOS SE5C620.86B.02.01.0008.031920191559 03/19/2019
    [  106.092027] RIP: 0010:xp_raw_get_dma+0x36/0x50
    [  106.096551] Code: 74 14 48 b8 ff ff ff ff ff ff 00 00 48 21 f0 48 c1 ee 30 48 01 c6 48 8b 87 90 00 00 00 48 89 f2 81 e6 ff 0f 00 00 48 c1 ea 0c <48> 8b 04 d0 48 83 e0 fe 48 01 f0 c3 66 66 2e 0f 1f 84 00 00 00 00
    [  106.115588] RSP: 0018:ffffc9000d694e50 EFLAGS: 00010206
    [  106.120893] RAX: 0000000000000000 RBX: ffff88984b8c8a00 RCX: ffff889852581800
    [  106.128137] RDX: 0000000000000006 RSI: 0000000000000000 RDI: ffff88984cd8b800
    [  106.135383] RBP: ffff888123b50001 R08: ffff889896800000 R09: 0000000000000800
    [  106.142628] R10: 0000000000000000 R11: ffffffff826060c0 R12: 00000000000000ff
    [  106.149872] R13: 0000000000000000 R14: 0000000000000040 R15: ffff888123b50018
    [  106.157117] FS:  0000000000000000(0000) GS:ffff8897e0f40000(0000) knlGS:0000000000000000
    [  106.165332] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  106.171163] CR2: 0000000000000030 CR3: 000000000560a004 CR4: 00000000007706e0
    [  106.178408] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [  106.185653] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [  106.192898] PKRU: 55555554
    [  106.195653] Call Trace:
    [  106.198143]  <IRQ>
    [  106.200196]  ice_clean_tx_irq_zc+0x183/0x2a0 [ice]
    [  106.205087]  ice_napi_poll+0x3e/0x590 [ice]
    [  106.209356]  __napi_poll+0x2a/0x160
    [  106.212911]  net_rx_action+0xd6/0x200
    [  106.216634]  __do_softirq+0xbf/0x29b
    [  106.220274]  irq_exit_rcu+0x88/0xc0
    [  106.223819]  common_interrupt+0x7b/0xa0
    [  106.227719]  </IRQ>
    [  106.229857]  asm_common_interrupt+0x1e/0x40
    </snip>
    
    Fix this by introducing the bitmap of queues that are zero-copy enabled,
    where each bit, corresponding to a queue id that xsk pool is being
    configured on, will be set/cleared within ice_xsk_pool_{en,dis}able and
    checked within ice_xsk_pool(). The latter is a function used for
    deciding which napi poll routine is executed.
    Idea is being taken from our other drivers such as i40e and ixgbe.
    
    Fixes: c7a219048e45 ("ice: Remove xsk_buff_pool from VSI structure")
    Signed-off-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
    Tested-by: Kiran Bhandare <kiranx.bhandare@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a1c1b1ef41cd9d4c35af2afdd51f8a3386c2713b
Author: Magnus Karlsson <magnus.karlsson@intel.com>
Date:   Mon May 10 11:38:53 2021 +0200

    ixgbevf: add correct exception tracing for XDP
    
    [ Upstream commit faae81420d162551b6ef2d804aafc00f4cd68e0e ]
    
    Add missing exception tracing to XDP when a number of different
    errors can occur. The support was only partial. Several errors
    where not logged which would confuse the user quite a lot not
    knowing where and why the packets disappeared.
    
    Fixes: 21092e9ce8b1 ("ixgbevf: Add support for XDP_TX action")
    Reported-by: Jesper Dangaard Brouer <brouer@redhat.com>
    Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com>
    Tested-by: Vishakha Jambekar <vishakha.jambekar@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5a8e2bf7eebb568225764c141bf1c4c4f6b5d02a
Author: Magnus Karlsson <magnus.karlsson@intel.com>
Date:   Mon May 10 11:38:52 2021 +0200

    igb: add correct exception tracing for XDP
    
    [ Upstream commit 74431c40b9c5fa673fff83ec157a76a69efd5c72 ]
    
    Add missing exception tracing to XDP when a number of different
    errors can occur. The support was only partial. Several errors
    where not logged which would confuse the user quite a lot not
    knowing where and why the packets disappeared.
    
    Fixes: 9cbc948b5a20 ("igb: add XDP support")
    Reported-by: Jesper Dangaard Brouer <brouer@redhat.com>
    Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com>
    Tested-by: Vishakha Jambekar <vishakha.jambekar@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bb5da059defe1674d57ecf8de4bd4b57c13bb52d
Author: Kurt Kanzenbach <kurt@linutronix.de>
Date:   Mon May 3 09:28:00 2021 +0200

    igb: Fix XDP with PTP enabled
    
    [ Upstream commit 5379260852b013902abbca691926b3ac1cac36d5 ]
    
    When using native XDP with the igb driver, the XDP frame data doesn't point to
    the beginning of the packet. It's off by 16 bytes. Everything works as expected
    with XDP skb mode.
    
    Actually these 16 bytes are used to store the packet timestamps. Therefore, pull
    the timestamp before executing any XDP operations and adjust all other code
    accordingly. The igc driver does it like that as well.
    
    Tested with Intel i210 card and AF_XDP sockets.
    
    Fixes: 9cbc948b5a20 ("igb: add XDP support")
    Signed-off-by: Kurt Kanzenbach <kurt@linutronix.de>
    Acked-by: Jesper Dangaard Brouer <brouer@redhat.com>
    Tested-by: Sandeep Penigalapati <sandeep.penigalapati@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6820c1aaf8e5e2bfc9a0c5fe59a018fc53ee5a20
Author: Wei Yongjun <weiyongjun1@huawei.com>
Date:   Wed May 19 14:16:14 2021 +0000

    ieee802154: fix error return code in ieee802154_llsec_getparams()
    
    [ Upstream commit 373e864cf52403b0974c2f23ca8faf9104234555 ]
    
    Fix to return negative error code -ENOBUFS from the error handling
    case instead of 0, as done elsewhere in this function.
    
    Fixes: 3e9c156e2c21 ("ieee802154: add netlink interfaces for llsec")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
    Link: https://lore.kernel.org/r/20210519141614.3040055-1-weiyongjun1@huawei.com
    Signed-off-by: Stefan Schmidt <stefan@datenfreihafen.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e5a82312378238827851abc515161821d34f0f02
Author: Zhen Lei <thunder.leizhen@huawei.com>
Date:   Sat May 8 14:25:17 2021 +0800

    ieee802154: fix error return code in ieee802154_add_iface()
    
    [ Upstream commit 79c6b8ed30e54b401c873dbad2511f2a1c525fd5 ]
    
    Fix to return a negative error code from the error handling
    case instead of 0, as done elsewhere in this function.
    
    Fixes: be51da0f3e34 ("ieee802154: Stop using NLA_PUT*().")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com>
    Link: https://lore.kernel.org/r/20210508062517.2574-1-thunder.leizhen@huawei.com
    Signed-off-by: Stefan Schmidt <stefan@datenfreihafen.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit acc43fc6cf0d50612193813c5906a1ab9d433e1e
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Fri May 28 09:16:31 2021 +0000

    bpf, lockdown, audit: Fix buggy SELinux lockdown permission checks
    
    [ Upstream commit ff40e51043af63715ab413995ff46996ecf9583f ]
    
    Commit 59438b46471a ("security,lockdown,selinux: implement SELinux lockdown")
    added an implementation of the locked_down LSM hook to SELinux, with the aim
    to restrict which domains are allowed to perform operations that would breach
    lockdown. This is indirectly also getting audit subsystem involved to report
    events. The latter is problematic, as reported by Ondrej and Serhei, since it
    can bring down the whole system via audit:
    
      1) The audit events that are triggered due to calls to security_locked_down()
         can OOM kill a machine, see below details [0].
    
      2) It also seems to be causing a deadlock via avc_has_perm()/slow_avc_audit()
         when trying to wake up kauditd, for example, when using trace_sched_switch()
         tracepoint, see details in [1]. Triggering this was not via some hypothetical
         corner case, but with existing tools like runqlat & runqslower from bcc, for
         example, which make use of this tracepoint. Rough call sequence goes like:
    
         rq_lock(rq) -> -------------------------+
           trace_sched_switch() ->               |
             bpf_prog_xyz() ->                   +-> deadlock
               selinux_lockdown() ->             |
                 audit_log_end() ->              |
                   wake_up_interruptible() ->    |
                     try_to_wake_up() ->         |
                       rq_lock(rq) --------------+
    
    What's worse is that the intention of 59438b46471a to further restrict lockdown
    settings for specific applications in respect to the global lockdown policy is
    completely broken for BPF. The SELinux policy rule for the current lockdown check
    looks something like this:
    
      allow <who> <who> : lockdown { <reason> };
    
    However, this doesn't match with the 'current' task where the security_locked_down()
    is executed, example: httpd does a syscall. There is a tracing program attached
    to the syscall which triggers a BPF program to run, which ends up doing a
    bpf_probe_read_kernel{,_str}() helper call. The selinux_lockdown() hook does
    the permission check against 'current', that is, httpd in this example. httpd
    has literally zero relation to this tracing program, and it would be nonsensical
    having to write an SELinux policy rule against httpd to let the tracing helper
    pass. The policy in this case needs to be against the entity that is installing
    the BPF program. For example, if bpftrace would generate a histogram of syscall
    counts by user space application:
    
      bpftrace -e 'tracepoint:raw_syscalls:sys_enter { @[comm] = count(); }'
    
    bpftrace would then go and generate a BPF program from this internally. One way
    of doing it [for the sake of the example] could be to call bpf_get_current_task()
    helper and then access current->comm via one of bpf_probe_read_kernel{,_str}()
    helpers. So the program itself has nothing to do with httpd or any other random
    app doing a syscall here. The BPF program _explicitly initiated_ the lockdown
    check. The allow/deny policy belongs in the context of bpftrace: meaning, you
    want to grant bpftrace access to use these helpers, but other tracers on the
    system like my_random_tracer _not_.
    
    Therefore fix all three issues at the same time by taking a completely different
    approach for the security_locked_down() hook, that is, move the check into the
    program verification phase where we actually retrieve the BPF func proto. This
    also reliably gets the task (current) that is trying to install the BPF tracing
    program, e.g. bpftrace/bcc/perf/systemtap/etc, and it also fixes the OOM since
    we're moving this out of the BPF helper's fast-path which can be called several
    millions of times per second.
    
    The check is then also in line with other security_locked_down() hooks in the
    system where the enforcement is performed at open/load time, for example,
    open_kcore() for /proc/kcore access or module_sig_check() for module signatures
    just to pick few random ones. What's out of scope in the fix as well as in
    other security_locked_down() hook locations /outside/ of BPF subsystem is that
    if the lockdown policy changes on the fly there is no retrospective action.
    This requires a different discussion, potentially complex infrastructure, and
    it's also not clear whether this can be solved generically. Either way, it is
    out of scope for a suitable stable fix which this one is targeting. Note that
    the breakage is specifically on 59438b46471a where it started to rely on 'current'
    as UAPI behavior, and _not_ earlier infrastructure such as 9d1f8be5cf42 ("bpf:
    Restrict bpf when kernel lockdown is in confidentiality mode").
    
    [0] https://bugzilla.redhat.com/show_bug.cgi?id=1955585, Jakub Hrozek says:
    
      I starting seeing this with F-34. When I run a container that is traced with
      BPF to record the syscalls it is doing, auditd is flooded with messages like:
    
      type=AVC msg=audit(1619784520.593:282387): avc:  denied  { confidentiality }
        for pid=476 comm="auditd" lockdown_reason="use of bpf to read kernel RAM"
          scontext=system_u:system_r:auditd_t:s0 tcontext=system_u:system_r:auditd_t:s0
            tclass=lockdown permissive=0
    
      This seems to be leading to auditd running out of space in the backlog buffer
      and eventually OOMs the machine.
    
      [...]
      auditd running at 99% CPU presumably processing all the messages, eventually I get:
      Apr 30 12:20:42 fedora kernel: audit: backlog limit exceeded
      Apr 30 12:20:42 fedora kernel: audit: backlog limit exceeded
      Apr 30 12:20:42 fedora kernel: audit: audit_backlog=2152579 > audit_backlog_limit=64
      Apr 30 12:20:42 fedora kernel: audit: audit_backlog=2152626 > audit_backlog_limit=64
      Apr 30 12:20:42 fedora kernel: audit: audit_backlog=2152694 > audit_backlog_limit=64
      Apr 30 12:20:42 fedora kernel: audit: audit_lost=6878426 audit_rate_limit=0 audit_backlog_limit=64
      Apr 30 12:20:45 fedora kernel: oci-seccomp-bpf invoked oom-killer: gfp_mask=0x100cca(GFP_HIGHUSER_MOVABLE), order=0, oom_score_adj=-1000
      Apr 30 12:20:45 fedora kernel: CPU: 0 PID: 13284 Comm: oci-seccomp-bpf Not tainted 5.11.12-300.fc34.x86_64 #1
      Apr 30 12:20:45 fedora kernel: Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-2.fc32 04/01/2014
      [...]
    
    [1] https://lore.kernel.org/linux-audit/CANYvDQN7H5tVp47fbYcRasv4XF07eUbsDwT_eDCHXJUj43J7jQ@mail.gmail.com/,
        Serhei Makarov says:
    
      Upstream kernel 5.11.0-rc7 and later was found to deadlock during a
      bpf_probe_read_compat() call within a sched_switch tracepoint. The problem
      is reproducible with the reg_alloc3 testcase from SystemTap's BPF backend
      testsuite on x86_64 as well as the runqlat, runqslower tools from bcc on
      ppc64le. Example stack trace:
    
      [...]
      [  730.868702] stack backtrace:
      [  730.869590] CPU: 1 PID: 701 Comm: in:imjournal Not tainted, 5.12.0-0.rc2.20210309git144c79ef3353.166.fc35.x86_64 #1
      [  730.871605] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.13.0-2.fc32 04/01/2014
      [  730.873278] Call Trace:
      [  730.873770]  dump_stack+0x7f/0xa1
      [  730.874433]  check_noncircular+0xdf/0x100
      [  730.875232]  __lock_acquire+0x1202/0x1e10
      [  730.876031]  ? __lock_acquire+0xfc0/0x1e10
      [  730.876844]  lock_acquire+0xc2/0x3a0
      [  730.877551]  ? __wake_up_common_lock+0x52/0x90
      [  730.878434]  ? lock_acquire+0xc2/0x3a0
      [  730.879186]  ? lock_is_held_type+0xa7/0x120
      [  730.880044]  ? skb_queue_tail+0x1b/0x50
      [  730.880800]  _raw_spin_lock_irqsave+0x4d/0x90
      [  730.881656]  ? __wake_up_common_lock+0x52/0x90
      [  730.882532]  __wake_up_common_lock+0x52/0x90
      [  730.883375]  audit_log_end+0x5b/0x100
      [  730.884104]  slow_avc_audit+0x69/0x90
      [  730.884836]  avc_has_perm+0x8b/0xb0
      [  730.885532]  selinux_lockdown+0xa5/0xd0
      [  730.886297]  security_locked_down+0x20/0x40
      [  730.887133]  bpf_probe_read_compat+0x66/0xd0
      [  730.887983]  bpf_prog_250599c5469ac7b5+0x10f/0x820
      [  730.888917]  trace_call_bpf+0xe9/0x240
      [  730.889672]  perf_trace_run_bpf_submit+0x4d/0xc0
      [  730.890579]  perf_trace_sched_switch+0x142/0x180
      [  730.891485]  ? __schedule+0x6d8/0xb20
      [  730.892209]  __schedule+0x6d8/0xb20
      [  730.892899]  schedule+0x5b/0xc0
      [  730.893522]  exit_to_user_mode_prepare+0x11d/0x240
      [  730.894457]  syscall_exit_to_user_mode+0x27/0x70
      [  730.895361]  entry_SYSCALL_64_after_hwframe+0x44/0xae
      [...]
    
    Fixes: 59438b46471a ("security,lockdown,selinux: implement SELinux lockdown")
    Reported-by: Ondrej Mosnacek <omosnace@redhat.com>
    Reported-by: Jakub Hrozek <jhrozek@redhat.com>
    Reported-by: Serhei Makarov <smakarov@redhat.com>
    Reported-by: Jiri Olsa <jolsa@redhat.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Alexei Starovoitov <ast@kernel.org>
    Tested-by: Jiri Olsa <jolsa@redhat.com>
    Cc: Paul Moore <paul@paul-moore.com>
    Cc: James Morris <jamorris@linux.microsoft.com>
    Cc: Jerome Marchand <jmarchan@redhat.com>
    Cc: Frank Eigler <fche@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Link: https://lore.kernel.org/bpf/01135120-8bf7-df2e-cff0-1d73f1f841c3@iogearbox.net
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f2c444cacbb0d8f4ef07104d91066e093e771145
Author: Zhihao Cheng <chengzhihao1@huawei.com>
Date:   Tue Jun 1 09:19:35 2021 +0000

    drm/i915/selftests: Fix return value check in live_breadcrumbs_smoketest()
    
    [ Upstream commit 10c1f0cbcea93beec5d3bdc02b1a3b577b4985e7 ]
    
    In case of error, the function live_context() returns ERR_PTR() and never
    returns NULL. The NULL test in the return value check should be replaced
    with IS_ERR().
    
    Fixes: 52c0fdb25c7c ("drm/i915: Replace global breadcrumbs with per-context interrupt tracking")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Zhihao Cheng <chengzhihao1@huawei.com>
    Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/33c46ef24cd547d0ad21dc106441491a@intel.com
    [tursulin: Wrap commit text, fix Fixes: tag.]
    Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    (cherry picked from commit 8f4caef8d5401b42c6367d46c23da5e0e8111516)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 851fcb15e7354c53b889284255b5f92e3638aabe
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Fri May 28 13:45:16 2021 +0200

    netfilter: nfnetlink_cthelper: hit EBUSY on updates if size mismatches
    
    [ Upstream commit 8971ee8b087750a23f3cd4dc55bff2d0303fd267 ]
    
    The private helper data size cannot be updated. However, updates that
    contain NFCTH_PRIV_DATA_LEN might bogusly hit EBUSY even if the size is
    the same.
    
    Fixes: 12f7a505331e ("netfilter: add user-space connection tracking helper infrastructure")
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2c0e6b35b88a961127066a1028bce9c727cbc3e5
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Thu May 27 21:54:42 2021 +0200

    netfilter: nft_ct: skip expectations for confirmed conntrack
    
    [ Upstream commit 1710eb913bdcda3917f44d383c32de6bdabfc836 ]
    
    nft_ct_expect_obj_eval() calls nf_ct_ext_add() for a confirmed
    conntrack entry. However, nf_ct_ext_add() can only be called for
    !nf_ct_is_confirmed().
    
    [ 1825.349056] WARNING: CPU: 0 PID: 1279 at net/netfilter/nf_conntrack_extend.c:48 nf_ct_xt_add+0x18e/0x1a0 [nf_conntrack]
    [ 1825.351391] RIP: 0010:nf_ct_ext_add+0x18e/0x1a0 [nf_conntrack]
    [ 1825.351493] Code: 41 5c 41 5d 41 5e 41 5f c3 41 bc 0a 00 00 00 e9 15 ff ff ff ba 09 00 00 00 31 f6 4c 89 ff e8 69 6c 3d e9 eb 96 45 31 ed eb cd <0f> 0b e9 b1 fe ff ff e8 86 79 14 e9 eb bf 0f 1f 40 00 0f 1f 44 00
    [ 1825.351721] RSP: 0018:ffffc90002e1f1e8 EFLAGS: 00010202
    [ 1825.351790] RAX: 000000000000000e RBX: ffff88814f5783c0 RCX: ffffffffc0e4f887
    [ 1825.351881] RDX: dffffc0000000000 RSI: 0000000000000008 RDI: ffff88814f578440
    [ 1825.351971] RBP: 0000000000000000 R08: 0000000000000000 R09: ffff88814f578447
    [ 1825.352060] R10: ffffed1029eaf088 R11: 0000000000000001 R12: ffff88814f578440
    [ 1825.352150] R13: ffff8882053f3a00 R14: 0000000000000000 R15: 0000000000000a20
    [ 1825.352240] FS:  00007f992261c900(0000) GS:ffff889faec00000(0000) knlGS:0000000000000000
    [ 1825.352343] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 1825.352417] CR2: 000056070a4d1158 CR3: 000000015efe0000 CR4: 0000000000350ee0
    [ 1825.352508] Call Trace:
    [ 1825.352544]  nf_ct_helper_ext_add+0x10/0x60 [nf_conntrack]
    [ 1825.352641]  nft_ct_expect_obj_eval+0x1b8/0x1e0 [nft_ct]
    [ 1825.352716]  nft_do_chain+0x232/0x850 [nf_tables]
    
    Add the ct helper extension only for unconfirmed conntrack. Skip rule
    evaluation if the ct helper extension does not exist. Thus, you can
    only create expectations from the first packet.
    
    It should be possible to remove this limitation by adding a new action
    to attach a generic ct helper to the first packet. Then, use this ct
    helper extension from follow up packets to create the ct expectation.
    
    While at it, add a missing check to skip the template conntrack too
    and remove check for IPCT_UNTRACK which is implicit to !ct.
    
    Fixes: 857b46027d6f ("netfilter: nft_ct: add ct expectations support")
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8a452d62e7cea3c8a2676a3b89a9118755a1a271
Author: Max Gurtovoy <mgurtovoy@nvidia.com>
Date:   Tue Jun 1 19:22:05 2021 +0300

    nvmet: fix freeing unallocated p2pmem
    
    [ Upstream commit bcd9a0797d73eeff659582f23277e7ab6e5f18f3 ]
    
    In case p2p device was found but the p2p pool is empty, the nvme target
    is still trying to free the sgl from the p2p pool instead of the
    regular sgl pool and causing a crash (BUG() is called). Instead, assign
    the p2p_dev for the request only if it was allocated from p2p pool.
    
    This is the crash that was caused:
    
    [Sun May 30 19:13:53 2021] ------------[ cut here ]------------
    [Sun May 30 19:13:53 2021] kernel BUG at lib/genalloc.c:518!
    [Sun May 30 19:13:53 2021] invalid opcode: 0000 [#1] SMP PTI
    ...
    [Sun May 30 19:13:53 2021] kernel BUG at lib/genalloc.c:518!
    ...
    [Sun May 30 19:13:53 2021] RIP: 0010:gen_pool_free_owner+0xa8/0xb0
    ...
    [Sun May 30 19:13:53 2021] Call Trace:
    [Sun May 30 19:13:53 2021] ------------[ cut here ]------------
    [Sun May 30 19:13:53 2021]  pci_free_p2pmem+0x2b/0x70
    [Sun May 30 19:13:53 2021]  pci_p2pmem_free_sgl+0x4f/0x80
    [Sun May 30 19:13:53 2021]  nvmet_req_free_sgls+0x1e/0x80 [nvmet]
    [Sun May 30 19:13:53 2021] kernel BUG at lib/genalloc.c:518!
    [Sun May 30 19:13:53 2021]  nvmet_rdma_release_rsp+0x4e/0x1f0 [nvmet_rdma]
    [Sun May 30 19:13:53 2021]  nvmet_rdma_send_done+0x1c/0x60 [nvmet_rdma]
    
    Fixes: c6e3f1339812 ("nvmet: add metadata support for block devices")
    Reviewed-by: Israel Rukshin <israelr@nvidia.com>
    Signed-off-by: Max Gurtovoy <mgurtovoy@nvidia.com>
    Reviewed-by: Logan Gunthorpe <logang@deltatee.com>
    Reviewed-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ef94ecfa3e5bf1fba48b4e1bc078663887e1a2a7
Author: Yevgeny Kliteynik <kliteyn@nvidia.com>
Date:   Wed Dec 9 16:40:38 2020 +0200

    net/mlx5: DR, Create multi-destination flow table with level less than 64
    
    [ Upstream commit 216214c64a8c1cb9078c2c0aec7bb4a2f8e75397 ]
    
    Flow table that contains flow pointing to multiple flow tables or multiple
    TIRs must have a level lower than 64. In our case it applies to muli-
    destination flow table.
    Fix the level of the created table to comply with HW Spec definitions, and
    still make sure that its level lower than SW-owned tables, so that it
    would be possible to point from the multi-destination FW table to SW
    tables.
    
    Fixes: 34583beea4b7 ("net/mlx5: DR, Create multi-destination table for SW-steering use")
    Signed-off-by: Yevgeny Kliteynik <kliteyn@nvidia.com>
    Reviewed-by: Alex Vesker <valex@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 500563cb6fb0c5a2afcf00c16ba48c5fab1f30b5
Author: Roi Dayan <roid@nvidia.com>
Date:   Wed May 19 10:00:27 2021 +0300

    net/mlx5e: Fix adding encap rules to slow path
    
    [ Upstream commit 2a2c84facd4af661d71be6e81fd9d490ac7fdc53 ]
    
    On some devices the ignore flow level cap is not supported and we
    shouldn't use it. Setting the dest ft with mlx5_chains_get_tc_end_ft()
    already gives the correct end ft if ignore flow level cap is supported
    or not.
    
    Fixes: 39ac237ce009 ("net/mlx5: E-Switch, Refactor chains and priorities")
    Signed-off-by: Roi Dayan <roid@nvidia.com>
    Reviewed-by: Paul Blakey <paulb@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9606de3ac084e6ebcc9493229a4dab3ce3c5c1a9
Author: Roi Dayan <roid@nvidia.com>
Date:   Tue Apr 13 14:35:22 2021 +0300

    net/mlx5e: Check for needed capability for cvlan matching
    
    [ Upstream commit afe93f71b5d3cdae7209213ec8ef25210b837b93 ]
    
    If not supported show an error and return instead of trying to offload
    to the hardware and fail.
    
    Fixes: 699e96ddf47f ("net/mlx5e: Support offloading tc double vlan headers match")
    Reported-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Roi Dayan <roid@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d1ead783fe2e3175fb6c6d8863aa2ad1ef661895
Author: Moshe Shemesh <moshe@nvidia.com>
Date:   Thu Apr 8 07:30:57 2021 +0300

    net/mlx5: Check firmware sync reset requested is set before trying to abort it
    
    [ Upstream commit 5940e64281c09976ce2b560244217e610bf9d029 ]
    
    In case driver sent NACK to firmware on sync reset request, it will get
    sync reset abort event while it didn't set sync reset requested mode.
    Thus, on abort sync reset event handler, driver should check reset
    requested is set before trying to stop sync reset poll.
    
    Fixes: 7dd6df329d4c ("net/mlx5: Handle sync reset abort event")
    Signed-off-by: Moshe Shemesh <moshe@nvidia.com>
    Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f8bdc8d7d8e88a8894e9f9856920a40183e69a40
Author: Aya Levin <ayal@nvidia.com>
Date:   Tue May 25 15:35:25 2021 +0300

    net/mlx5e: Fix incompatible casting
    
    [ Upstream commit d8ec92005f806dfa7524e9171eca707c0bb1267e ]
    
    Device supports setting of a single fec mode at a time, enforce this
    by bitmap_weight == 1. Input from fec command is in u32, avoid cast to
    unsigned long and use bitmap_from_arr32 to populate bitmap safely.
    
    Fixes: 4bd9d5070b92 ("net/mlx5e: Enforce setting of a single FEC mode")
    Signed-off-by: Aya Levin <ayal@nvidia.com>
    Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0f1e6fe66977a864fe850522316f713d7b926fd9
Author: Maxim Mikityanskiy <maximmi@nvidia.com>
Date:   Tue Jun 1 15:08:00 2021 +0300

    net/tls: Fix use-after-free after the TLS device goes down and up
    
    [ Upstream commit c55dcdd435aa6c6ad6ccac0a4c636d010ee367a4 ]
    
    When a netdev with active TLS offload goes down, tls_device_down is
    called to stop the offload and tear down the TLS context. However, the
    socket stays alive, and it still points to the TLS context, which is now
    deallocated. If a netdev goes up, while the connection is still active,
    and the data flow resumes after a number of TCP retransmissions, it will
    lead to a use-after-free of the TLS context.
    
    This commit addresses this bug by keeping the context alive until its
    normal destruction, and implements the necessary fallbacks, so that the
    connection can resume in software (non-offloaded) kTLS mode.
    
    On the TX side tls_sw_fallback is used to encrypt all packets. The RX
    side already has all the necessary fallbacks, because receiving
    non-decrypted packets is supported. The thing needed on the RX side is
    to block resync requests, which are normally produced after receiving
    non-decrypted packets.
    
    The necessary synchronization is implemented for a graceful teardown:
    first the fallbacks are deployed, then the driver resources are released
    (it used to be possible to have a tls_dev_resync after tls_dev_del).
    
    A new flag called TLS_RX_DEV_DEGRADED is added to indicate the fallback
    mode. It's used to skip the RX resync logic completely, as it becomes
    useless, and some objects may be released (for example, resync_async,
    which is allocated and freed by the driver).
    
    Fixes: e8f69799810c ("net/tls: Add generic NIC offload infrastructure")
    Signed-off-by: Maxim Mikityanskiy <maximmi@nvidia.com>
    Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit aada297447114019ab63ee4e7d6c5906f6cfa7e9
Author: Maxim Mikityanskiy <maximmi@nvidia.com>
Date:   Tue Jun 1 15:07:59 2021 +0300

    net/tls: Replace TLS_RX_SYNC_RUNNING with RCU
    
    [ Upstream commit 05fc8b6cbd4f979a6f25759c4a17dd5f657f7ecd ]
    
    RCU synchronization is guaranteed to finish in finite time, unlike a
    busy loop that polls a flag. This patch is a preparation for the bugfix
    in the next patch, where the same synchronize_net() call will also be
    used to sync with the TX datapath.
    
    Signed-off-by: Maxim Mikityanskiy <maximmi@nvidia.com>
    Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 80cebcccc12088a6312fc1ce0f3711f0267a66cd
Author: Alexander Aring <aahringo@redhat.com>
Date:   Mon May 31 17:00:30 2021 -0400

    net: sock: fix in-kernel mark setting
    
    [ Upstream commit dd9082f4a9f94280fbbece641bf8fc0a25f71f7a ]
    
    This patch fixes the in-kernel mark setting by doing an additional
    sk_dst_reset() which was introduced by commit 50254256f382 ("sock: Reset
    dst when changing sk_mark via setsockopt"). The code is now shared to
    avoid any further suprises when changing the socket mark value.
    
    Fixes: 84d1c617402e ("net: sock: add sock_set_mark")
    Reported-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: Alexander Aring <aahringo@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ee64a27e9edcbeba32d73832e9b1771b8c409e81
Author: Vladimir Oltean <vladimir.oltean@nxp.com>
Date:   Mon May 31 13:20:45 2021 +0300

    net: dsa: tag_8021q: fix the VLAN IDs used for encoding sub-VLANs
    
    [ Upstream commit 4ef8d857b5f494e62bce9085031563fda35f9563 ]
    
    When using sub-VLANs in the range of 1-7, the resulting value from:
    
            rx_vid = dsa_8021q_rx_vid_subvlan(ds, port, subvlan);
    
    is wrong according to the description from tag_8021q.c:
    
     | 11  | 10  |  9  |  8  |  7  |  6  |  5  |  4  |  3  |  2  |  1  |  0  |
     +-----------+-----+-----------------+-----------+-----------------------+
     |    DIR    | SVL |    SWITCH_ID    |  SUBVLAN  |          PORT         |
     +-----------+-----+-----------------+-----------+-----------------------+
    
    For example, when ds->index == 0, port == 3 and subvlan == 1,
    dsa_8021q_rx_vid_subvlan() returns 1027, same as it returns for
    subvlan == 0, but it should have returned 1043.
    
    This is because the low portion of the subvlan bits are not masked
    properly when writing into the 12-bit VLAN value. They are masked into
    bits 4:3, but they should be masked into bits 5:4.
    
    Fixes: 3eaae1d05f2b ("net: dsa: tag_8021q: support up to 8 VLANs per port using sub-VLANs")
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit eba7c76a5651392a9132c54aceddc5af8cfb0938
Author: Li Huafei <lihuafei1@huawei.com>
Date:   Tue Jun 1 17:27:50 2021 +0800

    perf probe: Fix NULL pointer dereference in convert_variable_location()
    
    [ Upstream commit 3cb17cce1e76ccc5499915a4d7e095a1ad6bf7ff ]
    
    If we just check whether the variable can be converted, 'tvar' should be
    a null pointer. However, the null pointer check is missing in the
    'Constant value' execution path.
    
    The following cases can trigger this problem:
    
            $ cat test.c
            #include <stdio.h>
    
            void main(void)
            {
                    int a;
                    const int b = 1;
    
                    asm volatile("mov %1, %0" : "=r"(a): "i"(b));
                    printf("a: %d\n", a);
            }
    
            $ gcc test.c -o test -O -g
            $ sudo ./perf probe -x ./test -L "main"
            <main@/home/lhf/test.c:0>
                  0  void main(void)
                     {
                  2          int a;
                             const int b = 1;
    
                             asm volatile("mov %1, %0" : "=r"(a): "i"(b));
                  6          printf("a: %d\n", a);
                     }
    
            $ sudo ./perf probe -x ./test -V "main:6"
            Segmentation fault
    
    The check on 'tvar' is added. If 'tavr' is a null pointer, we return 0
    to indicate that the variable can be converted. Now, we can successfully
    show the variables that can be accessed.
    
            $ sudo ./perf probe -x ./test -V "main:6"
            Available variables at main:6
                    @<main+13>
                            char*   __fmt
                            int     a
                            int     b
    
    However, the variable 'b' cannot be tracked.
    
            $ sudo ./perf probe -x ./test -D "main:6 b"
            Failed to find the location of the 'b' variable at this address.
             Perhaps it has been optimized out.
             Use -V with the --range option to show 'b' location range.
              Error: Failed to add events.
    
    This is because __die_find_variable_cb() did not successfully match
    variable 'b', which has the DW_AT_const_value attribute instead of
    DW_AT_location. We added support for DW_AT_const_value in
    __die_find_variable_cb(). With this modification, we can successfully
    track the variable 'b'.
    
            $ sudo ./perf probe -x ./test -D "main:6 b"
            p:probe_test/main_L6 /home/lhf/test:0x1156 b=\1:s32
    
    Fixes: 66f69b219716 ("perf probe: Support DW_AT_const_value constant value")
    Signed-off-by: Li Huafei <lihuafei1@huawei.com>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Frank Ch. Eigler <fche@redhat.com>
    Cc: Jianlin Lv <jianlin.lv@arm.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
    Cc: Yang Jihong <yangjihong1@huawei.com>
    Cc: Zhang Jinhao <zhangjinhao2@huawei.com>
    http://lore.kernel.org/lkml/20210601092750.169601-1-lihuafei1@huawei.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b89474465f69395dbbc2c055382a189fe5ec144b
Author: Erik Kaneda <erik.kaneda@intel.com>
Date:   Fri May 21 15:28:08 2021 -0700

    ACPICA: Clean up context mutex during object deletion
    
    [ Upstream commit e4dfe108371214500ee10c2cf19268f53acaa803 ]
    
    ACPICA commit bc43c878fd4ff27ba75b1d111b97ee90d4a82707
    
    Fixes: c27f3d011b08 ("Fix race in GenericSerialBus (I2C) and GPIO OpRegion parameter handling")
    Link: https://github.com/acpica/acpica/commit/bc43c878
    Reported-by: John Garry <john.garry@huawei.com>
    Reported-by: Xiang Chen <chenxiang66@hisilicon.com>
    Tested-by: Xiang Chen <chenxiang66@hisilicon.com>
    Signed-off-by: Erik Kaneda <erik.kaneda@intel.com>
    Signed-off-by: Bob Moore <robert.moore@intel.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ec6793f175760de6d919bcbba8e15868f55af1c2
Author: Sagi Grimberg <sagi@grimberg.me>
Date:   Thu May 27 18:16:38 2021 -0700

    nvme-rdma: fix in-casule data send for chained sgls
    
    [ Upstream commit 12b2aaadb6d5ef77434e8db21f469f46fe2d392e ]
    
    We have only 2 inline sg entries and we allow 4 sg entries for the send
    wr sge. Larger sgls entries will be chained. However when we build
    in-capsule send wr sge, we iterate without taking into account that the
    sgl may be chained and still fit in-capsule (which can happen if the sgl
    is bigger than 2, but lower-equal to 4).
    
    Fix in-capsule data mapping to correctly iterate chained sgls.
    
    Fixes: 38e1800275d3 ("nvme-rdma: Avoid preallocating big SGL for data")
    Reported-by: Walker, Benjamin <benjamin.walker@intel.com>
    Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
    Reviewed-by: Max Gurtovoy <mgurtovoy@nvidia.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7d4446bcb40630ddb37327ca427ce2bf85cd7a09
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Thu May 27 16:31:39 2021 -0700

    mptcp: do not reset MP_CAPABLE subflow on mapping errors
    
    [ Upstream commit dea2b1ea9c705c5ba351a9174403fd83dbb68fc3 ]
    
    When some mapping related errors occurs we close the main
    MPC subflow with a RST. We should instead fallback gracefully
    to TCP, and do the reset only for MPJ subflows.
    
    Fixes: d22f4988ffec ("mptcp: process MP_CAPABLE data option")
    Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/192
    Reported-by: Matthieu Baerts <matthieu.baerts@tessares.net>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9d0d1d10ba54e66d0026454c5ae94f8aff6a2375
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Thu May 27 16:31:38 2021 -0700

    mptcp: always parse mptcp options for MPC reqsk
    
    [ Upstream commit 06f9a435b3aa12f4de6da91f11fdce8ce7b46205 ]
    
    In subflow_syn_recv_sock() we currently skip options parsing
    for OoO packet, given that such packets may not carry the relevant
    MPC option.
    
    If the peer generates an MPC+data TSO packet and some of the early
    segments are lost or get reorder, we server will ignore the peer key,
    causing transient, unexpected fallback to TCP.
    
    The solution is always parsing the incoming MPTCP options, and
    do the fallback only for in-order packets. This actually cleans
    the existing code a bit.
    
    Fixes: d22f4988ffec ("mptcp: process MP_CAPABLE data option")
    Reported-by: Matthieu Baerts <matthieu.baerts@tessares.net>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b9c78b1a95966a7bd2ddae05b73eafc0cda4fba3
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Thu May 27 16:31:37 2021 -0700

    mptcp: fix sk_forward_memory corruption on retransmission
    
    [ Upstream commit b5941f066b4ca331db225a976dae1d6ca8cf0ae3 ]
    
    MPTCP sk_forward_memory handling is a bit special, as such field
    is protected by the msk socket spin_lock, instead of the plain
    socket lock.
    
    Currently we have a code path updating such field without handling
    the relevant lock:
    
    __mptcp_retrans() -> __mptcp_clean_una_wakeup()
    
    Several helpers in __mptcp_clean_una_wakeup() will update
    sk_forward_alloc, possibly causing such field corruption, as reported
    by Matthieu.
    
    Address the issue providing and using a new variant of blamed function
    which explicitly acquires the msk spin lock.
    
    Fixes: 64b9cea7a0af ("mptcp: fix spurious retransmissions")
    Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/172
    Reported-by: Matthieu Baerts <matthieu.baerts@tessares.net>
    Tested-by: Matthieu Baerts <matthieu.baerts@tessares.net>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 41d6cc0cd8e91c69df0f8bd009e5bc21df0cecd2
Author: Ariel Levkovich <lariel@nvidia.com>
Date:   Wed May 26 20:01:10 2021 +0300

    net/sched: act_ct: Fix ct template allocation for zone 0
    
    [ Upstream commit fb91702b743dec78d6507c53a2dec8a8883f509d ]
    
    Fix current behavior of skipping template allocation in case the
    ct action is in zone 0.
    
    Skipping the allocation may cause the datapath ct code to ignore the
    entire ct action with all its attributes (commit, nat) in case the ct
    action in zone 0 was preceded by a ct clear action.
    
    The ct clear action sets the ct_state to untracked and resets the
    skb->_nfct pointer. Under these conditions and without an allocated
    ct template, the skb->_nfct pointer will remain NULL which will
    cause the tc ct action handler to exit without handling commit and nat
    actions, if such exist.
    
    For example, the following rule in OVS dp:
    recirc_id(0x2),ct_state(+new-est-rel-rpl+trk),ct_label(0/0x1), \
    in_port(eth0),actions:ct_clear,ct(commit,nat(src=10.11.0.12)), \
    recirc(0x37a)
    
    Will result in act_ct skipping the commit and nat actions in zone 0.
    
    The change removes the skipping of template allocation for zone 0 and
    treats it the same as any other zone.
    
    Fixes: b57dc7c13ea9 ("net/sched: Introduce action ct")
    Signed-off-by: Ariel Levkovich <lariel@nvidia.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Link: https://lore.kernel.org/r/20210526170110.54864-1-lariel@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 30822781c89943b6a3ed122324ceb37cea7042a3
Author: Paul Blakey <paulb@nvidia.com>
Date:   Wed May 26 14:44:09 2021 +0300

    net/sched: act_ct: Offload connections with commit action
    
    [ Upstream commit 0cc254e5aa37cf05f65bcdcdc0ac5c58010feb33 ]
    
    Currently established connections are not offloaded if the filter has a
    "ct commit" action. This behavior will not offload connections of the
    following scenario:
    
    $ tc_filter add dev $DEV ingress protocol ip prio 1 flower \
      ct_state -trk \
      action ct commit action goto chain 1
    
    $ tc_filter add dev $DEV ingress protocol ip chain 1 prio 1 flower \
      action mirred egress redirect dev $DEV2
    
    $ tc_filter add dev $DEV2 ingress protocol ip prio 1 flower \
      action ct commit action goto chain 1
    
    $ tc_filter add dev $DEV2 ingress protocol ip prio 1 chain 1 flower \
      ct_state +trk+est \
      action mirred egress redirect dev $DEV
    
    Offload established connections, regardless of the commit flag.
    
    Fixes: 46475bb20f4b ("net/sched: act_ct: Software offload of established flows")
    Reviewed-by: Oz Shlomo <ozsh@nvidia.com>
    Reviewed-by: Jiri Pirko <jiri@nvidia.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: Paul Blakey <paulb@nvidia.com>
    Link: https://lore.kernel.org/r/1622029449-27060-1-git-send-email-paulb@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 36c19acbbc7e08f3a0d34bf356e6548cdf801b93
Author: Parav Pandit <parav@nvidia.com>
Date:   Wed May 26 23:00:27 2021 +0300

    devlink: Correct VIRTUAL port to not have phys_port attributes
    
    [ Upstream commit b28d8f0c25a9b0355116cace5f53ea52bd4020c8 ]
    
    Physical port name, port number attributes do not belong to virtual port
    flavour. When VF or SF virtual ports are registered they incorrectly
    append "np0" string in the netdevice name of the VF/SF.
    
    Before this fix, VF netdevice name were ens2f0np0v0, ens2f0np0v1 for VF
    0 and 1 respectively.
    
    After the fix, they are ens2f0v0, ens2f0v1.
    
    With this fix, reading /sys/class/net/ens2f0v0/phys_port_name returns
    -EOPNOTSUPP.
    
    Also devlink port show example for 2 VFs on one PF to ensure that any
    physical port attributes are not exposed.
    
    $ devlink port show
    pci/0000:06:00.0/65535: type eth netdev ens2f0np0 flavour physical port 0 splittable false
    pci/0000:06:00.3/196608: type eth netdev ens2f0v0 flavour virtual splittable false
    pci/0000:06:00.4/262144: type eth netdev ens2f0v1 flavour virtual splittable false
    
    This change introduces a netdevice name change on systemd/udev
    version 245 and higher which honors phys_port_name sysfs file for
    generation of netdevice name.
    
    This also aligns to phys_port_name usage which is limited to switchdev
    ports as described in [1].
    
    [1] https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git/tree/Documentation/networking/switchdev.rst
    
    Fixes: acf1ee44ca5d ("devlink: Introduce devlink port flavour virtual")
    Signed-off-by: Parav Pandit <parav@nvidia.com>
    Reviewed-by: Jiri Pirko <jiri@nvidia.com>
    Link: https://lore.kernel.org/r/20210526200027.14008-1-parav@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 47b0e3728f47b9babe0beadf25f77c24063decf6
Author: Javier Martinez Canillas <javierm@redhat.com>
Date:   Wed May 26 23:52:28 2021 +0200

    kbuild: Quote OBJCOPY var to avoid a pahole call break the build
    
    [ Upstream commit ff2e6efda0d5c51b33e2bcc0b0b981ac0a0ef214 ]
    
    The ccache tool can be used to speed up cross-compilation, by calling the
    compiler and binutils through ccache. For example, following should work:
    
        $ export ARCH=arm64 CROSS_COMPILE="ccache aarch64-linux-gnu-"
    
        $ make M=drivers/gpu/drm/rockchip/
    
    but pahole fails to extract the BTF info from DWARF, breaking the build:
    
          CC [M]  drivers/gpu/drm/rockchip//rockchipdrm.mod.o
          LD [M]  drivers/gpu/drm/rockchip//rockchipdrm.ko
          BTF [M] drivers/gpu/drm/rockchip//rockchipdrm.ko
        aarch64-linux-gnu-objcopy: invalid option -- 'J'
        Usage: aarch64-linux-gnu-objcopy [option(s)] in-file [out-file]
         Copies a binary file, possibly transforming it in the process
        ...
        make[1]: *** [scripts/Makefile.modpost:156: __modpost] Error 2
        make: *** [Makefile:1866: modules] Error 2
    
    this fails because OBJCOPY is set to "ccache aarch64-linux-gnu-copy" and
    later pahole is executed with the following command line:
    
        LLVM_OBJCOPY=$(OBJCOPY) $(PAHOLE) -J --btf_base vmlinux $@
    
    which gets expanded to:
    
        LLVM_OBJCOPY=ccache aarch64-linux-gnu-objcopy pahole -J ...
    
    instead of:
    
        LLVM_OBJCOPY="ccache aarch64-linux-gnu-objcopy" pahole -J ...
    
    Fixes: 5f9ae91f7c0d ("kbuild: Build kernel module BTFs if BTF is enabled and pahole supports it")
    Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
    Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
    Acked-by: Andrii Nakryiko <andrii@kernel.org>
    Acked-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Link: https://lore.kernel.org/bpf/20210526215228.3729875-1-javierm@redhat.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c30c28987173e67d1a061073bf80e83ffcac345f
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Fri May 14 15:58:50 2021 +0200

    HID: i2c-hid: fix format string mismatch
    
    [ Upstream commit dc5f9f55502e13ba05731d5046a14620aa2ff456 ]
    
    clang doesn't like printing a 32-bit integer using %hX format string:
    
    drivers/hid/i2c-hid/i2c-hid-core.c:994:18: error: format specifies type 'unsigned short' but the argument has type '__u32' (aka 'unsigned int') [-Werror,-Wformat]
                     client->name, hid->vendor, hid->product);
                                   ^~~~~~~~~~~
    drivers/hid/i2c-hid/i2c-hid-core.c:994:31: error: format specifies type 'unsigned short' but the argument has type '__u32' (aka 'unsigned int') [-Werror,-Wformat]
                     client->name, hid->vendor, hid->product);
                                                ^~~~~~~~~~~~
    
    Use an explicit cast to truncate it to the low 16 bits instead.
    
    Fixes: 9ee3e06610fd ("HID: i2c-hid: override HID descriptors for certain devices")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Reviewed-by: Nathan Chancellor <nathan@kernel.org>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 29beadea66a226d744d5ffdcde6b984623053d24
Author: Basavaraj Natikar <Basavaraj.Natikar@amd.com>
Date:   Wed May 12 18:41:56 2021 +0530

    HID: amd_sfh: Fix memory leak in amd_sfh_work
    
    [ Upstream commit 5ad755fd2b326aa2bc8910b0eb351ee6aece21b1 ]
    
    Kmemleak tool detected a memory leak in the amd_sfh driver.
    
    ====================
    unreferenced object 0xffff88810228ada0 (size 32):
      comm "insmod", pid 3968, jiffies 4295056001 (age 775.792s)
      hex dump (first 32 bytes):
        00 20 73 1f 81 88 ff ff 00 01 00 00 00 00 ad de  . s.............
        22 01 00 00 00 00 ad de 01 00 02 00 00 00 00 00  "...............
      backtrace:
        [<000000007b4c8799>] kmem_cache_alloc_trace+0x163/0x4f0
        [<0000000005326893>] amd_sfh_get_report+0xa4/0x1d0 [amd_sfh]
        [<000000002a9e5ec4>] amdtp_hid_request+0x62/0x80 [amd_sfh]
        [<00000000b8a95807>] sensor_hub_get_feature+0x145/0x270 [hid_sensor_hub]
        [<00000000fda054ee>] hid_sensor_parse_common_attributes+0x215/0x460 [hid_sensor_iio_common]
        [<0000000021279ecf>] hid_accel_3d_probe+0xff/0x4a0 [hid_sensor_accel_3d]
        [<00000000915760ce>] platform_probe+0x6a/0xd0
        [<0000000060258a1f>] really_probe+0x192/0x620
        [<00000000fa812f2d>] driver_probe_device+0x14a/0x1d0
        [<000000005e79f7fd>] __device_attach_driver+0xbd/0x110
        [<0000000070d15018>] bus_for_each_drv+0xfd/0x160
        [<0000000013a3c312>] __device_attach+0x18b/0x220
        [<000000008c7b4afc>] device_initial_probe+0x13/0x20
        [<00000000e6e99665>] bus_probe_device+0xfe/0x120
        [<00000000833fa90b>] device_add+0x6a6/0xe00
        [<00000000fa901078>] platform_device_add+0x180/0x380
    ====================
    
    The fix is to freeing request_list entry once the processed entry is
    removed from the request_list.
    
    Fixes: 4b2c53d93a4b ("SFH:Transport Driver to add support of AMD Sensor Fusion Hub (SFH)")
    Reviewed-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
    Signed-off-by: Basavaraj Natikar <Basavaraj.Natikar@amd.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 427bc15bbd9d31a80eebf836ef0c2cd088e00b4d
Author: Zhen Lei <thunder.leizhen@huawei.com>
Date:   Sat May 8 10:47:37 2021 +0800

    HID: pidff: fix error return code in hid_pidff_init()
    
    [ Upstream commit 3dd653c077efda8152f4dd395359617d577a54cd ]
    
    Fix to return a negative error code from the error handling
    case instead of 0, as done elsewhere in this function.
    
    Fixes: 224ee88fe395 ("Input: add force feedback driver for PID devices")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 192576732f76e05ee3661c898fb44a8f2adb5651
Author: Tom Rix <trix@redhat.com>
Date:   Fri May 7 12:18:19 2021 -0700

    HID: logitech-hidpp: initialize level variable
    
    [ Upstream commit 81c8bf9170477d453b24a6bc3300d201d641e645 ]
    
    Static analysis reports this representative problem
    
    hid-logitech-hidpp.c:1356:23: warning: Assigned value is
      garbage or undefined
            hidpp->battery.level = level;
                                 ^ ~~~~~
    
    In some cases, 'level' is never set in hidpp20_battery_map_status_voltage()
    Since level is not available on all hw, initialize level to unknown.
    
    Fixes: be281368f297 ("hid-logitech-hidpp: read battery voltage from newer devices")
    Signed-off-by: Tom Rix <trix@redhat.com>
    Reviewed-by: Filipe Laíns <lains@riseup.net>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 25775914cc8b9b04b2fd869de33959d1c7f00030
Author: Julian Anastasov <ja@ssi.bg>
Date:   Mon May 24 22:54:57 2021 +0300

    ipvs: ignore IP_VS_SVC_F_HASHED flag when adding service
    
    [ Upstream commit 56e4ee82e850026d71223262c07df7d6af3bd872 ]
    
    syzbot reported memory leak [1] when adding service with
    HASHED flag. We should ignore this flag both from sockopt
    and netlink provided data, otherwise the service is not
    hashed and not visible while releasing resources.
    
    [1]
    BUG: memory leak
    unreferenced object 0xffff888115227800 (size 512):
      comm "syz-executor263", pid 8658, jiffies 4294951882 (age 12.560s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<ffffffff83977188>] kmalloc include/linux/slab.h:556 [inline]
        [<ffffffff83977188>] kzalloc include/linux/slab.h:686 [inline]
        [<ffffffff83977188>] ip_vs_add_service+0x598/0x7c0 net/netfilter/ipvs/ip_vs_ctl.c:1343
        [<ffffffff8397d770>] do_ip_vs_set_ctl+0x810/0xa40 net/netfilter/ipvs/ip_vs_ctl.c:2570
        [<ffffffff838449a8>] nf_setsockopt+0x68/0xa0 net/netfilter/nf_sockopt.c:101
        [<ffffffff839ae4e9>] ip_setsockopt+0x259/0x1ff0 net/ipv4/ip_sockglue.c:1435
        [<ffffffff839fa03c>] raw_setsockopt+0x18c/0x1b0 net/ipv4/raw.c:857
        [<ffffffff83691f20>] __sys_setsockopt+0x1b0/0x360 net/socket.c:2117
        [<ffffffff836920f2>] __do_sys_setsockopt net/socket.c:2128 [inline]
        [<ffffffff836920f2>] __se_sys_setsockopt net/socket.c:2125 [inline]
        [<ffffffff836920f2>] __x64_sys_setsockopt+0x22/0x30 net/socket.c:2125
        [<ffffffff84350efa>] do_syscall_64+0x3a/0xb0 arch/x86/entry/common.c:47
        [<ffffffff84400068>] entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    Reported-and-tested-by: syzbot+e562383183e4b1766930@syzkaller.appspotmail.com
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Julian Anastasov <ja@ssi.bg>
    Reviewed-by: Simon Horman <horms@verge.net.au>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f1a02cde2debcf67bd562e15ba53f8b685ab1411
Author: Max Gurtovoy <mgurtovoy@nvidia.com>
Date:   Tue May 18 22:21:31 2021 +0300

    vfio/platform: fix module_put call in error flow
    
    [ Upstream commit dc51ff91cf2d1e9a2d941da483602f71d4a51472 ]
    
    The ->parent_module is the one that use in try_module_get. It should
    also be the one the we use in module_put during vfio_platform_open().
    
    Fixes: 32a2d71c4e80 ("vfio: platform: introduce vfio-platform-base module")
    Signed-off-by: Max Gurtovoy <mgurtovoy@nvidia.com>
    Message-Id: <20210518192133.59195-1-mgurtovoy@nvidia.com>
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a5ed75187580e37a6afc535d4d5c28795807be23
Author: Wei Yongjun <weiyongjun1@huawei.com>
Date:   Thu May 20 13:36:41 2021 +0000

    samples: vfio-mdev: fix error handing in mdpy_fb_probe()
    
    [ Upstream commit 752774ce7793a1f8baa55aae31f3b4caac49cbe4 ]
    
    Fix to return a negative error code from the framebuffer_alloc() error
    handling case instead of 0, also release regions in some error handing
    cases.
    
    Fixes: cacade1946a4 ("sample: vfio mdev display - guest driver")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
    Message-Id: <20210520133641.1421378-1-weiyongjun1@huawei.com>
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1752346dfd977387e9cfd0c866d2f97fe7d55e36
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Sat May 15 12:08:56 2021 -0700

    vfio/pci: zap_vma_ptes() needs MMU
    
    [ Upstream commit 2a55ca37350171d9b43d561528f23d4130097255 ]
    
    zap_vma_ptes() is only available when CONFIG_MMU is set/enabled.
    Without CONFIG_MMU, vfio_pci.o has build errors, so make
    VFIO_PCI depend on MMU.
    
    riscv64-linux-ld: drivers/vfio/pci/vfio_pci.o: in function `vfio_pci_mmap_open':
    vfio_pci.c:(.text+0x1ec): undefined reference to `zap_vma_ptes'
    riscv64-linux-ld: drivers/vfio/pci/vfio_pci.o: in function `.L0 ':
    vfio_pci.c:(.text+0x165c): undefined reference to `zap_vma_ptes'
    
    Fixes: 11c4cd07ba11 ("vfio-pci: Fault mmaps to enable vma tracking")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Reported-by: kernel test robot <lkp@intel.com>
    Cc: Alex Williamson <alex.williamson@redhat.com>
    Cc: Cornelia Huck <cohuck@redhat.com>
    Cc: kvm@vger.kernel.org
    Cc: Jason Gunthorpe <jgg@nvidia.com>
    Cc: Eric Auger <eric.auger@redhat.com>
    Message-Id: <20210515190856.2130-1-rdunlap@infradead.org>
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2d5e0f9d5b8d945efb0719e2349bb94466bf3c04
Author: Zhen Lei <thunder.leizhen@huawei.com>
Date:   Sat May 15 10:04:58 2021 +0800

    vfio/pci: Fix error return code in vfio_ecap_init()
    
    [ Upstream commit d1ce2c79156d3baf0830990ab06d296477b93c26 ]
    
    The error code returned from vfio_ext_cap_len() is stored in 'len', not
    in 'ret'.
    
    Fixes: 89e1f7d4c66d ("vfio: Add PCI device driver")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com>
    Reviewed-by: Max Gurtovoy <mgurtovoy@nvidia.com>
    Message-Id: <20210515020458.6771-1-thunder.leizhen@huawei.com>
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 99702e4d6e9b3b35818f92158a19945aee4ed0a4
Author: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Date:   Wed Apr 21 21:46:36 2021 +0200

    efi: cper: fix snprintf() use in cper_dimm_err_location()
    
    [ Upstream commit 942859d969de7f6f7f2659a79237a758b42782da ]
    
    snprintf() should be given the full buffer size, not one less. And it
    guarantees nul-termination, so doing it manually afterwards is
    pointless.
    
    It's even potentially harmful (though probably not in practice because
    CPER_REC_LEN is 256), due to the "return how much would have been
    written had the buffer been big enough" semantics. I.e., if the bank
    and/or device strings are long enough that the "DIMM location ..."
    output gets truncated, writing to msg[n] is a buffer overflow.
    
    Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
    Fixes: 3760cd20402d4 ("CPER: Adjust code flow of some functions")
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e786eacbf323b632bd4e77fc0f5474b5a422e025
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Fri Apr 23 14:48:31 2021 +0300

    efi/libstub: prevent read overflow in find_file_option()
    
    [ Upstream commit c4039b29fe9637e1135912813f830994af4c867f ]
    
    If the buffer has slashes up to the end then this will read past the end
    of the array.  I don't anticipate that this is an issue for many people
    in real life, but it's the right thing to do and it makes static
    checkers happy.
    
    Fixes: 7a88a6227dc7 ("efi/libstub: Fix path separator regression")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 68e34413ba722766cb68cab2651394915a831ab8
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Fri Apr 30 16:22:51 2021 +0200

    efi: Allow EFI_MEMORY_XP and EFI_MEMORY_RO both to be cleared
    
    [ Upstream commit 45add3cc99feaaf57d4b6f01d52d532c16a1caee ]
    
    UEFI spec 2.9, p.108, table 4-1 lists the scenario that both attributes
    are cleared with the description "No memory access protection is
    possible for Entry". So we can have valid entries where both attributes
    are cleared, so remove the check.
    
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Fixes: 10f0d2f577053 ("efi: Implement generic support for the Memory Attributes table")
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8a7e8b4e5631a03ea2fee27957857a56612108ca
Author: Changbin Du <changbin.du@intel.com>
Date:   Wed Mar 24 22:54:35 2021 +0800

    efi/fdt: fix panic when no valid fdt found
    
    [ Upstream commit 668a84c1bfb2b3fd5a10847825a854d63fac7baa ]
    
    setup_arch() would invoke efi_init()->efi_get_fdt_params(). If no
    valid fdt found then initial_boot_params will be null. So we
    should stop further fdt processing here. I encountered this
    issue on risc-v.
    
    Signed-off-by: Changbin Du <changbin.du@gmail.com>
    Fixes: b91540d52a08b ("RISC-V: Add EFI runtime services")
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dda954b96c90010cec3c5d93694e83a92e39748d
Author: Florian Westphal <fw@strlen.de>
Date:   Tue May 4 16:40:00 2021 +0200

    netfilter: conntrack: unregister ipv4 sockopts on error unwind
    
    [ Upstream commit 22cbdbcfb61acc78d5fc21ebb13ccc0d7e29f793 ]
    
    When ipv6 sockopt register fails, the ipv4 one needs to be removed.
    
    Fixes: a0ae2562c6c ("netfilter: conntrack: remove l3proto abstraction")
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 62c52507cddc3cf34c833654794fbc4286a5e7ed
Author: Grant Peltier <grantpeltier93@gmail.com>
Date:   Fri May 14 16:19:55 2021 -0500

    hwmon: (pmbus/isl68137) remove READ_TEMPERATURE_3 for RAA228228
    
    [ Upstream commit 2a29db088c7ae7121801a0d7a60740ed2d18c4f3 ]
    
    The initial version of the RAA228228 datasheet claimed that the device
    supported READ_TEMPERATURE_3 but not READ_TEMPERATURE_1. It has since been
    discovered that the datasheet was incorrect. The RAA228228 does support
    READ_TEMPERATURE_1 but does not support READ_TEMPERATURE_3.
    
    Signed-off-by: Grant Peltier <grantpeltier93@gmail.com>
    Fixes: 51fb91ed5a6f ("hwmon: (pmbus/isl68137) remove READ_TEMPERATURE_1 telemetry for RAA228228")
    Link: https://lore.kernel.org/r/20210514211954.GA24646@raspberrypi
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9cad2c70e408f84ece1174b76a1ccaf4aa166500
Author: Armin Wolf <W_Armin@gmx.de>
Date:   Thu May 13 17:45:46 2021 +0200

    hwmon: (dell-smm-hwmon) Fix index values
    
    [ Upstream commit 35d470b5fbc9f82feb77b56bb0d5d0b5cd73e9da ]
    
    When support for up to 10 temp sensors and for disabling automatic BIOS
    fan control was added, noone updated the index values used for
    disallowing fan support and fan type calls.
    Fix those values.
    
    Signed-off-by: Armin Wolf <W_Armin@gmx.de>
    Reviewed-by: Pali Rohár <pali@kernel.org>
    Link: https://lore.kernel.org/r/20210513154546.12430-1-W_Armin@gmx.de
    Fixes: 1bb46a20e73b ("hwmon: (dell-smm) Support up to 10 temp sensors")
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 068c4db1eed3a04f1e85e5a850e5a8aa1f236523
Author: Lorenzo Bianconi <lorenzo@kernel.org>
Date:   Fri May 7 18:50:19 2021 +0200

    mt76: mt76x0e: fix device hang during suspend/resume
    
    [ Upstream commit 509559c35bcd23d5a046624b225cb3e99a9f1481 ]
    
    Similar to usb device, re-initialize mt76x0e device after resume in order
    to fix mt7630e hang during suspend/resume
    
    Reported-by: Luca Trombin <luca.trombin@gmail.com>
    Fixes: c2a4d9fbabfb9 ("mt76x0: inital split between pci and usb")
    Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/4812f9611624b34053c1592fd9c175b67d4ffcb4.1620406022.git.lorenzo@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6919e8a24e70b6ba148fe07f44f835bcdd1a8d02
Author: Lorenzo Bianconi <lorenzo@kernel.org>
Date:   Fri Apr 23 16:27:09 2021 +0200

    mt76: mt7921: fix possible AOOB issue in mt7921_mcu_tx_rate_report
    
    [ Upstream commit d874e6c06952382897d35bf4094193cd44ae91bd ]
    
    Fix possible array out of bound access in mt7921_mcu_tx_rate_report.
    Remove unnecessary varibable in mt7921_mcu_tx_rate_report
    
    Fixes: 1c099ab44727c ("mt76: mt7921: add MCU support")
    Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/91a1e8f6b6a3e6a929de560ed68132f6eb421720.1619187875.git.lorenzo@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a31a19948c94c8e303d2963bc89db84606ee9d1a
Author: Lorenzo Bianconi <lorenzo@kernel.org>
Date:   Mon Apr 12 14:25:54 2021 +0200

    mt76: mt7921: add rcu section in mt7921_mcu_tx_rate_report
    
    [ Upstream commit 481fc927c8289919cc0be58666fcd1b7da187a0c ]
    
    Introduce rcu section in mt7921_mcu_tx_rate_report before dereferencing
    wcid pointer otherwise loockdep will report the following issue:
    
    [  115.245740] =============================
    [  115.245754] WARNING: suspicious RCU usage
    [  115.245771] 5.10.20 #0 Not tainted
    [  115.245784] -----------------------------
    [  115.245816] other info that might help us debug this:
    [  115.245830] rcu_scheduler_active = 2, debug_locks = 1
    [  115.245845] 3 locks held by kworker/u4:1/20:
    [  115.245858]  #0: ffffff80065ab138 ((wq_completion)phy0){+.+.}-{0:0}, at: process_one_work+0x1f8/0x6b8
    [  115.245948]  #1: ffffffc01198bdd8 ((work_completion)(&(&dev->mphy.mac_work)->work)){+.+.}-{0:0}, at: process_one_8
    [  115.246027]  #2: ffffff8006543ce8 (&dev->mutex#2){+.+.}-{3:3}, at: mt7921_mac_work+0x60/0x2b0 [mt7921e]
    [  115.246125]
    [  115.246125] stack backtrace:
    [  115.246142] CPU: 1 PID: 20 Comm: kworker/u4:1 Not tainted 5.10.20 #0
    [  115.246152] Hardware name: MediaTek MT7622 RFB1 board (DT)
    [  115.246168] Workqueue: phy0 mt7921_mac_work [mt7921e]
    [  115.246188] Call trace:
    [  115.246201]  dump_backtrace+0x0/0x1a8
    [  115.246213]  show_stack+0x14/0x30
    [  115.246228]  dump_stack+0xec/0x134
    [  115.246240]  lockdep_rcu_suspicious+0xcc/0xdc
    [  115.246255]  mt7921_get_wtbl_info+0x2a4/0x310 [mt7921e]
    [  115.246269]  mt7921_mac_work+0x284/0x2b0 [mt7921e]
    [  115.246281]  process_one_work+0x2a0/0x6b8
    [  115.246293]  worker_thread+0x40/0x440
    [  115.246305]  kthread+0x144/0x148
    [  115.246317]  ret_from_fork+0x10/0x18
    
    Fixes: 1c099ab44727c ("mt76: mt7921: add MCU support")
    Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>