commit 3909e2374335335c9504467caabc906d3f7487e4
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Jun 10 13:37:17 2021 +0200

    Linux 5.4.125
    
    Link: https://lore.kernel.org/r/20210608175935.254388043@linuxfoundation.org
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Jason Self <jason@bluehome.net>
    Tested-by: Florian Fainelli <f.fainelli@gmail.com>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d99029e6aab62aef0a0251588b2867e77e83b137
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 8e0bb29446d1031fb5a581f3222aec22cd26b784
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 bdc17b2f8264dcff9c9b88e17f4639d0b43445ee
Author: Jan Beulich <jbeulich@suse.com>
Date:   Tue May 18 18:13:42 2021 +0200

    xen-pciback: redo VF placement in the virtual topology
    
    The commit referenced below was incomplete: It merely affected what
    would get written to the vdev-<N> xenstore node. The guest would still
    find the function at the original function number as long as
    __xen_pcibk_get_pci_dev() wouldn't be in sync. The same goes for AER wrt
    __xen_pcibk_get_pcifront_dev().
    
    Undo overriding the function to zero and instead make sure that VFs at
    function zero remain alone in their slot. This has the added benefit of
    improving overall capacity, considering that there's only a total of 32
    slots available right now (PCI segment and bus can both only ever be
    zero at present).
    
    This is upstream commit 4ba50e7c423c29639878c00573288869aa627068.
    
    Fixes: 8a5248fe10b1 ("xen PV passthru: assign SR-IOV virtual functions to
    separate virtual slots")
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Link: https://lore.kernel.org/r/8def783b-404c-3452-196d-3f3fd4d72c9e@suse.com
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit defcc2b5e54a4724fb5733f802edf5dd596018b6
Author: Gao Xiang <hsiangkao@redhat.com>
Date:   Tue Dec 15 20:44:03 2020 -0800

    lib/lz4: explicitly support in-place decompression
    
    commit 89b158635ad79574bde8e94d45dad33f8cf09549 upstream.
    
    LZ4 final literal copy could be overlapped when doing
    in-place decompression, so it's unsafe to just use memcpy()
    on an optimized memcpy approach but memmove() instead.
    
    Upstream LZ4 has updated this years ago [1] (and the impact
    is non-sensible [2] plus only a few bytes remain), this commit
    just synchronizes LZ4 upstream code to the kernel side as well.
    
    It can be observed as EROFS in-place decompression failure
    on specific files when X86_FEATURE_ERMS is unsupported,
    memcpy() optimization of commit 59daa706fbec ("x86, mem:
    Optimize memcpy by avoiding memory false dependece") will
    be enabled then.
    
    Currently most modern x86-CPUs support ERMS, these CPUs just
    use "rep movsb" approach so no problem at all. However, it can
    still be verified with forcely disabling ERMS feature...
    
    arch/x86/lib/memcpy_64.S:
            ALTERNATIVE_2 "jmp memcpy_orig", "", X86_FEATURE_REP_GOOD, \
    -                     "jmp memcpy_erms", X86_FEATURE_ERMS
    +                     "jmp memcpy_orig", X86_FEATURE_ERMS
    
    We didn't observe any strange on arm64/arm/x86 platform before
    since most memcpy() would behave in an increasing address order
    ("copy upwards" [3]) and it's the correct order of in-place
    decompression but it really needs an update to memmove() for sure
    considering it's an undefined behavior according to the standard
    and some unique optimization already exists in the kernel.
    
    [1] https://github.com/lz4/lz4/commit/33cb8518ac385835cc17be9a770b27b40cd0e15b
    [2] https://github.com/lz4/lz4/pull/717#issuecomment-497818921
    [3] https://sourceware.org/bugzilla/show_bug.cgi?id=12518
    
    Link: https://lkml.kernel.org/r/20201122030749.2698994-1-hsiangkao@redhat.com
    Signed-off-by: Gao Xiang <hsiangkao@redhat.com>
    Reviewed-by: Nick Terrell <terrelln@fb.com>
    Cc: Yann Collet <yann.collet.73@gmail.com>
    Cc: Miao Xie <miaoxie@huawei.com>
    Cc: Chao Yu <yuchao0@huawei.com>
    Cc: Li Guifu <bluce.liguifu@huawei.com>
    Cc: Guo Xuenan <guoxuenan@huawei.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 97e814e6b5cdc8101127a5140925941b6088aabb
Author: Vitaly Kuznetsov <vkuznets@redhat.com>
Date:   Mon May 31 16:03:47 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 9084fe1b3572664ad276f427dce575f580c9799a
Author: Vitaly Kuznetsov <vkuznets@redhat.com>
Date:   Mon May 31 16:03:46 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 7620a669111b52f224d006dea9e1e688e2d62c54
Author: Vitaly Kuznetsov <vkuznets@redhat.com>
Date:   Mon May 31 16:03:45 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]
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f82030a586a1045d09845a173d19c1d3246aac25
Author: Marc Zyngier <maz@kernel.org>
Date:   Fri May 14 09:05:41 2021 +0100

    KVM: arm64: Fix debug register indexing
    
    commit cb853ded1d25e5b026ce115dbcde69e3d7e2e831 upstream.
    
    Commit 03fdfb2690099 ("KVM: arm64: Don't write junk to sysregs on
    reset") flipped the register number to 0 for all the debug registers
    in the sysreg table, hereby indicating that these registers live
    in a separate shadow structure.
    
    However, the author of this patch failed to realise that all the
    accessors are using that particular index instead of the register
    encoding, resulting in all the registers hitting index 0. Not quite
    a valid implementation of the architecture...
    
    Address the issue by fixing all the accessors to use the CRm field
    of the encoding, which contains the debug register index.
    
    Fixes: 03fdfb2690099 ("KVM: arm64: Don't write junk to sysregs on reset")
    Reported-by: Ricardo Koller <ricarkol@google.com>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2295e87a5e395604d943ea9d78986cff7ddf69e8
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>
    [sudip: manual backport to old file]
    Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0450af01ae7e7df5786833255a50e2502df80a95
Author: Anand Jain <anand.jain@oracle.com>
Date:   Fri Apr 30 19:59:51 2021 +0800

    btrfs: fix unmountable seed device after fstrim
    
    commit 5e753a817b2d5991dfe8a801b7b1e8e79a1c5a20 upstream.
    
    The following test case reproduces an issue of wrongly freeing in-use
    blocks on the readonly seed device when fstrim is called on the rw sprout
    device. As shown below.
    
    Create a seed device and add a sprout device to it:
    
      $ mkfs.btrfs -fq -dsingle -msingle /dev/loop0
      $ btrfstune -S 1 /dev/loop0
      $ mount /dev/loop0 /btrfs
      $ btrfs dev add -f /dev/loop1 /btrfs
      BTRFS info (device loop0): relocating block group 290455552 flags system
      BTRFS info (device loop0): relocating block group 1048576 flags system
      BTRFS info (device loop0): disk added /dev/loop1
      $ umount /btrfs
    
    Mount the sprout device and run fstrim:
    
      $ mount /dev/loop1 /btrfs
      $ fstrim /btrfs
      $ umount /btrfs
    
    Now try to mount the seed device, and it fails:
    
      $ mount /dev/loop0 /btrfs
      mount: /btrfs: wrong fs type, bad option, bad superblock on /dev/loop0, missing codepage or helper program, or other error.
    
    Block 5292032 is missing on the readonly seed device:
    
     $ dmesg -kt | tail
     <snip>
     BTRFS error (device loop0): bad tree block start, want 5292032 have 0
     BTRFS warning (device loop0): couldn't read-tree root
     BTRFS error (device loop0): open_ctree failed
    
    >From the dump-tree of the seed device (taken before the fstrim). Block
    5292032 belonged to the block group starting at 5242880:
    
      $ btrfs inspect dump-tree -e /dev/loop0 | grep -A1 BLOCK_GROUP
      <snip>
      item 3 key (5242880 BLOCK_GROUP_ITEM 8388608) itemoff 16169 itemsize 24
            block group used 114688 chunk_objectid 256 flags METADATA
      <snip>
    
    >From the dump-tree of the sprout device (taken before the fstrim).
    fstrim used block-group 5242880 to find the related free space to free:
    
      $ btrfs inspect dump-tree -e /dev/loop1 | grep -A1 BLOCK_GROUP
      <snip>
      item 1 key (5242880 BLOCK_GROUP_ITEM 8388608) itemoff 16226 itemsize 24
            block group used 32768 chunk_objectid 256 flags METADATA
      <snip>
    
    BPF kernel tracing the fstrim command finds the missing block 5292032
    within the range of the discarded blocks as below:
    
      kprobe:btrfs_discard_extent {
            printf("freeing start %llu end %llu num_bytes %llu:\n",
                    arg1, arg1+arg2, arg2);
      }
    
      freeing start 5259264 end 5406720 num_bytes 147456
      <snip>
    
    Fix this by avoiding the discard command to the readonly seed device.
    
    Reported-by: Chris Murphy <lists@colorremedies.com>
    CC: stable@vger.kernel.org # 4.4+
    Reviewed-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: Anand Jain <anand.jain@oracle.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3b7f3cab1d4736cd9748c89bfeca8a980f587c12
Author: Matthew Wilcox (Oracle) <willy@infradead.org>
Date:   Mon Jun 7 21:08:45 2021 +0100

    mm/filemap: fix storing to a THP shadow entry
    
    commit 198b62f83eef1d605d70eca32759c92cdcc14175 upstream
    
    When a THP is removed from the page cache by reclaim, we replace it with a
    shadow entry that occupies all slots of the XArray previously occupied by
    the THP.  If the user then accesses that page again, we only allocate a
    single page, but storing it into the shadow entry replaces all entries
    with that one page.  That leads to bugs like
    
    page dumped because: VM_BUG_ON_PAGE(page_to_pgoff(page) != offset)
    ------------[ cut here ]------------
    kernel BUG at mm/filemap.c:2529!
    
    https://bugzilla.kernel.org/show_bug.cgi?id=206569
    
    This is hard to reproduce with mainline, but happens regularly with the
    THP patchset (as so many more THPs are created).  This solution is take
    from the THP patchset.  It splits the shadow entry into order-0 pieces at
    the time that we bring a new page into cache.
    
    Fixes: 99cb0dbd47a1 ("mm,thp: add read-only THP support for (non-shmem) FS")
    Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Song Liu <songliubraving@fb.com>
    Cc: "Kirill A . Shutemov" <kirill@shutemov.name>
    Cc: Qian Cai <cai@lca.pw>
    Link: https://lkml.kernel.org/r/20200903183029.14930-4-willy@infradead.org
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0a890e220954848c0430adbea6a6fdb4a681a94f
Author: Matthew Wilcox (Oracle) <willy@infradead.org>
Date:   Mon Jun 7 21:08:44 2021 +0100

    XArray: add xas_split
    
    commit 8fc75643c5e14574c8be59b69182452ece28315a upstream
    
    In order to use multi-index entries for huge pages in the page cache, we
    need to be able to split a multi-index entry (eg if a file is truncated in
    the middle of a huge page entry).  This version does not support splitting
    more than one level of the tree at a time.  This is an acceptable
    limitation for the page cache as we do not expect to support order-12
    pages in the near future.
    
    [akpm@linux-foundation.org: export xas_split_alloc() to modules]
    [willy@infradead.org: fix xarray split]
      Link: https://lkml.kernel.org/r/20200910175450.GV6583@casper.infradead.org
    [willy@infradead.org: fix xarray]
      Link: https://lkml.kernel.org/r/20201001233943.GW20115@casper.infradead.org
    
    Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: "Kirill A . Shutemov" <kirill@shutemov.name>
    Cc: Qian Cai <cai@lca.pw>
    Cc: Song Liu <songliubraving@fb.com>
    Link: https://lkml.kernel.org/r/20200903183029.14930-3-willy@infradead.org
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 03a390d8796d88a335203c223ec93c8b903c3212
Author: Matthew Wilcox (Oracle) <willy@infradead.org>
Date:   Mon Jun 7 21:08:43 2021 +0100

    XArray: add xa_get_order
    
    commit 57417cebc96b57122a2207fc84a6077d20c84b4b upstream
    
    Patch series "Fix read-only THP for non-tmpfs filesystems".
    
    As described more verbosely in the [3/3] changelog, we can inadvertently
    put an order-0 page in the page cache which occupies 512 consecutive
    entries.  Users are running into this if they enable the
    READ_ONLY_THP_FOR_FS config option; see
    https://bugzilla.kernel.org/show_bug.cgi?id=206569 and Qian Cai has also
    reported it here:
    https://lore.kernel.org/lkml/20200616013309.GB815@lca.pw/
    
    This is a rather intrusive way of fixing the problem, but has the
    advantage that I've actually been testing it with the THP patches, which
    means that it sees far more use than it does upstream -- indeed, Song has
    been entirely unable to reproduce it.  It also has the advantage that it
    removes a few patches from my gargantuan backlog of THP patches.
    
    This patch (of 3):
    
    This function returns the order of the entry at the index.  We need this
    because there isn't space in the shadow entry to encode its order.
    
    [akpm@linux-foundation.org: export xa_get_order to modules]
    
    Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: "Kirill A . Shutemov" <kirill@shutemov.name>
    Cc: Qian Cai <cai@lca.pw>
    Cc: Song Liu <songliubraving@fb.com>
    Link: https://lkml.kernel.org/r/20200903183029.14930-1-willy@infradead.org
    Link: https://lkml.kernel.org/r/20200903183029.14930-2-willy@infradead.org
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fd8e06a7a7238fa6040d602d6085f11f246ec11a
Author: Matthew Wilcox (Oracle) <willy@infradead.org>
Date:   Mon Jun 7 21:08:42 2021 +0100

    mm: add thp_order
    
    commit 6ffbb45826f5d9ae09aa60cd88594b7816c96190 upstream
    
    This function returns the order of a transparent huge page.  It compiles
    to 0 if CONFIG_TRANSPARENT_HUGEPAGE is disabled.
    
    Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Reviewed-by: William Kucharski <william.kucharski@oracle.com>
    Reviewed-by: Zi Yan <ziy@nvidia.com>
    Cc: David Hildenbrand <david@redhat.com>
    Cc: Mike Kravetz <mike.kravetz@oracle.com>
    Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
    Link: http://lkml.kernel.org/r/20200629151959.15779-4-willy@infradead.org
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f192885f7cee8edcc5d3c340b2b3a5d93e794413
Author: Michael Chan <michael.chan@broadcom.com>
Date:   Mon Jan 27 04:56:15 2020 -0500

    bnxt_en: Remove the setting of dev_port.
    
    commit 1d86859fdf31a0d50cc82b5d0d6bfb5fe98f6c00 upstream.
    
    The dev_port is meant to distinguish the network ports belonging to
    the same PCI function.  Our devices only have one network port
    associated with each PCI function and so we should not set it for
    correctness.
    
    Signed-off-by: Michael Chan <michael.chan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 14fd3da3e8d3de7f34d69dd4bfa5fd9e73d99911
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 6d4da27bd9efdbdffbaf6aa12617a2b549a3b752
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 dad974d2494a25266c0f52de62e7bd385f7e80da
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 0fd9149a82e309ad3428af1db8b6b207e4e6e10e
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 295859a5554925c1f3f7cb79c221b042ce6a977a
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 12ca65539b04a25c9ef74db87eb019bc61b580e3
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 b0c0d8b5bf94f57e163e3ff1ae9edc2a20a66b30
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 24c06e5452c3f8c4bc337b70245cab2dda17cdbd
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 5d4c4b06ed9fb7a69d0b2e2a73fc73226d25ab70
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 cc2edb99ea606a45182b5ea38cc8f4e583aa0774
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 2cd6eedfa6344f5ef5c3dac3aee57a39b5b46dff
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 fe4e0bd4c26c8d81bd352ef8a5fa1afc4cba06b4
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 920697b004e49cb026e2e15fe91be065bf0741b7
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 52fc8f05c158967dd15bf6b36c0f0e831ab40848
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 2cac47eed45547516103a585f8fd2ef337b4b3f5
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 d349ff008cb399522a14b70dda62ac42bb73d141
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 0afd601d8e0af9bca91390618a85a0bf4857eafc
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 d65bc969ec8bc5e706bcca4221b376b030933e96
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 368c5d45a87e1bcc7f1e98e0c255c37b7b12c5d6
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 142d5ca797a982ab305b9278d2b0de47951258db
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 4d94f530cd24c85aede6e72b8923f371b45d6886
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 f52f4fd67264c70cd0b4ba326962ebe12d9cba94
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 c97cdb70b72d0eb81ad43c8722a78522c4a9b5be
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 64824f626c0c54282a842b5450e1ac1c132e55ab
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 b6f97555c71f78288682bc967121572f10715c89
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 8d3d0ac73a4a1d31e3d4f7c068312aba78470166
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 28efacc21d2a5c4f10abad1631a6c848a209256f
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 9ac67fdf64e0be982fdb4ce4702398abea276246
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 0fa160a7574859192a1328a029c70d05b44a4c75
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 22ea29c39717b453541d44e5354d1094c2eb2345
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 5b97dd983255e0b4c785db18bbc615e9f3a319c5
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 55fa22d1d8b2b998a14b72b796ae214f5fcbb0b6
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 3a559111bd1076b4f7e2c67397cc94d778664180
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 f78c28a0dda177610272ae33bf96fb82d811b05b
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 3616dd03bc43239f3a9726c2c7ad908608b7f414
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 adfd6355fc8bfa891d25110293aa06ae94593a47
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 06f667dba42ec6529198424a88c59ab0138a4a04
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 de37510ec67d76e5aad2d5f21f17367743f0ac91
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 bafd0a7461f0531269e93fc73fb5a61f21fea6b7
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 3583ab29177ccf9a930f938bd739cbfc6445989b
Author: Mitch Williams <mitch.a.williams@intel.com>
Date:   Wed Oct 9 07:09:48 2019 -0700

    ice: write register with correct offset
    
    [ Upstream commit 395594563b29fbcd8d9a4f0a642484e5d3bb6db1 ]
    
    The VF_MBX_ARQLEN register array is per-PF, not global, so we should not
    use the absolute VF ID as an index. Instead, use the per-PF VF ID.
    
    This fixes an issue with VFs on PFs other than 0 not seeing reset.
    
    Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
    Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7ba7fa78a92dc410b6f93ed73075ab669c3a0b59
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 112533f50c7e0f9e54ddccfdb7bff6a41d483fea
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 b5cc02c6986fb637b4869e41912462e6a2092983
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 4ca8aa37cb430a695da1e8c1c9c21ce0a7056f23
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 66f3ab065b70e0b6f487473d8729cbefb75bc258
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 da8d31e80ff425f5a65dab7060d5c4aba749e562
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 14c0381e26397aac3f1875cc517bbf2b8dc68737
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 8e8678936f0db46b0e3267db03e7a2334e2cc9f0
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 385e1861f31b5ab909cfe4daa1e5cc960796ae3b
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 279e2136dd217b961d6f22205fbb4eb3f7e6d975
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 c8a95cb0c02d15f48062867c5575bce99ecc2853
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 087b803a5b497deea7a5e8b529268a5312b70aab
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 60dcad10e2c7fa00f38ca1250597aea48bfdb91b
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 870973918b2aae91070c32deb681b9c0b6c4de76
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 5da371c3fdfb32a2d7e1dfd86a85b8c17a02c3d1
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 a4ed60297770346f759156e7a0103dcc1acb958d
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 bc8f6647a73c314d4b46479099868d0dcf6e24c5
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 2986fdd3211ff40f234834ec3070434c8af05343
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 90870b45fc6204d4a619c3bc0ed45eadab3df4fc
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 0338fa4af9f387f9c200009c546dd418d80a5756
Author: Anant Thazhemadam <anant.thazhemadam@gmail.com>
Date:   Thu Jun 3 09:28:52 2021 -0700

    nl80211: validate key indexes for cfg80211_registered_device
    
    commit 2d9463083ce92636a1bdd3e30d1236e3e95d859e upstream
    
    syzbot discovered a bug in which an OOB access was being made because
    an unsuitable key_idx value was wrongly considered to be acceptable
    while deleting a key in nl80211_del_key().
    
    Since we don't know the cipher at the time of deletion, if
    cfg80211_validate_key_settings() were to be called directly in
    nl80211_del_key(), even valid keys would be wrongly determined invalid,
    and deletion wouldn't occur correctly.
    For this reason, a new function - cfg80211_valid_key_idx(), has been
    created, to determine if the key_idx value provided is valid or not.
    cfg80211_valid_key_idx() is directly called in 2 places -
    nl80211_del_key(), and cfg80211_validate_key_settings().
    
    Reported-by: syzbot+49d4cab497c2142ee170@syzkaller.appspotmail.com
    Tested-by: syzbot+49d4cab497c2142ee170@syzkaller.appspotmail.com
    Suggested-by: Johannes Berg <johannes@sipsolutions.net>
    Signed-off-by: Anant Thazhemadam <anant.thazhemadam@gmail.com>
    Link: https://lore.kernel.org/r/20201204215825.129879-1-anant.thazhemadam@gmail.com
    Cc: stable@vger.kernel.org
    [also disallow IGTK key IDs if no IGTK cipher is supported]
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Zubin Mithra <zsm@chromium.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e9487a4987535b077604c8a0ab194650ffcccbb4
Author: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Date:   Sat Jan 11 15:47:36 2020 -0600

    ALSA: usb: update old-style static const declaration
    
    [ Upstream commit ff40e0d41af19e36b43693fcb9241b4a6795bb44 ]
    
    GCC reports the following warning with W=1
    
    sound/usb/mixer_quirks.c: In function ‘snd_microii_controls_create’:
    sound/usb/mixer_quirks.c:1694:2: warning: ‘static’ is not at beginning
    of declaration [-Wold-style-declaration]
     1694 |  const static usb_mixer_elem_resume_func_t resume_funcs[] = {
          |  ^~~~~
    
    Move static to the beginning of declaration
    
    Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Link: https://lore.kernel.org/r/20200111214736.3002-3-pierre-louis.bossart@linux.intel.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit aaa41b3094ea0a949eac161ad5feaa47a2b9abb2
Author: Grant Grundler <grundler@chromium.org>
Date:   Tue Jan 19 17:12:08 2021 -0800

    net: usb: cdc_ncm: don't spew notifications
    
    [ Upstream commit de658a195ee23ca6aaffe197d1d2ea040beea0a2 ]
    
    RTL8156 sends notifications about every 32ms.
    Only display/log notifications when something changes.
    
    This issue has been reported by others:
            https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1832472
            https://lkml.org/lkml/2020/8/27/1083
    
    ...
    [785962.779840] usb 1-1: new high-speed USB device number 5 using xhci_hcd
    [785962.929944] usb 1-1: New USB device found, idVendor=0bda, idProduct=8156, bcdDevice=30.00
    [785962.929949] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=6
    [785962.929952] usb 1-1: Product: USB 10/100/1G/2.5G LAN
    [785962.929954] usb 1-1: Manufacturer: Realtek
    [785962.929956] usb 1-1: SerialNumber: 000000001
    [785962.991755] usbcore: registered new interface driver cdc_ether
    [785963.017068] cdc_ncm 1-1:2.0: MAC-Address: 00:24:27:88:08:15
    [785963.017072] cdc_ncm 1-1:2.0: setting rx_max = 16384
    [785963.017169] cdc_ncm 1-1:2.0: setting tx_max = 16384
    [785963.017682] cdc_ncm 1-1:2.0 usb0: register 'cdc_ncm' at usb-0000:00:14.0-1, CDC NCM, 00:24:27:88:08:15
    [785963.019211] usbcore: registered new interface driver cdc_ncm
    [785963.023856] usbcore: registered new interface driver cdc_wdm
    [785963.025461] usbcore: registered new interface driver cdc_mbim
    [785963.038824] cdc_ncm 1-1:2.0 enx002427880815: renamed from usb0
    [785963.089586] cdc_ncm 1-1:2.0 enx002427880815: network connection: disconnected
    [785963.121673] cdc_ncm 1-1:2.0 enx002427880815: network connection: disconnected
    [785963.153682] cdc_ncm 1-1:2.0 enx002427880815: network connection: disconnected
    ...
    
    This is about 2KB per second and will overwrite all contents of a 1MB
    dmesg buffer in under 10 minutes rendering them useless for debugging
    many kernel problems.
    
    This is also an extra 180 MB/day in /var/logs (or 1GB per week) rendering
    the majority of those logs useless too.
    
    When the link is up (expected state), spew amount is >2x higher:
    ...
    [786139.600992] cdc_ncm 2-1:2.0 enx002427880815: network connection: connected
    [786139.632997] cdc_ncm 2-1:2.0 enx002427880815: 2500 mbit/s downlink 2500 mbit/s uplink
    [786139.665097] cdc_ncm 2-1:2.0 enx002427880815: network connection: connected
    [786139.697100] cdc_ncm 2-1:2.0 enx002427880815: 2500 mbit/s downlink 2500 mbit/s uplink
    [786139.729094] cdc_ncm 2-1:2.0 enx002427880815: network connection: connected
    [786139.761108] cdc_ncm 2-1:2.0 enx002427880815: 2500 mbit/s downlink 2500 mbit/s uplink
    ...
    
    Chrome OS cannot support RTL8156 until this is fixed.
    
    Signed-off-by: Grant Grundler <grundler@chromium.org>
    Reviewed-by: Hayes Wang <hayeswang@realtek.com>
    Link: https://lore.kernel.org/r/20210120011208.3768105-1-grundler@chromium.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 96a40c3fa3d3bd1b3a75263e4d27dafda759518a
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Fri Jun 4 17:53:04 2021 +0200

    btrfs: tree-checker: do not error out if extent ref hash doesn't match
    
    commit 1119a72e223f3073a604f8fccb3a470ccd8a4416 upstream.
    
    The tree checker checks the extent ref hash at read and write time to
    make sure we do not corrupt the file system.  Generally extent
    references go inline, but if we have enough of them we need to make an
    item, which looks like
    
    key.objectid    = <bytenr>
    key.type        = <BTRFS_EXTENT_DATA_REF_KEY|BTRFS_TREE_BLOCK_REF_KEY>
    key.offset      = hash(tree, owner, offset)
    
    However if key.offset collide with an unrelated extent reference we'll
    simply key.offset++ until we get something that doesn't collide.
    Obviously this doesn't match at tree checker time, and thus we error
    while writing out the transaction.  This is relatively easy to
    reproduce, simply do something like the following
    
      xfs_io -f -c "pwrite 0 1M" file
      offset=2
    
      for i in {0..10000}
      do
              xfs_io -c "reflink file 0 ${offset}M 1M" file
              offset=$(( offset + 2 ))
      done
    
      xfs_io -c "reflink file 0 17999258914816 1M" file
      xfs_io -c "reflink file 0 35998517829632 1M" file
      xfs_io -c "reflink file 0 53752752058368 1M" file
    
      btrfs filesystem sync
    
    And the sync will error out because we'll abort the transaction.  The
    magic values above are used because they generate hash collisions with
    the first file in the main subvol.
    
    The fix for this is to remove the hash value check from tree checker, as
    we have no idea which offset ours should belong to.
    
    Reported-by: Tuomas Lähdekorpi <tuomas.lahdekorpi@gmail.com>
    Fixes: 0785a9aacf9d ("btrfs: tree-checker: Add EXTENT_DATA_REF check")
    CC: stable@vger.kernel.org # 5.4+
    Reviewed-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    [ add comment]
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>