commit 253dccefb5cb05c8a017150c34daf810776d914c
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Jul 28 13:31:02 2021 +0200

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

commit 587f86b7a2a09282d10b751cc98342e94b9b21d6
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Fri Jan 29 15:00:22 2021 +0200

    xhci: add xhci_get_virt_ep() helper
    
    [commit b1adc42d440df3233255e313a45ab7e9b2b74096 upstream]
    
    In several event handlers we need to find the right endpoint
    structure from slot_id and ep_index in the event.
    
    Add a helper for this, check that slot_id and ep_index are valid.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20210129130044.206855-6-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Carsten Schmid <carsten_schmid@mentor.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f9d0c35556cd0c9b7a3ae5c9ff61f9481da7c8d4
Author: Riccardo Mancini <rickyman7@gmail.com>
Date:   Thu Jul 15 18:07:15 2021 +0200

    perf inject: Close inject.output on exit
    
    commit 02e6246f5364d5260a6ea6f92ab6f409058b162f upstream.
    
    ASan reports a memory leak when running:
    
      # perf test "83: Zstd perf.data compression/decompression"
    
    which happens inside 'perf inject'.
    
    The bug is caused by inject.output never being closed.
    
    This patch adds the missing perf_data__close().
    
    Signed-off-by: Riccardo Mancini <rickyman7@gmail.com>
    Fixes: 6ef81c55a2b6584c ("perf session: Return error code for perf_session__new() function on failure")
    Cc: Ian Rogers <irogers@google.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Mamatha Inamdar <mamatha4@linux.vnet.ibm.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lore.kernel.org/lkml/c06f682afa964687367cf6e92a64ceb49aec76a5.1626343282.git.rickyman7@gmail.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a9c103fa91e4be250769e7c974ab444deeafdbe5
Author: Evan Quan <evan.quan@amd.com>
Date:   Wed Jun 2 10:12:55 2021 +0800

    PCI: Mark AMD Navi14 GPU ATS as broken
    
    commit e8946a53e2a698c148b3b3ed732f43c7747fbeb6 upstream
    
    Observed unexpected GPU hang during runpm stress test on 0x7341 rev 0x00.
    Further debugging shows broken ATS is related.
    
    Disable ATS on this part.  Similar issues on other devices:
    
      a2da5d8cc0b0 ("PCI: Mark AMD Raven iGPU ATS as broken in some platforms")
      45beb31d3afb ("PCI: Mark AMD Navi10 GPU rev 0x00 ATS as broken")
      5e89cd303e3a ("PCI: Mark AMD Navi14 GPU rev 0xc5 ATS as broken")
    
    Suggested-by: Alex Deucher <alexander.deucher@amd.com>
    Link: https://lore.kernel.org/r/20210602021255.939090-1-evan.quan@amd.com
    Signed-off-by: Evan Quan <evan.quan@amd.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Krzysztof Wilczyński <kw@linux.com>
    Cc: stable@vger.kernel.org
    [sudip: adjust context]
    Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 11561d2f7b9dc943035ddbffa6840c0e7d34b935
Author: David Sterba <dsterba@suse.com>
Date:   Mon Jun 14 12:45:18 2021 +0200

    btrfs: compression: don't try to compress if we don't have enough pages
    
    commit f2165627319ffd33a6217275e5690b1ab5c45763 upstream
    
    The early check if we should attempt compression does not take into
    account the number of input pages. It can happen that there's only one
    page, eg. a tail page after some ranges of the BTRFS_MAX_UNCOMPRESSED
    have been processed, or an isolated page that won't be converted to an
    inline extent.
    
    The single page would be compressed but a later check would drop it
    again because the result size must be at least one block shorter than
    the input. That can never work with just one page.
    
    CC: stable@vger.kernel.org # 4.4+
    Signed-off-by: David Sterba <dsterba@suse.com>
    [sudip: adjust context]
    Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4980301e1c1fe69176d90254f92451f8f27fe8f5
Author: Stephan Gerhold <stephan@gerhold.net>
Date:   Wed May 26 11:44:07 2021 +0200

    iio: accel: bma180: Fix BMA25x bandwidth register values
    
    commit 8090d67421ddab0ae932abab5a60200598bf0bbb upstream
    
    According to the BMA253 datasheet [1] and BMA250 datasheet [2] the
    bandwidth value for BMA25x should be set as 01xxx:
    
      "Settings 00xxx result in a bandwidth of 7.81 Hz; [...]
       It is recommended [...] to use the range from ´01000b´ to ´01111b´
       only in order to be compatible with future products."
    
    However, at the moment the drivers sets bandwidth values from 0 to 6,
    which is not recommended and always results into 7.81 Hz bandwidth
    according to the datasheet.
    
    Fix this by introducing a bw_offset = 8 = 01000b for BMA25x,
    so the additional bit is always set for BMA25x.
    
    [1]: https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bma253-ds000.pdf
    [2]: https://datasheet.octopart.com/BMA250-Bosch-datasheet-15540103.pdf
    
    Cc: Peter Meerwald <pmeerw@pmeerw.net>
    Fixes: 2017cff24cc0 ("iio:bma180: Add BMA250 chip support")
    Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Link: https://lore.kernel.org/r/20210526094408.34298-2-stephan@gerhold.net
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    [sudip: adjust context]
    Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d04f2582c47e48ac796e6a7f686e712144df2b81
Author: Linus Walleij <linus.walleij@linaro.org>
Date:   Wed Dec 11 22:38:18 2019 +0100

    iio: accel: bma180: Use explicit member assignment
    
    commit 9436abc40139503a7cea22a96437697d048f31c0 upstream
    
    This uses the C99 explicit .member assignment for the
    variant data in struct bma180_part_info. This makes it
    easier to understand and add new variants.
    
    Cc: Peter Meerwald <pmeerw@pmeerw.net>
    Cc: Oleksandr Kravchenko <o.v.kravchenko@globallogic.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4e0afa88954b32a10957ca4e61882c3acdfb212c
Author: Doug Berger <opendmb@gmail.com>
Date:   Tue Jun 29 17:14:19 2021 -0700

    net: bcmgenet: ensure EXT_ENERGY_DET_MASK is clear
    
    commit 5a3c680aa2c12c90c44af383fe6882a39875ab81 upstream.
    
    Setting the EXT_ENERGY_DET_MASK bit allows the port energy detection
    logic of the internal PHY to prevent the system from sleeping. Some
    internal PHYs will report that energy is detected when the network
    interface is closed which can prevent the system from going to sleep
    if WoL is enabled when the interface is brought down.
    
    Since the driver does not support waking the system on this logic,
    this commit clears the bit whenever the internal PHY is powered up
    and the other logic for manipulating the bit is removed since it
    serves no useful function.
    
    Fixes: 1c1008c793fa ("net: bcmgenet: add main driver file")
    Signed-off-by: Doug Berger <opendmb@gmail.com>
    Acked-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2a4865d1547ee76bcac2ea93eb6d64527b2ac4ad
Author: Marek Behún <kabel@kernel.org>
Date:   Thu Jul 1 00:22:27 2021 +0200

    net: dsa: mv88e6xxx: use correct .stats_set_histogram() on Topaz
    
    commit 11527f3c4725640e6c40a2b7654e303f45e82a6c upstream.
    
    Commit 40cff8fca9e3 ("net: dsa: mv88e6xxx: Fix stats histogram mode")
    introduced wrong .stats_set_histogram() method for Topaz family.
    
    The Peridot method should be used instead.
    
    Signed-off-by: Marek Behún <kabel@kernel.org>
    Fixes: 40cff8fca9e3 ("net: dsa: mv88e6xxx: Fix stats histogram mode")
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7d8c06b8d2d24f95743366cbc3bdae92d1184941
Author: Charles Baylis <cb-kernel@fishzet.co.uk>
Date:   Fri Jul 16 17:43:12 2021 +0100

    drm: Return -ENOTTY for non-drm ioctls
    
    commit 3abab27c322e0f2acf981595aa8040c9164dc9fb upstream.
    
    drm: Return -ENOTTY for non-drm ioctls
    
    Return -ENOTTY from drm_ioctl() when userspace passes in a cmd number
    which doesn't relate to the drm subsystem.
    
    Glibc uses the TCGETS ioctl to implement isatty(), and without this
    change isatty() returns it incorrectly returns true for drm devices.
    
    To test run this command:
    $ if [ -t 0 ]; then echo is a tty; fi < /dev/dri/card0
    which shows "is a tty" without this patch.
    
    This may also modify memory which the userspace application is not
    expecting.
    
    Signed-off-by: Charles Baylis <cb-kernel@fishzet.co.uk>
    Cc: stable@vger.kernel.org
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: https://patchwork.freedesktop.org/patch/msgid/YPG3IBlzaMhfPqCr@stando.fishzet.co.uk
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b5d7bebd96a3d002bb14a96af88802c876ef0790
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Tue Jun 29 12:40:24 2021 +0200

    nds32: fix up stack guard gap
    
    commit c453db6cd96418c79702eaf38259002755ab23ff upstream.
    
    Commit 1be7107fbe18 ("mm: larger stack guard gap, between vmas") fixed
    up all architectures to deal with the stack guard gap.  But when nds32
    was added to the tree, it forgot to do the same thing.
    
    Resolve this by properly fixing up the nsd32's version of
    arch_get_unmapped_area()
    
    Cc: Nick Hu <nickhu@andestech.com>
    Cc: Greentime Hu <green.hu@gmail.com>
    Cc: Vincent Chen <deanbo422@gmail.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Qiang Liu <cyruscyliu@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Reported-by: iLifetruth <yixiaonn@gmail.com>
    Acked-by: Hugh Dickins <hughd@google.com>
    Link: https://lore.kernel.org/r/20210629104024.2293615-1-gregkh@linuxfoundation.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ba378b796088f5660050d2f2d1e0dcf555a080e6
Author: Ilya Dryomov <idryomov@gmail.com>
Date:   Sat Jul 3 11:56:55 2021 +0200

    rbd: always kick acquire on "acquired" and "released" notifications
    
    commit 8798d070d416d18a75770fc19787e96705073f43 upstream.
    
    Skipping the "lock has been released" notification if the lock owner
    is not what we expect based on owner_cid can lead to I/O hangs.
    One example is our own notifications: because owner_cid is cleared
    in rbd_unlock(), when we get our own notification it is processed as
    unexpected/duplicate and maybe_kick_acquire() isn't called.  If a peer
    that requested the lock then doesn't go through with acquiring it,
    I/O requests that came in while the lock was being quiesced would
    be stalled until another I/O request is submitted and kicks acquire
    from rbd_img_exclusive_lock().
    
    This makes the comment in rbd_release_lock() actually true: prior to
    this change the canceled work was being requeued in response to the
    "lock has been acquired" notification from rbd_handle_acquired_lock().
    
    Cc: stable@vger.kernel.org # 5.3+
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Tested-by: Robin Geuze <robin.geuze@nl.team.blue>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 13066d6628f04194fea7c2b6a497ebc9d1d0df5f
Author: Ilya Dryomov <idryomov@gmail.com>
Date:   Sat Jul 3 11:31:26 2021 +0200

    rbd: don't hold lock_rwsem while running_list is being drained
    
    commit ed9eb71085ecb7ded9a5118cec2ab70667cc7350 upstream.
    
    Currently rbd_quiesce_lock() holds lock_rwsem for read while blocking
    on releasing_wait completion.  On the I/O completion side, each image
    request also needs to take lock_rwsem for read.  Because rw_semaphore
    implementation doesn't allow new readers after a writer has indicated
    interest in the lock, this can result in a deadlock if something that
    needs to take lock_rwsem for write gets involved.  For example:
    
    1. watch error occurs
    2. rbd_watch_errcb() takes lock_rwsem for write, clears owner_cid and
       releases lock_rwsem
    3. after reestablishing the watch, rbd_reregister_watch() takes
       lock_rwsem for write and calls rbd_reacquire_lock()
    4. rbd_quiesce_lock() downgrades lock_rwsem to for read and blocks on
       releasing_wait until running_list becomes empty
    5. another watch error occurs
    6. rbd_watch_errcb() blocks trying to take lock_rwsem for write
    7. no in-flight image request can complete and delete itself from
       running_list because lock_rwsem won't be granted anymore
    
    A similar scenario can occur with "lock has been acquired" and "lock
    has been released" notification handers which also take lock_rwsem for
    write to update owner_cid.
    
    We don't actually get anything useful from sitting on lock_rwsem in
    rbd_quiesce_lock() -- owner_cid updates certainly don't need to be
    synchronized with.  In fact the whole owner_cid tracking logic could
    probably be removed from the kernel client because we don't support
    proxied maintenance operations.
    
    Cc: stable@vger.kernel.org # 5.3+
    URL: https://tracker.ceph.com/issues/42757
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Tested-by: Robin Geuze <robin.geuze@nl.team.blue>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b12ead825f6c7cf0cdf2545be272c2fa385182db
Author: Mike Kravetz <mike.kravetz@oracle.com>
Date:   Fri Jul 23 15:50:44 2021 -0700

    hugetlbfs: fix mount mode command line processing
    
    commit e0f7e2b2f7e7864238a4eea05cc77ae1be2bf784 upstream.
    
    In commit 32021982a324 ("hugetlbfs: Convert to fs_context") processing
    of the mount mode string was changed from match_octal() to fsparam_u32.
    
    This changed existing behavior as match_octal does not require octal
    values to have a '0' prefix, but fsparam_u32 does.
    
    Use fsparam_u32oct which provides the same behavior as match_octal.
    
    Link: https://lkml.kernel.org/r/20210721183326.102716-1-mike.kravetz@oracle.com
    Fixes: 32021982a324 ("hugetlbfs: Convert to fs_context")
    Signed-off-by: Mike Kravetz <mike.kravetz@oracle.com>
    Reported-by: Dennis Camera <bugs+kernel.org@dtnr.ch>
    Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org>
    Cc: David Howells <dhowells@redhat.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    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 60dbbd76f11000d5f9515578308b6bb4ce7ad41f
Author: Peter Collingbourne <pcc@google.com>
Date:   Fri Jul 23 15:50:01 2021 -0700

    userfaultfd: do not untag user pointers
    
    commit e71e2ace5721a8b921dca18b045069e7bb411277 upstream.
    
    Patch series "userfaultfd: do not untag user pointers", v5.
    
    If a user program uses userfaultfd on ranges of heap memory, it may end
    up passing a tagged pointer to the kernel in the range.start field of
    the UFFDIO_REGISTER ioctl.  This can happen when using an MTE-capable
    allocator, or on Android if using the Tagged Pointers feature for MTE
    readiness [1].
    
    When a fault subsequently occurs, the tag is stripped from the fault
    address returned to the application in the fault.address field of struct
    uffd_msg.  However, from the application's perspective, the tagged
    address *is* the memory address, so if the application is unaware of
    memory tags, it may get confused by receiving an address that is, from
    its point of view, outside of the bounds of the allocation.  We observed
    this behavior in the kselftest for userfaultfd [2] but other
    applications could have the same problem.
    
    Address this by not untagging pointers passed to the userfaultfd ioctls.
    Instead, let the system call fail.  Also change the kselftest to use
    mmap so that it doesn't encounter this problem.
    
    [1] https://source.android.com/devices/tech/debug/tagged-pointers
    [2] tools/testing/selftests/vm/userfaultfd.c
    
    This patch (of 2):
    
    Do not untag pointers passed to the userfaultfd ioctls.  Instead, let
    the system call fail.  This will provide an early indication of problems
    with tag-unaware userspace code instead of letting the code get confused
    later, and is consistent with how we decided to handle brk/mmap/mremap
    in commit dcde237319e6 ("mm: Avoid creating virtual address aliases in
    brk()/mmap()/mremap()"), as well as being consistent with the existing
    tagged address ABI documentation relating to how ioctl arguments are
    handled.
    
    The code change is a revert of commit 7d0325749a6c ("userfaultfd: untag
    user pointers") plus some fixups to some additional calls to
    validate_range that have appeared since then.
    
    [1] https://source.android.com/devices/tech/debug/tagged-pointers
    [2] tools/testing/selftests/vm/userfaultfd.c
    
    Link: https://lkml.kernel.org/r/20210714195437.118982-1-pcc@google.com
    Link: https://lkml.kernel.org/r/20210714195437.118982-2-pcc@google.com
    Link: https://linux-review.googlesource.com/id/I761aa9f0344454c482b83fcfcce547db0a25501b
    Fixes: 63f0c6037965 ("arm64: Introduce prctl() options to control the tagged user addresses ABI")
    Signed-off-by: Peter Collingbourne <pcc@google.com>
    Reviewed-by: Andrey Konovalov <andreyknvl@gmail.com>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Alistair Delva <adelva@google.com>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Dave Martin <Dave.Martin@arm.com>
    Cc: Evgenii Stepanov <eugenis@google.com>
    Cc: Lokesh Gidra <lokeshgidra@google.com>
    Cc: Mitch Phillips <mitchp@google.com>
    Cc: Vincenzo Frascino <vincenzo.frascino@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Cc: William McVicker <willmcvicker@google.com>
    Cc: <stable@vger.kernel.org>    [5.4]
    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 540eee8cbb3d281b0b3789a7ca7b862adce3373c
Author: Peter Collingbourne <pcc@google.com>
Date:   Fri Jul 23 15:50:04 2021 -0700

    selftest: use mmap instead of posix_memalign to allocate memory
    
    commit 0db282ba2c12c1515d490d14a1ff696643ab0f1b upstream.
    
    This test passes pointers obtained from anon_allocate_area to the
    userfaultfd and mremap APIs.  This causes a problem if the system
    allocator returns tagged pointers because with the tagged address ABI
    the kernel rejects tagged addresses passed to these APIs, which would
    end up causing the test to fail.  To make this test compatible with such
    system allocators, stop using the system allocator to allocate memory in
    anon_allocate_area, and instead just use mmap.
    
    Link: https://lkml.kernel.org/r/20210714195437.118982-3-pcc@google.com
    Link: https://linux-review.googlesource.com/id/Icac91064fcd923f77a83e8e133f8631c5b8fc241
    Fixes: c47174fc362a ("userfaultfd: selftest")
    Co-developed-by: Lokesh Gidra <lokeshgidra@google.com>
    Signed-off-by: Lokesh Gidra <lokeshgidra@google.com>
    Signed-off-by: Peter Collingbourne <pcc@google.com>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Vincenzo Frascino <vincenzo.frascino@arm.com>
    Cc: Dave Martin <Dave.Martin@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Alistair Delva <adelva@google.com>
    Cc: William McVicker <willmcvicker@google.com>
    Cc: Evgenii Stepanov <eugenis@google.com>
    Cc: Mitch Phillips <mitchp@google.com>
    Cc: Andrey Konovalov <andreyknvl@gmail.com>
    Cc: <stable@vger.kernel.org>    [5.4]
    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 e706ac3fc82ee02064cb155be6b0a5b1471b8223
Author: Markus Boehme <markubo@amazon.com>
Date:   Tue Jul 20 16:26:19 2021 -0700

    ixgbe: Fix packet corruption due to missing DMA sync
    
    commit 09cfae9f13d51700b0fecf591dcd658fc5375428 upstream.
    
    When receiving a packet with multiple fragments, hardware may still
    touch the first fragment until the entire packet has been received. The
    driver therefore keeps the first fragment mapped for DMA until end of
    packet has been asserted, and delays its dma_sync call until then.
    
    The driver tries to fit multiple receive buffers on one page. When using
    3K receive buffers (e.g. using Jumbo frames and legacy-rx is turned
    off/build_skb is being used) on an architecture with 4K pages, the
    driver allocates an order 1 compound page and uses one page per receive
    buffer. To determine the correct offset for a delayed DMA sync of the
    first fragment of a multi-fragment packet, the driver then cannot just
    use PAGE_MASK on the DMA address but has to construct a mask based on
    the actual size of the backing page.
    
    Using PAGE_MASK in the 3K RX buffer/4K page architecture configuration
    will always sync the first page of a compound page. With the SWIOTLB
    enabled this can lead to corrupted packets (zeroed out first fragment,
    re-used garbage from another packet) and various consequences, such as
    slow/stalling data transfers and connection resets. For example, testing
    on a link with MTU exceeding 3058 bytes on a host with SWIOTLB enabled
    (e.g. "iommu=soft swiotlb=262144,force") TCP transfers quickly fizzle
    out without this patch.
    
    Cc: stable@vger.kernel.org
    Fixes: 0c5661ecc5dd7 ("ixgbe: fix crash in build_skb Rx code path")
    Signed-off-by: Markus Boehme <markubo@amazon.com>
    Tested-by: Tony Brelinski <tonyx.brelinski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e617fa62f6cf859a7b042cdd6c73af905ff8fca3
Author: Gustavo A. R. Silva <gustavoars@kernel.org>
Date:   Mon Apr 19 18:43:32 2021 -0500

    media: ngene: Fix out-of-bounds bug in ngene_command_config_free_buf()
    
    commit 8d4abca95ecc82fc8c41912fa0085281f19cc29f upstream.
    
    Fix an 11-year old bug in ngene_command_config_free_buf() while
    addressing the following warnings caught with -Warray-bounds:
    
    arch/alpha/include/asm/string.h:22:16: warning: '__builtin_memcpy' offset [12, 16] from the object at 'com' is out of the bounds of referenced subobject 'config' with type 'unsigned char' at offset 10 [-Warray-bounds]
    arch/x86/include/asm/string_32.h:182:25: warning: '__builtin_memcpy' offset [12, 16] from the object at 'com' is out of the bounds of referenced subobject 'config' with type 'unsigned char' at offset 10 [-Warray-bounds]
    
    The problem is that the original code is trying to copy 6 bytes of
    data into a one-byte size member _config_ of the wrong structue
    FW_CONFIGURE_BUFFERS, in a single call to memcpy(). This causes a
    legitimate compiler warning because memcpy() overruns the length
    of &com.cmd.ConfigureBuffers.config. It seems that the right
    structure is FW_CONFIGURE_FREE_BUFFERS, instead, because it contains
    6 more members apart from the header _hdr_. Also, the name of
    the function ngene_command_config_free_buf() suggests that the actual
    intention is to ConfigureFreeBuffers, instead of ConfigureBuffers
    (which takes place in the function ngene_command_config_buf(), above).
    
    Fix this by enclosing those 6 members of struct FW_CONFIGURE_FREE_BUFFERS
    into new struct config, and use &com.cmd.ConfigureFreeBuffers.config as
    the destination address, instead of &com.cmd.ConfigureBuffers.config,
    when calling memcpy().
    
    This also helps with the ongoing efforts to globally enable
    -Warray-bounds and get us closer to being able to tighten the
    FORTIFY_SOURCE routines on memcpy().
    
    Link: https://github.com/KSPP/linux/issues/109
    Fixes: dae52d009fc9 ("V4L/DVB: ngene: Initial check-in")
    Cc: stable@vger.kernel.org
    Reported-by: kernel test robot <lkp@intel.com>
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
    Link: https://lore.kernel.org/linux-hardening/20210420001631.GA45456@embeddedor/
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 77713fb336ca9d8bf3bed4211fc28a9fee76c376
Author: Anand Jain <anand.jain@oracle.com>
Date:   Sun Jul 4 19:14:39 2021 +0800

    btrfs: check for missing device in btrfs_trim_fs
    
    commit 16a200f66ede3f9afa2e51d90ade017aaa18d213 upstream.
    
    A fstrim on a degraded raid1 can trigger the following null pointer
    dereference:
    
      BTRFS info (device loop0): allowing degraded mounts
      BTRFS info (device loop0): disk space caching is enabled
      BTRFS info (device loop0): has skinny extents
      BTRFS warning (device loop0): devid 2 uuid 97ac16f7-e14d-4db1-95bc-3d489b424adb is missing
      BTRFS warning (device loop0): devid 2 uuid 97ac16f7-e14d-4db1-95bc-3d489b424adb is missing
      BTRFS info (device loop0): enabling ssd optimizations
      BUG: kernel NULL pointer dereference, address: 0000000000000620
      PGD 0 P4D 0
      Oops: 0000 [#1] SMP NOPTI
      CPU: 0 PID: 4574 Comm: fstrim Not tainted 5.13.0-rc7+ #31
      Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
      RIP: 0010:btrfs_trim_fs+0x199/0x4a0 [btrfs]
      RSP: 0018:ffff959541797d28 EFLAGS: 00010293
      RAX: 0000000000000000 RBX: ffff946f84eca508 RCX: a7a67937adff8608
      RDX: ffff946e8122d000 RSI: 0000000000000000 RDI: ffffffffc02fdbf0
      RBP: ffff946ea4615000 R08: 0000000000000001 R09: 0000000000000000
      R10: 0000000000000000 R11: ffff946e8122d960 R12: 0000000000000000
      R13: ffff959541797db8 R14: ffff946e8122d000 R15: ffff959541797db8
      FS:  00007f55917a5080(0000) GS:ffff946f9bc00000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 0000000000000620 CR3: 000000002d2c8001 CR4: 00000000000706f0
      Call Trace:
      btrfs_ioctl_fitrim+0x167/0x260 [btrfs]
      btrfs_ioctl+0x1c00/0x2fe0 [btrfs]
      ? selinux_file_ioctl+0x140/0x240
      ? syscall_trace_enter.constprop.0+0x188/0x240
      ? __x64_sys_ioctl+0x83/0xb0
      __x64_sys_ioctl+0x83/0xb0
    
    Reproducer:
    
      $ mkfs.btrfs -fq -d raid1 -m raid1 /dev/loop0 /dev/loop1
      $ mount /dev/loop0 /btrfs
      $ umount /btrfs
      $ btrfs dev scan --forget
      $ mount -o degraded /dev/loop0 /btrfs
    
      $ fstrim /btrfs
    
    The reason is we call btrfs_trim_free_extents() for the missing device,
    which uses device->bdev (NULL for missing device) to find if the device
    supports discard.
    
    Fix is to check if the device is missing before calling
    btrfs_trim_free_extents().
    
    CC: stable@vger.kernel.org # 5.4+
    Reviewed-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: Anand Jain <anand.jain@oracle.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 f899f24d34d964593b16122a774c192a78e2ca56
Author: Haoran Luo <www@aegistudio.net>
Date:   Wed Jul 21 14:12:07 2021 +0000

    tracing: Fix bug in rb_per_cpu_empty() that might cause deadloop.
    
    commit 67f0d6d9883c13174669f88adac4f0ee656cc16a upstream.
    
    The "rb_per_cpu_empty()" misinterpret the condition (as not-empty) when
    "head_page" and "commit_page" of "struct ring_buffer_per_cpu" points to
    the same buffer page, whose "buffer_data_page" is empty and "read" field
    is non-zero.
    
    An error scenario could be constructed as followed (kernel perspective):
    
    1. All pages in the buffer has been accessed by reader(s) so that all of
    them will have non-zero "read" field.
    
    2. Read and clear all buffer pages so that "rb_num_of_entries()" will
    return 0 rendering there's no more data to read. It is also required
    that the "read_page", "commit_page" and "tail_page" points to the same
    page, while "head_page" is the next page of them.
    
    3. Invoke "ring_buffer_lock_reserve()" with large enough "length"
    so that it shot pass the end of current tail buffer page. Now the
    "head_page", "commit_page" and "tail_page" points to the same page.
    
    4. Discard current event with "ring_buffer_discard_commit()", so that
    "head_page", "commit_page" and "tail_page" points to a page whose buffer
    data page is now empty.
    
    When the error scenario has been constructed, "tracing_read_pipe" will
    be trapped inside a deadloop: "trace_empty()" returns 0 since
    "rb_per_cpu_empty()" returns 0 when it hits the CPU containing such
    constructed ring buffer. Then "trace_find_next_entry_inc()" always
    return NULL since "rb_num_of_entries()" reports there's no more entry
    to read. Finally "trace_seq_to_user()" returns "-EBUSY" spanking
    "tracing_read_pipe" back to the start of the "waitagain" loop.
    
    I've also written a proof-of-concept script to construct the scenario
    and trigger the bug automatically, you can use it to trace and validate
    my reasoning above:
    
      https://github.com/aegistudio/RingBufferDetonator.git
    
    Tests has been carried out on linux kernel 5.14-rc2
    (2734d6c1b1a089fb593ef6a23d4b70903526fe0c), my fixed version
    of kernel (for testing whether my update fixes the bug) and
    some older kernels (for range of affected kernels). Test result is
    also attached to the proof-of-concept repository.
    
    Link: https://lore.kernel.org/linux-trace-devel/YPaNxsIlb2yjSi5Y@aegistudio/
    Link: https://lore.kernel.org/linux-trace-devel/YPgrN85WL9VyrZ55@aegistudio
    
    Cc: stable@vger.kernel.org
    Fixes: bf41a158cacba ("ring-buffer: make reentrant")
    Suggested-by: Linus Torvalds <torvalds@linuxfoundation.org>
    Signed-off-by: Haoran Luo <www@aegistudio.net>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 59a9f75fb2b60a94281b17c8280681d0aa1feafc
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Wed Jul 21 11:00:53 2021 -0400

    tracing/histogram: Rename "cpu" to "common_cpu"
    
    commit 1e3bac71c5053c99d438771fc9fa5082ae5d90aa upstream.
    
    Currently the histogram logic allows the user to write "cpu" in as an
    event field, and it will record the CPU that the event happened on.
    
    The problem with this is that there's a lot of events that have "cpu"
    as a real field, and using "cpu" as the CPU it ran on, makes it
    impossible to run histograms on the "cpu" field of events.
    
    For example, if I want to have a histogram on the count of the
    workqueue_queue_work event on its cpu field, running:
    
     ># echo 'hist:keys=cpu' > events/workqueue/workqueue_queue_work/trigger
    
    Gives a misleading and wrong result.
    
    Change the command to "common_cpu" as no event should have "common_*"
    fields as that's a reserved name for fields used by all events. And
    this makes sense here as common_cpu would be a field used by all events.
    
    Now we can even do:
    
     ># echo 'hist:keys=common_cpu,cpu if cpu < 100' > events/workqueue/workqueue_queue_work/trigger
     ># cat events/workqueue/workqueue_queue_work/hist
     # event histogram
     #
     # trigger info: hist:keys=common_cpu,cpu:vals=hitcount:sort=hitcount:size=2048 if cpu < 100 [active]
     #
    
     { common_cpu:          0, cpu:          2 } hitcount:          1
     { common_cpu:          0, cpu:          4 } hitcount:          1
     { common_cpu:          7, cpu:          7 } hitcount:          1
     { common_cpu:          0, cpu:          7 } hitcount:          1
     { common_cpu:          0, cpu:          1 } hitcount:          1
     { common_cpu:          0, cpu:          6 } hitcount:          2
     { common_cpu:          0, cpu:          5 } hitcount:          2
     { common_cpu:          1, cpu:          1 } hitcount:          4
     { common_cpu:          6, cpu:          6 } hitcount:          4
     { common_cpu:          5, cpu:          5 } hitcount:         14
     { common_cpu:          4, cpu:          4 } hitcount:         26
     { common_cpu:          0, cpu:          0 } hitcount:         39
     { common_cpu:          2, cpu:          2 } hitcount:        184
    
    Now for backward compatibility, I added a trick. If "cpu" is used, and
    the field is not found, it will fall back to "common_cpu" and work as
    it did before. This way, it will still work for old programs that use
    "cpu" to get the actual CPU, but if the event has a "cpu" as a field, it
    will get that event's "cpu" field, which is probably what it wants
    anyway.
    
    I updated the tracefs/README to include documentation about both the
    common_timestamp and the common_cpu. This way, if that text is present in
    the README, then an application can know that common_cpu is supported over
    just plain "cpu".
    
    Link: https://lkml.kernel.org/r/20210721110053.26b4f641@oasis.local.home
    
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: stable@vger.kernel.org
    Fixes: 8b7622bf94a44 ("tracing: Add cpu field for hist triggers")
    Reviewed-by: Tom Zanussi <zanussi@kernel.org>
    Reviewed-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 379d8da3353e18da7cb077e4ae7b52432decffcd
Author: Marc Zyngier <maz@kernel.org>
Date:   Tue Jul 13 19:43:26 2021 +0100

    firmware/efi: Tell memblock about EFI iomem reservations
    
    commit 2bab693a608bdf614b9fcd44083c5100f34b9f77 upstream.
    
    kexec_load_file() relies on the memblock infrastructure to avoid
    stamping over regions of memory that are essential to the survival
    of the system.
    
    However, nobody seems to agree how to flag these regions as reserved,
    and (for example) EFI only publishes its reservations in /proc/iomem
    for the benefit of the traditional, userspace based kexec tool.
    
    On arm64 platforms with GICv3, this can result in the payload being
    placed at the location of the LPI tables. Shock, horror!
    
    Let's augment the EFI reservation code with a memblock_reserve() call,
    protecting our dear tables from the secondary kernel invasion.
    
    Reported-by: Moritz Fischer <mdf@kernel.org>
    Tested-by: Moritz Fischer <mdf@kernel.org>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Cc: stable@vger.kernel.org
    Cc: Ard Biesheuvel <ardb@kernel.org>
    Cc: James Morse <james.morse@arm.com>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 281a94362bbe32c020027a7d6facb37f39723672
Author: Minas Harutyunyan <Minas.Harutyunyan@synopsys.com>
Date:   Tue Jul 20 05:41:24 2021 -0700

    usb: dwc2: gadget: Fix sending zero length packet in DDMA mode.
    
    commit d53dc38857f6dbefabd9eecfcbf67b6eac9a1ef4 upstream.
    
    Sending zero length packet in DDMA mode perform by DMA descriptor
    by setting SP (short packet) flag.
    
    For DDMA in function dwc2_hsotg_complete_in() does not need to send
    zlp.
    
    Tested by USBCV MSC tests.
    
    Fixes: f71b5e2533de ("usb: dwc2: gadget: fix zero length packet transfers")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Minas Harutyunyan <Minas.Harutyunyan@synopsys.com>
    Link: https://lore.kernel.org/r/967bad78c55dd2db1c19714eee3d0a17cf99d74a.1626777738.git.Minas.Harutyunyan@synopsys.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 167079fbfaa7f19709af7d04d1e8c9e851b6f755
Author: John Keeping <john@metanate.com>
Date:   Wed Jul 21 17:17:45 2021 +0100

    USB: serial: cp210x: add ID for CEL EM3588 USB ZigBee stick
    
    commit d6a206e60124a9759dd7f6dfb86b0e1d3b1df82e upstream.
    
    Add the USB serial device ID for the CEL ZigBee EM3588 radio stick.
    
    Signed-off-by: John Keeping <john@metanate.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 811c4cdf29176eff491be755a7f1ec996f8657c6
Author: Ian Ray <ian.ray@ge.com>
Date:   Mon Jul 19 18:43:49 2021 +0200

    USB: serial: cp210x: fix comments for GE CS1000
    
    commit e9db418d4b828dd049caaf5ed65dc86f93bb1a0c upstream.
    
    Fix comments for GE CS1000 CP210x USB ID assignments.
    
    Fixes: 42213a0190b5 ("USB: serial: cp210x: add some more GE USB IDs")
    Signed-off-by: Ian Ray <ian.ray@ge.com>
    Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f54ee7e16d0d2c4a2dba271f49c1c5a37585eca6
Author: Marco De Marco <marco.demarco@posteo.net>
Date:   Mon Jul 5 19:44:21 2021 +0000

    USB: serial: option: add support for u-blox LARA-R6 family
    
    commit 94b619a07655805a1622484967754f5848640456 upstream.
    
    The patch is meant to support LARA-R6 Cat 1 module family.
    
    Module USB ID:
    Vendor  ID: 0x05c6
    Product ID: 0x90fA
    
    Interface layout:
    If 0: Diagnostic
    If 1: AT parser
    If 2: AT parser
    If 3: QMI wwan (not available in all versions)
    
    Signed-off-by: Marco De Marco <marco.demarco@posteo.net>
    Link: https://lore.kernel.org/r/49260184.kfMIbaSn9k@mars
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e28d28eb9be68e2fad95366512db9f7be7a8044f
Author: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Date:   Thu Jun 24 21:20:39 2021 +0900

    usb: renesas_usbhs: Fix superfluous irqs happen after usb_pkt_pop()
    
    commit 5719df243e118fb343725e8b2afb1637e1af1373 upstream.
    
    This driver has a potential issue which this driver is possible to
    cause superfluous irqs after usb_pkt_pop() is called. So, after
    the commit 3af32605289e ("usb: renesas_usbhs: fix error return
    code of usbhsf_pkt_handler()") had been applied, we could observe
    the following error happened when we used g_audio.
    
        renesas_usbhs e6590000.usb: irq_ready run_error 1 : -22
    
    To fix the issue, disable the tx or rx interrupt in usb_pkt_pop().
    
    Fixes: 2743e7f90dc0 ("usb: renesas_usbhs: fix the usb_pkt_pop()")
    Cc: <stable@vger.kernel.org> # v4.4+
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Link: https://lore.kernel.org/r/20210624122039.596528-1-yoshihiro.shimoda.uh@renesas.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 863d071dbcd54dacf47192a1365faec46b7a68ca
Author: Mark Tomlinson <mark.tomlinson@alliedtelesis.co.nz>
Date:   Fri Jun 25 15:14:56 2021 +1200

    usb: max-3421: Prevent corruption of freed memory
    
    commit b5fdf5c6e6bee35837e160c00ac89327bdad031b upstream.
    
    The MAX-3421 USB driver remembers the state of the USB toggles for a
    device/endpoint. To save SPI writes, this was only done when a new
    device/endpoint was being used. Unfortunately, if the old device was
    removed, this would cause writes to freed memory.
    
    To fix this, a simpler scheme is used. The toggles are read from
    hardware when a URB is completed, and the toggles are always written to
    hardware when any URB transaction is started. This will cause a few more
    SPI transactions, but no causes kernel panics.
    
    Fixes: 2d53139f3162 ("Add support for using a MAX3421E chip as a host driver.")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Mark Tomlinson <mark.tomlinson@alliedtelesis.co.nz>
    Link: https://lore.kernel.org/r/20210625031456.8632-1-mark.tomlinson@alliedtelesis.co.nz
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e4077a90e600a7904a812b22e4263520bb07a72e
Author: Julian Sikorski <belegdol@gmail.com>
Date:   Tue Jul 20 19:19:10 2021 +0200

    USB: usb-storage: Add LaCie Rugged USB3-FW to IGNORE_UAS
    
    commit 6abf2fe6b4bf6e5256b80c5817908151d2d33e9f upstream.
    
    LaCie Rugged USB3-FW appears to be incompatible with UAS. It generates
    errors like:
    [ 1151.582598] sd 14:0:0:0: tag#16 uas_eh_abort_handler 0 uas-tag 1 inflight: IN
    [ 1151.582602] sd 14:0:0:0: tag#16 CDB: Report supported operation codes a3 0c 01 12 00 00 00 00 02 00 00 00
    [ 1151.588594] scsi host14: uas_eh_device_reset_handler start
    [ 1151.710482] usb 2-4: reset SuperSpeed Gen 1 USB device number 2 using xhci_hcd
    [ 1151.741398] scsi host14: uas_eh_device_reset_handler success
    [ 1181.785534] scsi host14: uas_eh_device_reset_handler start
    
    Signed-off-by: Julian Sikorski <belegdol+github@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20210720171910.36497-1-belegdol+github@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit da6f6769ee0f661b853689ec1f85b3c46721b161
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Thu Jul 15 18:01:21 2021 +0300

    usb: hub: Fix link power management max exit latency (MEL) calculations
    
    commit 1bf2761c837571a66ec290fb66c90413821ffda2 upstream.
    
    Maximum Exit Latency (MEL) value is used by host to know how much in
    advance it needs to start waking up a U1/U2 suspended link in order to
    service a periodic transfer in time.
    
    Current MEL calculation only includes the time to wake up the path from
    U1/U2 to U0. This is called tMEL1 in USB 3.1 section C 1.5.2
    
    Total MEL = tMEL1 + tMEL2 +tMEL3 + tMEL4 which should additinally include:
    - tMEL2 which is the time it takes for PING message to reach device
    - tMEL3 time for device to process the PING and submit a PING_RESPONSE
    - tMEL4 time for PING_RESPONSE to traverse back upstream to host.
    
    Add the missing tMEL2, tMEL3 and tMEL4 to MEL calculation.
    
    Cc: <stable@kernel.org> # v3.5
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20210715150122.1995966-1-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fea6b53e631acab9db79ab1e4e501caaceab68a7
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Thu Jul 15 18:01:22 2021 +0300

    usb: hub: Disable USB 3 device initiated lpm if exit latency is too high
    
    commit 1b7f56fbc7a1b66967b6114d1b5f5a257c3abae6 upstream.
    
    The device initiated link power management U1/U2 states should not be
    enabled in case the system exit latency plus one bus interval (125us) is
    greater than the shortest service interval of any periodic endpoint.
    
    This is the case for both U1 and U2 sytstem exit latencies and link states.
    
    See USB 3.2 section 9.4.9 "Set Feature" for more details
    
    Note, before this patch the host and device initiated U1/U2 lpm states
    were both enabled with lpm. After this patch it's possible to end up with
    only host inititated U1/U2 lpm in case the exit latencies won't allow
    device initiated lpm.
    
    If this case we still want to set the udev->usb3_lpm_ux_enabled flag so
    that sysfs users can see the link may go to U1/U2.
    
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20210715150122.1995966-2-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 962ce043ef922024aee75eefdd6d76fb825faa64
Author: Nicholas Piggin <npiggin@gmail.com>
Date:   Thu Jul 8 21:26:22 2021 +1000

    KVM: PPC: Book3S HV Nested: Sanitise H_ENTER_NESTED TM state
    
    commit d9c57d3ed52a92536f5fa59dc5ccdd58b4875076 upstream.
    
    The H_ENTER_NESTED hypercall is handled by the L0, and it is a request
    by the L1 to switch the context of the vCPU over to that of its L2
    guest, and return with an interrupt indication. The L1 is responsible
    for switching some registers to guest context, and the L0 switches
    others (including all the hypervisor privileged state).
    
    If the L2 MSR has TM active, then the L1 is responsible for
    recheckpointing the L2 TM state. Then the L1 exits to L0 via the
    H_ENTER_NESTED hcall, and the L0 saves the TM state as part of the exit,
    and then it recheckpoints the TM state as part of the nested entry and
    finally HRFIDs into the L2 with TM active MSR. Not efficient, but about
    the simplest approach for something that's horrendously complicated.
    
    Problems arise if the L1 exits to the L0 with a TM state which does not
    match the L2 TM state being requested. For example if the L1 is
    transactional but the L2 MSR is non-transactional, or vice versa. The
    L0's HRFID can take a TM Bad Thing interrupt and crash.
    
    Fix this by disallowing H_ENTER_NESTED in TM[T] state entirely, and then
    ensuring that if the L1 is suspended then the L2 must have TM active,
    and if the L1 is not suspended then the L2 must not have TM active.
    
    Fixes: 360cae313702 ("KVM: PPC: Book3S HV: Nested guest entry via hypercall")
    Cc: stable@vger.kernel.org # v4.20+
    Reported-by: Alexey Kardashevskiy <aik@ozlabs.ru>
    Acked-by: Michael Neuling <mikey@neuling.org>
    Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2b9ffddd70b449cdc42b943788dc82a6d7b0d175
Author: Nicholas Piggin <npiggin@gmail.com>
Date:   Tue Jul 20 20:43:09 2021 +1000

    KVM: PPC: Book3S: Fix H_RTAS rets buffer overflow
    
    commit f62f3c20647ebd5fb6ecb8f0b477b9281c44c10a upstream.
    
    The kvmppc_rtas_hcall() sets the host rtas_args.rets pointer based on
    the rtas_args.nargs that was provided by the guest. That guest nargs
    value is not range checked, so the guest can cause the host rets pointer
    to be pointed outside the args array. The individual rtas function
    handlers check the nargs and nrets values to ensure they are correct,
    but if they are not, the handlers store a -3 (0xfffffffd) failure
    indication in rets[0] which corrupts host memory.
    
    Fix this by testing up front whether the guest supplied nargs and nret
    would exceed the array size, and fail the hcall directly without storing
    a failure indication to rets[0].
    
    Also expand on a comment about why we kill the guest and try not to
    return errors directly if we have a valid rets[0] pointer.
    
    Fixes: 8e591cb72047 ("KVM: PPC: Book3S: Add infrastructure to implement kernel-side RTAS calls")
    Cc: stable@vger.kernel.org # v3.10+
    Reported-by: Alexey Kardashevskiy <aik@ozlabs.ru>
    Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c968f563ccdeb317f85cf2c92a40249763f76b78
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Thu Jul 15 18:06:51 2021 +0300

    xhci: Fix lost USB 2 remote wake
    
    commit 72f68bf5c756f5ce1139b31daae2684501383ad5 upstream.
    
    There's a small window where a USB 2 remote wake may be left unhandled
    due to a race between hub thread and xhci port event interrupt handler.
    
    When the resume event is detected in the xhci interrupt handler it kicks
    the hub timer, which should move the port from resume to U0 once resume
    has been signalled for long enough.
    
    To keep the hub "thread" running we set a bus_state->resuming_ports flag.
    This flag makes sure hub timer function kicks itself.
    
    checking this flag was not properly protected by the spinlock. Flag was
    copied to a local variable before lock was taken. The local variable was
    then checked later with spinlock held.
    
    If interrupt is handled right after copying the flag to the local variable
    we end up stopping the hub thread before it can handle the USB 2 resume.
    
    CPU0                                    CPU1
    (hub thread)                            (xhci event handler)
    
    xhci_hub_status_data()
    status = bus_state->resuming_ports;
                                            <Interrupt>
                                            handle_port_status()
                                            spin_lock()
                                            bus_state->resuming_ports = 1
                                            set_flag(HCD_FLAG_POLL_RH)
                                            spin_unlock()
    spin_lock()
    if (!status)
      clear_flag(HCD_FLAG_POLL_RH)
    spin_unlock()
    
    Fix this by taking the lock a bit earlier so that it covers
    the resuming_ports flag copy in the hub thread
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20210715150651.1996099-2-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a660ecde5c550105b0e54f168906b43e6e4dd297
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Jul 16 15:56:00 2021 +0200

    ALSA: hdmi: Expose all pins on MSI MS-7C94 board
    
    commit 33f735f137c6539e3ceceb515cd1e2a644005b49 upstream.
    
    The BIOS on MSI Mortar B550m WiFi (MS-7C94) board with AMDGPU seems
    disabling the other pins than HDMI although it has more outputs
    including DP.
    
    This patch adds the board to the allow list for enabling all pins.
    
    Reported-by: Damjan Georgievski <gdamjan@gmail.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/CAEk1YH4Jd0a8vfZxORVu7qg+Zsc-K+pR187ezNq8QhJBPW4gpw@mail.gmail.com
    Link: https://lore.kernel.org/r/20210716135600.24176-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f73696354d594cbf3905f0ef7b1a71dff0a9c14e
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Jul 16 15:27:23 2021 +0200

    ALSA: sb: Fix potential ABBA deadlock in CSP driver
    
    commit 1c2b9519159b470ef24b2638f4794e86e2952ab7 upstream.
    
    SB16 CSP driver may hit potentially a typical ABBA deadlock in two
    code paths:
    
     In snd_sb_csp_stop():
         spin_lock_irqsave(&p->chip->mixer_lock, flags);
         spin_lock(&p->chip->reg_lock);
    
     In snd_sb_csp_load():
         spin_lock_irqsave(&p->chip->reg_lock, flags);
         spin_lock(&p->chip->mixer_lock);
    
    Also the similar pattern is seen in snd_sb_csp_start().
    
    Although the practical impact is very small (those states aren't
    triggered in the same running state and this happens only on a real
    hardware, decades old ISA sound boards -- which must be very difficult
    to find nowadays), it's a real scenario and has to be fixed.
    
    This patch addresses those deadlocks by splitting the locks in
    snd_sb_csp_start() and snd_sb_csp_stop() for avoiding the nested
    locks.
    
    Reported-by: Jia-Ju Bai <baijiaju1990@gmail.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/7b0fcdaf-cd4f-4728-2eae-48c151a92e10@gmail.com
    Link: https://lore.kernel.org/r/20210716132723.13216-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7aa2dfbc6bd0242b8c4ad3237185804485ab63ca
Author: Alexander Tsoy <alexander@tsoy.me>
Date:   Thu Jul 22 02:56:05 2021 +0300

    ALSA: usb-audio: Add registration quirk for JBL Quantum headsets
    
    commit b0084afde27fe8a504377dee65f55bc6aa776937 upstream.
    
    These devices has two interfaces, but only the second interface
    contains the capture endpoint, thus quirk is required to delay the
    registration until the second interface appears.
    
    Tested-by: Jakub Fišer <jakub@ufiseru.cz>
    Signed-off-by: Alexander Tsoy <alexander@tsoy.me>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20210721235605.53741-1-alexander@tsoy.me
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 46d62c3fe2ab5af62bde4e2342dfdae59268fbdc
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Jul 14 10:48:36 2021 +0200

    ALSA: usb-audio: Add missing proc text entry for BESPOKEN type
    
    commit 64752a95b702817602d72f109ceaf5ec0780e283 upstream.
    
    Recently we've added a new usb_mixer element type, USB_MIXER_BESPOKEN,
    but it wasn't added in the table in snd_usb_mixer_dump_cval().  This
    is no big problem since each bespoken type should have its own dump
    method, but it still isn't disallowed to use the standard one, so we
    should cover it as well.  Along with it, define the table with the
    explicit array initializer for avoiding other pitfalls.
    
    Fixes: 785b6f29a795 ("ALSA: usb-audio: scarlett2: Fix wrong resume call")
    Reported-by: Pavel Machek <pavel@denx.de>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20210714084836.1977-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f1754f96ab4169113c40c324968d1677296e6f9a
Author: Alexander Egorenkov <egorenar@linux.ibm.com>
Date:   Fri Jul 16 22:00:22 2021 +0200

    s390/boot: fix use of expolines in the DMA code
    
    commit 463f36c76fa4ec015c640ff63ccf52e7527abee0 upstream.
    
    The DMA code section of the decompressor must be compiled with expolines
    if Spectre V2 mitigation has been enabled for the decompressed kernel.
    This is required because although the decompressor's image contains
    the DMA code section, it is handed over to the decompressed kernel for use.
    
    Because the DMA code is already slow w/o expolines, use expolines always
    regardless whether the decompressed kernel is using them or not. This
    simplifies the DMA code by dropping the conditional compilation of
    expolines.
    
    Fixes: bf72630130c2 ("s390: use proper expoline sections for .dma code")
    Cc: <stable@vger.kernel.org> # 5.2
    Signed-off-by: Alexander Egorenkov <egorenar@linux.ibm.com>
    Reviewed-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8eb521d19248fd8e68164b232add8c0abc2e8408
Author: Vasily Gorbik <gor@linux.ibm.com>
Date:   Fri Jun 25 23:50:07 2021 +0200

    s390/ftrace: fix ftrace_update_ftrace_func implementation
    
    commit f8c2602733c953ed7a16e060640b8e96f9d94b9b upstream.
    
    s390 enforces DYNAMIC_FTRACE if FUNCTION_TRACER is selected.
    At the same time implementation of ftrace_caller is not compliant with
    HAVE_DYNAMIC_FTRACE since it doesn't provide implementation of
    ftrace_update_ftrace_func() and calls ftrace_trace_function() directly.
    
    The subtle difference is that during ftrace code patching ftrace
    replaces function tracer via ftrace_update_ftrace_func() and activates
    it back afterwards. Unexpected direct calls to ftrace_trace_function()
    during ftrace code patching leads to nullptr-dereferences when tracing
    is activated for one of functions which are used during code patching.
    Those function currently are:
    copy_from_kernel_nofault()
    copy_from_kernel_nofault_allowed()
    preempt_count_sub() [with debug_defconfig]
    preempt_count_add() [with debug_defconfig]
    
    Corresponding KASAN report:
     BUG: KASAN: nullptr-dereference in function_trace_call+0x316/0x3b0
     Read of size 4 at addr 0000000000001e08 by task migration/0/15
    
     CPU: 0 PID: 15 Comm: migration/0 Tainted: G B 5.13.0-41423-g08316af3644d
     Hardware name: IBM 3906 M04 704 (LPAR)
     Stopper: multi_cpu_stop+0x0/0x3e0 <- stop_machine_cpuslocked+0x1e4/0x218
     Call Trace:
      [<0000000001f77caa>] show_stack+0x16a/0x1d0
      [<0000000001f8de42>] dump_stack+0x15a/0x1b0
      [<0000000001f81d56>] print_address_description.constprop.0+0x66/0x2e0
      [<000000000082b0ca>] kasan_report+0x152/0x1c0
      [<00000000004cfd8e>] function_trace_call+0x316/0x3b0
      [<0000000001fb7082>] ftrace_caller+0x7a/0x7e
      [<00000000006bb3e6>] copy_from_kernel_nofault_allowed+0x6/0x10
      [<00000000006bb42e>] copy_from_kernel_nofault+0x3e/0xd0
      [<000000000014605c>] ftrace_make_call+0xb4/0x1f8
      [<000000000047a1b4>] ftrace_replace_code+0x134/0x1d8
      [<000000000047a6e0>] ftrace_modify_all_code+0x120/0x1d0
      [<000000000047a7ec>] __ftrace_modify_code+0x5c/0x78
      [<000000000042395c>] multi_cpu_stop+0x224/0x3e0
      [<0000000000423212>] cpu_stopper_thread+0x33a/0x5a0
      [<0000000000243ff2>] smpboot_thread_fn+0x302/0x708
      [<00000000002329ea>] kthread+0x342/0x408
      [<00000000001066b2>] __ret_from_fork+0x92/0xf0
      [<0000000001fb57fa>] ret_from_fork+0xa/0x30
    
     The buggy address belongs to the page:
     page:(____ptrval____) refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x1
     flags: 0x1ffff00000001000(reserved|node=0|zone=0|lastcpupid=0x1ffff)
     raw: 1ffff00000001000 0000040000000048 0000040000000048 0000000000000000
     raw: 0000000000000000 0000000000000000 ffffffff00000001 0000000000000000
     page dumped because: kasan: bad access detected
    
     Memory state around the buggy address:
      0000000000001d00: f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7
      0000000000001d80: f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7
     >0000000000001e00: f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7
                           ^
      0000000000001e80: f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7
      0000000000001f00: f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7
     ==================================================================
    
    To fix that introduce ftrace_func callback to be called from
    ftrace_caller and update it in ftrace_update_ftrace_func().
    
    Fixes: 4cc9bed034d1 ("[S390] cleanup ftrace backend functions")
    Cc: stable@vger.kernel.org
    Reviewed-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 268132b070d9d05f29499c23ae50fd7a807d8aab
Author: Huang Pei <huangpei@loongson.cn>
Date:   Mon Jul 26 15:26:42 2021 +0800

    Revert "MIPS: add PMD table accounting into MIPS'pmd_alloc_one"
    
    This reverts commit 002d8b395fa1c0679fc3c3e68873de6c1cc300a2 which is
    commit ed914d48b6a1040d1039d371b56273d422c0081e upstream.
    
    Commit b2b29d6d011944 (mm: account PMD tables like PTE tables) is
    introduced between v5.9 and v5.10, so this fix (commit 002d8b395fa1)
    should NOT apply to any pre-5.10 branch.
    
    Signed-off-by: Huang Pei <huangpei@loongson.cn>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f323809e310827976e92d5914aee9c878c850172
Author: Marcelo Henrique Cerri <marcelo.cerri@canonical.com>
Date:   Wed Jun 30 18:54:38 2021 -0700

    proc: Avoid mixing integer types in mem_rw()
    
    [ Upstream commit d238692b4b9f2c36e35af4c6e6f6da36184aeb3e ]
    
    Use size_t when capping the count argument received by mem_rw(). Since
    count is size_t, using min_t(int, ...) can lead to a negative value
    that will later be passed to access_remote_vm(), which can cause
    unexpected behavior.
    
    Since we are capping the value to at maximum PAGE_SIZE, the conversion
    from size_t to int when passing it to access_remote_vm() as "len"
    shouldn't be a problem.
    
    Link: https://lkml.kernel.org/r/20210512125215.3348316-1-marcelo.cerri@canonical.com
    Reviewed-by: David Disseldorp <ddiss@suse.de>
    Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
    Signed-off-by: Marcelo Henrique Cerri <marcelo.cerri@canonical.com>
    Cc: Alexey Dobriyan <adobriyan@gmail.com>
    Cc: Souza Cascardo <cascardo@canonical.com>
    Cc: Christian Brauner <christian.brauner@ubuntu.com>
    Cc: Michel Lespinasse <walken@google.com>
    Cc: Helge Deller <deller@gmx.de>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Lorenzo Stoakes <lstoakes@gmail.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b71a75209f6af90345a94a3cabce5bae0a701284
Author: Maxime Ripard <maxime@cerno.tech>
Date:   Tue Jul 20 15:45:23 2021 +0200

    drm/panel: raspberrypi-touchscreen: Prevent double-free
    
    [ Upstream commit 7bbcb919e32d776ca8ddce08abb391ab92eef6a9 ]
    
    The mipi_dsi_device allocated by mipi_dsi_device_register_full() is
    already free'd on release.
    
    Fixes: 2f733d6194bd ("drm/panel: Add support for the Raspberry Pi 7" Touchscreen.")
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210720134525.563936-9-maxime@cerno.tech
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2e6ab87f8e63ad3239b9dcebde8142fa6fd4cb3e
Author: Yajun Deng <yajun.deng@linux.dev>
Date:   Thu Jul 22 11:23:43 2021 +0800

    net: sched: cls_api: Fix the the wrong parameter
    
    [ Upstream commit 9d85a6f44bd5585761947f40f7821c9cd78a1bbe ]
    
    The 4th parameter in tc_chain_notify() should be flags rather than seq.
    Let's change it back correctly.
    
    Fixes: 32a4f5ecd738 ("net: sched: introduce chain object to uapi")
    Signed-off-by: Yajun Deng <yajun.deng@linux.dev>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b60461696a0b0fdaf240bc365b7983698f88ded2
Author: Xin Long <lucien.xin@gmail.com>
Date:   Tue Jul 20 16:07:01 2021 -0400

    sctp: update active_key for asoc when old key is being replaced
    
    [ Upstream commit 58acd10092268831e49de279446c314727101292 ]
    
    syzbot reported a call trace:
    
      BUG: KASAN: use-after-free in sctp_auth_shkey_hold+0x22/0xa0 net/sctp/auth.c:112
      Call Trace:
       sctp_auth_shkey_hold+0x22/0xa0 net/sctp/auth.c:112
       sctp_set_owner_w net/sctp/socket.c:131 [inline]
       sctp_sendmsg_to_asoc+0x152e/0x2180 net/sctp/socket.c:1865
       sctp_sendmsg+0x103b/0x1d30 net/sctp/socket.c:2027
       inet_sendmsg+0x99/0xe0 net/ipv4/af_inet.c:821
       sock_sendmsg_nosec net/socket.c:703 [inline]
       sock_sendmsg+0xcf/0x120 net/socket.c:723
    
    This is an use-after-free issue caused by not updating asoc->shkey after
    it was replaced in the key list asoc->endpoint_shared_keys, and the old
    key was freed.
    
    This patch is to fix by also updating active_key for asoc when old key is
    being replaced with a new one. Note that this issue doesn't exist in
    sctp_auth_del_key_id(), as it's not allowed to delete the active_key
    from the asoc.
    
    Fixes: 1b1e0bc99474 ("sctp: add refcnt support for sh_key")
    Reported-by: syzbot+b774577370208727d12b@syzkaller.appspotmail.com
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9fa89c2caee2c914d652d7e935e0aa18c5afb629
Author: Christoph Hellwig <hch@lst.de>
Date:   Wed Jul 21 10:00:11 2021 +0200

    nvme: set the PRACT bit when using Write Zeroes with T10 PI
    
    [ Upstream commit aaeb7bb061be545251606f4d9c82d710ca2a7c8e ]
    
    When using Write Zeroes on a namespace that has protection
    information enabled they behavior without the PRACT bit
    counter-intuitive and will generally lead to validation failures
    when reading the written blocks.  Fix this by always setting the
    PRACT bit that generates matching PI data on the fly.
    
    Fixes: 6e02318eaea5 ("nvme: add support for the Write Zeroes command")
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Keith Busch <kbusch@kernel.org>
    Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c50141b3d769ddc146386fc4c36fd88e7751e32f
Author: Sayanta Pattanayak <sayanta.pattanayak@arm.com>
Date:   Tue Jul 20 17:17:40 2021 +0100

    r8169: Avoid duplicate sysfs entry creation error
    
    [ Upstream commit e9a72f874d5b95cef0765bafc56005a50f72c5fe ]
    
    When registering the MDIO bus for a r8169 device, we use the PCI
    bus/device specifier as a (seemingly) unique device identifier.
    However the very same BDF number can be used on another PCI segment,
    which makes the driver fail probing:
    
    [ 27.544136] r8169 0002:07:00.0: enabling device (0000 -> 0003)
    [ 27.559734] sysfs: cannot create duplicate filename '/class/mdio_bus/r8169-700'
    ....
    [ 27.684858] libphy: mii_bus r8169-700 failed to register
    [ 27.695602] r8169: probe of 0002:07:00.0 failed with error -22
    
    Add the segment number to the device name to make it more unique.
    
    This fixes operation on ARM N1SDP boards, with two boards connected
    together to form an SMP system, and all on-board devices showing up
    twice, just on different PCI segments. A similar issue would occur on
    large systems with many PCI slots and multiple RTL8169 NICs.
    
    Fixes: f1e911d5d0dfd ("r8169: add basic phylib support")
    Signed-off-by: Sayanta Pattanayak <sayanta.pattanayak@arm.com>
    [Andre: expand commit message, use pci_domain_nr()]
    Signed-off-by: Andre Przywara <andre.przywara@arm.com>
    Acked-by: Heiner Kallweit <hkallweit1@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f726817d6b42ffcd04c15d78f013db5569ec5b5f
Author: David Howells <dhowells@redhat.com>
Date:   Tue Jun 15 11:57:26 2021 +0100

    afs: Fix tracepoint string placement with built-in AFS
    
    [ Upstream commit 6c881ca0b3040f3e724eae513117ba4ddef86057 ]
    
    To quote Alexey[1]:
    
        I was adding custom tracepoint to the kernel, grabbed full F34 kernel
        .config, disabled modules and booted whole shebang as VM kernel.
    
        Then did
    
            perf record -a -e ...
    
        It crashed:
    
            general protection fault, probably for non-canonical address 0x435f5346592e4243: 0000 [#1] SMP PTI
            CPU: 1 PID: 842 Comm: cat Not tainted 5.12.6+ #26
            Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.14.0-1.fc33 04/01/2014
            RIP: 0010:t_show+0x22/0xd0
    
        Then reproducer was narrowed to
    
            # cat /sys/kernel/tracing/printk_formats
    
        Original F34 kernel with modules didn't crash.
    
        So I started to disable options and after disabling AFS everything
        started working again.
    
        The root cause is that AFS was placing char arrays content into a
        section full of _pointers_ to strings with predictable consequences.
    
        Non canonical address 435f5346592e4243 is "CB.YFS_" which came from
        CM_NAME macro.
    
        Steps to reproduce:
    
            CONFIG_AFS=y
            CONFIG_TRACING=y
    
            # cat /sys/kernel/tracing/printk_formats
    
    Fix this by the following means:
    
     (1) Add enum->string translation tables in the event header with the AFS
         and YFS cache/callback manager operations listed by RPC operation ID.
    
     (2) Modify the afs_cb_call tracepoint to print the string from the
         translation table rather than using the string at the afs_call name
         pointer.
    
     (3) Switch translation table depending on the service we're being accessed
         as (AFS or YFS) in the tracepoint print clause.  Will this cause
         problems to userspace utilities?
    
         Note that the symbolic representation of the YFS service ID isn't
         available to this header, so I've put it in as a number.  I'm not sure
         if this is the best way to do this.
    
     (4) Remove the name wrangling (CM_NAME) macro and put the names directly
         into the afs_call_type structs in cmservice.c.
    
    Fixes: 8e8d7f13b6d5a9 ("afs: Add some tracepoints")
    Reported-by: Alexey Dobriyan (SK hynix) <adobriyan@gmail.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Reviewed-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Reviewed-by: Marc Dionne <marc.dionne@auristor.com>
    cc: Andrew Morton <akpm@linux-foundation.org>
    cc: linux-afs@lists.infradead.org
    Link: https://lore.kernel.org/r/YLAXfvZ+rObEOdc%2F@localhost.localdomain/ [1]
    Link: https://lore.kernel.org/r/643721.1623754699@warthog.procyon.org.uk/
    Link: https://lore.kernel.org/r/162430903582.2896199.6098150063997983353.stgit@warthog.procyon.org.uk/ # v1
    Link: https://lore.kernel.org/r/162609463957.3133237.15916579353149746363.stgit@warthog.procyon.org.uk/ # v1 (repost)
    Link: https://lore.kernel.org/r/162610726860.3408253.445207609466288531.stgit@warthog.procyon.org.uk/ # v2
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b22c9e433bb7f2d90482767772e094cfc69c136a
Author: Vincent Palatin <vpalatin@chromium.org>
Date:   Wed Jul 21 11:25:16 2021 +0200

    Revert "USB: quirks: ignore remote wake-up on Fibocom L850-GL LTE modem"
    
    [ Upstream commit f3a1a937f7b240be623d989c8553a6d01465d04f ]
    
    This reverts commit 0bd860493f81eb2a46173f6f5e44cc38331c8dbd.
    
    While the patch was working as stated,ie preventing the L850-GL LTE modem
    from crashing on some U3 wake-ups due to a race condition between the
    host wake-up and the modem-side wake-up, when using the MBIM interface,
    this would force disabling the USB runtime PM on the device.
    
    The increased power consumption is significant for LTE laptops,
    and given that with decently recent modem firmwares, when the modem hits
    the bug, it automatically recovers (ie it drops from the bus, but
    automatically re-enumerates after less than half a second, rather than being
    stuck until a power cycle as it was doing with ancient firmware), for
    most people, the trade-off now seems in favor of re-enabling it by
    default.
    
    For people with access to the platform code, the bug can also be worked-around
    successfully by changing the USB3 LFPM polling off-time for the XHCI
    controller in the BIOS code.
    
    Signed-off-by: Vincent Palatin <vpalatin@chromium.org>
    Link: https://lore.kernel.org/r/20210721092516.2775971-1-vpalatin@chromium.org
    Fixes: 0bd860493f81 ("USB: quirks: ignore remote wake-up on Fibocom L850-GL LTE modem")
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 69a49e7b5bafcb39c7271559d298c835c010c7b2
Author: Zhihao Cheng <chengzhihao1@huawei.com>
Date:   Mon Jul 5 21:38:29 2021 +0800

    nvme-pci: don't WARN_ON in nvme_reset_work if ctrl.state is not RESETTING
    
    [ Upstream commit 7764656b108cd308c39e9a8554353b8f9ca232a3 ]
    
    Followling process:
    nvme_probe
      nvme_reset_ctrl
        nvme_change_ctrl_state(ctrl, NVME_CTRL_RESETTING)
        queue_work(nvme_reset_wq, &ctrl->reset_work)
    
    --------------> nvme_remove
                      nvme_change_ctrl_state(&dev->ctrl, NVME_CTRL_DELETING)
    worker_thread
      process_one_work
        nvme_reset_work
        WARN_ON(dev->ctrl.state != NVME_CTRL_RESETTING)
    
    , which will trigger WARN_ON in nvme_reset_work():
    [  127.534298] WARNING: CPU: 0 PID: 139 at drivers/nvme/host/pci.c:2594
    [  127.536161] CPU: 0 PID: 139 Comm: kworker/u8:7 Not tainted 5.13.0
    [  127.552518] Call Trace:
    [  127.552840]  ? kvm_sched_clock_read+0x25/0x40
    [  127.553936]  ? native_send_call_func_single_ipi+0x1c/0x30
    [  127.555117]  ? send_call_function_single_ipi+0x9b/0x130
    [  127.556263]  ? __smp_call_single_queue+0x48/0x60
    [  127.557278]  ? ttwu_queue_wakelist+0xfa/0x1c0
    [  127.558231]  ? try_to_wake_up+0x265/0x9d0
    [  127.559120]  ? ext4_end_io_rsv_work+0x160/0x290
    [  127.560118]  process_one_work+0x28c/0x640
    [  127.561002]  worker_thread+0x39a/0x700
    [  127.561833]  ? rescuer_thread+0x580/0x580
    [  127.562714]  kthread+0x18c/0x1e0
    [  127.563444]  ? set_kthread_struct+0x70/0x70
    [  127.564347]  ret_from_fork+0x1f/0x30
    
    The preceding problem can be easily reproduced by executing following
    script (based on blktests suite):
    test() {
      pdev="$(_get_pci_dev_from_blkdev)"
      sysfs="/sys/bus/pci/devices/${pdev}"
      for ((i = 0; i < 10; i++)); do
        echo 1 > "$sysfs/remove"
        echo 1 > /sys/bus/pci/rescan
      done
    }
    
    Since the device ctrl could be updated as an non-RESETTING state by
    repeating probe/remove in userspace (which is a normal situation), we
    can replace stack dumping WARN_ON with a warnning message.
    
    Fixes: 82b057caefaff ("nvme-pci: fix multiple ctrl removal schedulin")
    Signed-off-by: Zhihao Cheng <chengzhihao1@huawei.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 830251361425c5be044db4d826aaf304ea3d14c6
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Tue Jul 20 15:08:40 2021 +0200

    ipv6: fix another slab-out-of-bounds in fib6_nh_flush_exceptions
    
    [ Upstream commit 8fb4792f091e608a0a1d353dfdf07ef55a719db5 ]
    
    While running the self-tests on a KASAN enabled kernel, I observed a
    slab-out-of-bounds splat very similar to the one reported in
    commit 821bbf79fe46 ("ipv6: Fix KASAN: slab-out-of-bounds Read in
     fib6_nh_flush_exceptions").
    
    We additionally need to take care of fib6_metrics initialization
    failure when the caller provides an nh.
    
    The fix is similar, explicitly free the route instead of calling
    fib6_info_release on a half-initialized object.
    
    Fixes: f88d8ea67fbdb ("ipv6: Plumb support for nexthop object in a fib6_info")
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a88414fb1117f2fe65fb88e45ba694e1d09d5024
Author: Peilin Ye <peilin.ye@bytedance.com>
Date:   Mon Jul 19 16:41:24 2021 -0700

    net/sched: act_skbmod: Skip non-Ethernet packets
    
    [ Upstream commit 727d6a8b7ef3d25080fad228b2c4a1d4da5999c6 ]
    
    Currently tcf_skbmod_act() assumes that packets use Ethernet as their L2
    protocol, which is not always the case.  As an example, for CAN devices:
    
            $ ip link add dev vcan0 type vcan
            $ ip link set up vcan0
            $ tc qdisc add dev vcan0 root handle 1: htb
            $ tc filter add dev vcan0 parent 1: protocol ip prio 10 \
                    matchall action skbmod swap mac
    
    Doing the above silently corrupts all the packets.  Do not perform skbmod
    actions for non-Ethernet packets.
    
    Fixes: 86da71b57383 ("net_sched: Introduce skbmod action")
    Reviewed-by: Cong Wang <cong.wang@bytedance.com>
    Signed-off-by: Peilin Ye <peilin.ye@bytedance.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c278b954ccc735e658002173b53ac32a0ac869e5
Author: Jian Shen <shenjian15@huawei.com>
Date:   Mon Jul 19 17:13:08 2021 +0800

    net: hns3: fix rx VLAN offload state inconsistent issue
    
    [ Upstream commit bbfd4506f962e7e6fff8f37f017154a3c3791264 ]
    
    Currently, VF doesn't enable rx VLAN offload when initializating,
    and PF does it for VFs. If user disable the rx VLAN offload for
    VF with ethtool -K, and reload the VF driver, it may cause the
    rx VLAN offload state being inconsistent between hardware and
    software.
    
    Fixes it by enabling rx VLAN offload when VF initializing.
    
    Fixes: e2cb1dec9779 ("net: hns3: Add HNS3 VF HCL(Hardware Compatibility Layer) Support")
    Signed-off-by: Jian Shen <shenjian15@huawei.com>
    Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 006ed6f4d00baead8d6665a0788886e41ac512a0
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Jul 19 02:12:18 2021 -0700

    net/tcp_fastopen: fix data races around tfo_active_disable_stamp
    
    [ Upstream commit 6f20c8adb1813467ea52c1296d52c4e95978cb2f ]
    
    tfo_active_disable_stamp is read and written locklessly.
    We need to annotate these accesses appropriately.
    
    Then, we need to perform the atomic_inc(tfo_active_disable_times)
    after the timestamp has been updated, and thus add barriers
    to make sure tcp_fastopen_active_should_disable() wont read
    a stale timestamp.
    
    Fixes: cf1ef3f0719b ("net/tcp_fastopen: Disable active side TFO in certain scenarios")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Wei Wang <weiwan@google.com>
    Cc: Yuchung Cheng <ycheng@google.com>
    Cc: Neal Cardwell <ncardwell@google.com>
    Acked-by: Wei Wang <weiwan@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3942ba235693da0e271034a9ecbd0630ec249160
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Sun Jul 18 13:38:34 2021 -0700

    net: hisilicon: rename CACHE_LINE_MASK to avoid redefinition
    
    [ Upstream commit b16f3299ae1aa3c327e1fb742d0379ae4d6e86f2 ]
    
    Building on ARCH=arc causes a "redefined" warning, so rename this
    driver's CACHE_LINE_MASK to avoid the warning.
    
    ../drivers/net/ethernet/hisilicon/hip04_eth.c:134: warning: "CACHE_LINE_MASK" redefined
      134 | #define CACHE_LINE_MASK   0x3F
    In file included from ../include/linux/cache.h:6,
                     from ../include/linux/printk.h:9,
                     from ../include/linux/kernel.h:19,
                     from ../include/linux/list.h:9,
                     from ../include/linux/module.h:12,
                     from ../drivers/net/ethernet/hisilicon/hip04_eth.c:7:
    ../arch/arc/include/asm/cache.h:17: note: this is the location of the previous definition
       17 | #define CACHE_LINE_MASK  (~(L1_CACHE_BYTES - 1))
    
    Fixes: d413779cdd93 ("net: hisilicon: Add an tx_desc to adapt HI13X1_GMAC")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Cc: Vineet Gupta <vgupta@synopsys.com>
    Cc: Jiangfeng Xiao <xiaojiangfeng@huawei.com>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f11f12decd559b1ed164898c272080bf696005d9
Author: Somnath Kotur <somnath.kotur@broadcom.com>
Date:   Sun Jul 18 15:36:31 2021 -0400

    bnxt_en: Check abort error state in bnxt_half_open_nic()
    
    [ Upstream commit 11a39259ff79b74bc99f8b7c44075a2d6d5e7ab1 ]
    
    bnxt_half_open_nic() is called during during ethtool self test and is
    protected by rtnl_lock.  Firmware reset can be happening at the same
    time.  Only critical portions of the entire firmware reset sequence
    are protected by the rtnl_lock.  It is possible that bnxt_half_open_nic()
    can be called when the firmware reset sequence is aborting.  In that
    case, bnxt_half_open_nic() needs to check if the ABORT_ERR flag is set
    and abort if it is.  The ethtool self test will fail but the NIC will be
    brought to a consistent IF_DOWN state.
    
    Without this patch, if bnxt_half_open_nic() were to continue in this
    error state, it may crash like this:
    
      bnxt_en 0000:82:00.1 enp130s0f1np1: FW reset in progress during close, FW reset will be aborted
      Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000
      ...
      Process ethtool (pid: 333327, stack limit = 0x0000000046476577)
      Call trace:
      bnxt_alloc_mem+0x444/0xef0 [bnxt_en]
      bnxt_half_open_nic+0x24/0xb8 [bnxt_en]
      bnxt_self_test+0x2dc/0x390 [bnxt_en]
      ethtool_self_test+0xe0/0x1f8
      dev_ethtool+0x1744/0x22d0
      dev_ioctl+0x190/0x3e0
      sock_ioctl+0x238/0x480
      do_vfs_ioctl+0xc4/0x758
      ksys_ioctl+0x84/0xb8
      __arm64_sys_ioctl+0x28/0x38
      el0_svc_handler+0xb0/0x180
      el0_svc+0x8/0xc
    
    Fixes: a1301f08c5ac ("bnxt_en: Check abort error state in bnxt_open_nic().")
    Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
    Signed-off-by: Michael Chan <michael.chan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 16ce6cb78690f4bd008950ee299e169aa52faa75
Author: Michael Chan <michael.chan@broadcom.com>
Date:   Sun Jul 18 15:36:28 2021 -0400

    bnxt_en: Add missing check for BNXT_STATE_ABORT_ERR in bnxt_fw_rset_task()
    
    [ Upstream commit 6cd657cb3ee6f4de57e635b126ffbe0e51d00f1a ]
    
    In the BNXT_FW_RESET_STATE_POLL_VF state in bnxt_fw_reset_task() after all
    VFs have unregistered, we need to check for BNXT_STATE_ABORT_ERR after
    we acquire the rtnl_lock.  If the flag is set, we need to abort.
    
    Fixes: 230d1f0de754 ("bnxt_en: Handle firmware reset.")
    Signed-off-by: Michael Chan <michael.chan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c993e7aadc503ac99520f45835018518654f3a4f
Author: Michael Chan <michael.chan@broadcom.com>
Date:   Sun Jul 18 15:36:27 2021 -0400

    bnxt_en: Refresh RoCE capabilities in bnxt_ulp_probe()
    
    [ Upstream commit 2c9f046bc377efd1f5e26e74817d5f96e9506c86 ]
    
    The capabilities can change after firmware upgrade/downgrade, so we
    should get the up-to-date RoCE capabilities everytime bnxt_ulp_probe()
    is called.
    
    Fixes: 2151fe0830fd ("bnxt_en: Handle RESET_NOTIFY async event from firmware.")
    Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
    Reviewed-by: Edwin Peer <edwin.peer@broadcom.com>
    Signed-off-by: Michael Chan <michael.chan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6ee8e6be30679295a4d62db8ec79775381ea3029
Author: Vasundhara Volam <vasundhara-v.volam@broadcom.com>
Date:   Thu Oct 31 01:07:49 2019 -0400

    bnxt_en: Improve bnxt_ulp_stop()/bnxt_ulp_start() call sequence.
    
    [ Upstream commit aa46dffff452f7c6d907c4e6a0062e2c53a87fc0 ]
    
    We call bnxt_ulp_stop() to notify the RDMA driver that some error or
    imminent reset is about to happen.  After that we always call
    some variants of bnxt_close().
    
    In the next patch, we will integrate the recently added error
    recovery with the RDMA driver.  In response to ulp_stop, the
    RDMA driver may free MSIX vectors and that will also trigger
    bnxt_close().  To avoid bnxt_close() from being called twice,
    we set a new flag after ulp_stop is called.  If the RDMA driver
    frees MSIX vectors while the new flag is set, we will not call
    bnxt_close(), knowing that it will happen in due course.
    
    With this change, we must make sure that the bnxt_close() call
    after ulp_stop will reset IRQ.  Modify bnxt_reset_task()
    accordingly if we call ulp_stop.
    
    Signed-off-by: Vasundhara Volam <vasundhara-v.volam@broadcom.com>
    Signed-off-by: Michael Chan <michael.chan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 35637acc9810b26ed8a3bc9e71e07fe4946ef6a0
Author: Marek Vasut <marex@denx.de>
Date:   Fri Jul 16 20:21:33 2021 +0200

    spi: cadence: Correct initialisation of runtime PM again
    
    [ Upstream commit 56912da7a68c8356df6a6740476237441b0b792a ]
    
    The original implementation of RPM handling in probe() was mostly
    correct, except it failed to call pm_runtime_get_*() to activate the
    hardware. The subsequent fix, 734882a8bf98 ("spi: cadence: Correct
    initialisation of runtime PM"), breaks the implementation further,
    to the point where the system using this hard IP on ZynqMP hangs on
    boot, because it accesses hardware which is gated off.
    
    Undo 734882a8bf98 ("spi: cadence: Correct initialisation of runtime
    PM") and instead add missing pm_runtime_get_noresume() and move the
    RPM disabling all the way to the end of probe(). That makes ZynqMP
    not hang on boot yet again.
    
    Fixes: 734882a8bf98 ("spi: cadence: Correct initialisation of runtime PM")
    Signed-off-by: Marek Vasut <marex@denx.de>
    Cc: Charles Keepax <ckeepax@opensource.cirrus.com>
    Cc: Mark Brown <broonie@kernel.org>
    Link: https://lore.kernel.org/r/20210716182133.218640-1-marex@denx.de
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2f2150bf41c1e74de24e7a5de9a8c58ade4be096
Author: Dmitry Bogdanov <d.bogdanov@yadro.com>
Date:   Fri Jul 2 12:16:55 2021 +0300

    scsi: target: Fix protect handling in WRITE SAME(32)
    
    [ Upstream commit 6d8e7e7c932162bccd06872362751b0e1d76f5af ]
    
    WRITE SAME(32) command handling reads WRPROTECT at the wrong offset in 1st
    byte instead of 10th byte.
    
    Link: https://lore.kernel.org/r/20210702091655.22818-1-d.bogdanov@yadro.com
    Fixes: afd73f1b60fc ("target: Perform PROTECT sanity checks for WRITE_SAME")
    Signed-off-by: Dmitry Bogdanov <d.bogdanov@yadro.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a6cb717f853455f4f0ae4fe2583707b9864a7821
Author: Mike Christie <michael.christie@oracle.com>
Date:   Wed Jun 30 19:25:59 2021 -0500

    scsi: iscsi: Fix iface sysfs attr detection
    
    [ Upstream commit e746f3451ec7f91dcc9fd67a631239c715850a34 ]
    
    A ISCSI_IFACE_PARAM can have the same value as a ISCSI_NET_PARAM so when
    iscsi_iface_attr_is_visible tries to figure out the type by just checking
    the value, we can collide and return the wrong type. When we call into the
    driver we might not match and return that we don't want attr visible in
    sysfs. The patch fixes this by setting the type when we figure out what the
    param is.
    
    Link: https://lore.kernel.org/r/20210701002559.89533-1-michael.christie@oracle.com
    Fixes: 3e0f65b34cc9 ("[SCSI] iscsi_transport: Additional parameters for network settings")
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 25df44e90ff5959b5c24ad361b648504a7e39ef3
Author: Nguyen Dinh Phi <phind.uet@gmail.com>
Date:   Sun Jul 18 22:40:13 2021 +0800

    netrom: Decrease sock refcount when sock timers expire
    
    [ Upstream commit 517a16b1a88bdb6b530f48d5d153478b2552d9a8 ]
    
    Commit 63346650c1a9 ("netrom: switch to sock timer API") switched to use
    sock timer API. It replaces mod_timer() by sk_reset_timer(), and
    del_timer() by sk_stop_timer().
    
    Function sk_reset_timer() will increase the refcount of sock if it is
    called on an inactive timer, hence, in case the timer expires, we need to
    decrease the refcount ourselves in the handler, otherwise, the sock
    refcount will be unbalanced and the sock will never be freed.
    
    Signed-off-by: Nguyen Dinh Phi <phind.uet@gmail.com>
    Reported-by: syzbot+10f1194569953b72f1ae@syzkaller.appspotmail.com
    Fixes: 63346650c1a9 ("netrom: switch to sock timer API")
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8d7924ce85bae64e7a67c366c7c50840f49f3a62
Author: Pavel Skripkin <paskripkin@gmail.com>
Date:   Sat Jul 17 14:29:33 2021 +0300

    net: sched: fix memory leak in tcindex_partial_destroy_work
    
    [ Upstream commit f5051bcece50140abd1a11a2d36dc3ec5484fc32 ]
    
    Syzbot reported memory leak in tcindex_set_parms(). The problem was in
    non-freed perfect hash in tcindex_partial_destroy_work().
    
    In tcindex_set_parms() new tcindex_data is allocated and some fields from
    old one are copied to new one, but not the perfect hash. Since
    tcindex_partial_destroy_work() is the destroy function for old
    tcindex_data, we need to free perfect hash to avoid memory leak.
    
    Reported-and-tested-by: syzbot+f0bbb2287b8993d4fa74@syzkaller.appspotmail.com
    Fixes: 331b72922c5f ("net: sched: RCU cls_tcindex")
    Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f38527f1890543cdfca8dfd06f75f9887cce6151
Author: Nicholas Piggin <npiggin@gmail.com>
Date:   Fri Jul 16 12:43:10 2021 +1000

    KVM: PPC: Fix kvm_arch_vcpu_ioctl vcpu_load leak
    
    [ Upstream commit bc4188a2f56e821ea057aca6bf444e138d06c252 ]
    
    vcpu_put is not called if the user copy fails. This can result in preempt
    notifier corruption and crashes, among other issues.
    
    Fixes: b3cebfe8c1ca ("KVM: PPC: Move vcpu_load/vcpu_put down to each ioctl case in kvm_arch_vcpu_ioctl")
    Reported-by: Alexey Kardashevskiy <aik@ozlabs.ru>
    Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20210716024310.164448-2-npiggin@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b85dadd4347b1db100e73ad573e8cde7db8d4d5f
Author: Nicholas Piggin <npiggin@gmail.com>
Date:   Fri Jul 16 12:43:09 2021 +1000

    KVM: PPC: Book3S: Fix CONFIG_TRANSACTIONAL_MEM=n crash
    
    [ Upstream commit bd31ecf44b8e18ccb1e5f6b50f85de6922a60de3 ]
    
    When running CPU_FTR_P9_TM_HV_ASSIST, HFSCR[TM] is set for the guest
    even if the host has CONFIG_TRANSACTIONAL_MEM=n, which causes it to be
    unprepared to handle guest exits while transactional.
    
    Normal guests don't have a problem because the HTM capability will not
    be advertised, but a rogue or buggy one could crash the host.
    
    Fixes: 4bb3c7a0208f ("KVM: PPC: Book3S HV: Work around transactional memory bugs in POWER9")
    Reported-by: Alexey Kardashevskiy <aik@ozlabs.ru>
    Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20210716024310.164448-1-npiggin@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b3224bd318610cce5ec08b09a7c49de15bf9e6ba
Author: Yajun Deng <yajun.deng@linux.dev>
Date:   Wed Jul 14 17:13:20 2021 +0800

    net: decnet: Fix sleeping inside in af_decnet
    
    [ Upstream commit 5f119ba1d5771bbf46d57cff7417dcd84d3084ba ]
    
    The release_sock() is blocking function, it would change the state
    after sleeping. use wait_woken() instead.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Yajun Deng <yajun.deng@linux.dev>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bd2b3b13aa2a965db1e03e93f41b7cca875185a6
Author: Michal Suchanek <msuchanek@suse.de>
Date:   Thu Jul 8 11:46:54 2021 +0200

    efi/tpm: Differentiate missing and invalid final event log table.
    
    [ Upstream commit 674a9f1f6815849bfb5bf385e7da8fc198aaaba9 ]
    
    Missing TPM final event log table is not a firmware bug.
    
    Clearly if providing event log in the old format makes the final event
    log invalid it should not be provided at least in that case.
    
    Fixes: b4f1874c6216 ("tpm: check event log version before reading final events")
    Signed-off-by: Michal Suchanek <msuchanek@suse.de>
    Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9413c0abb57f70a953b1116318d6aa478013c35d
Author: Ziyang Xuan <william.xuanziyang@huawei.com>
Date:   Thu Jul 15 20:22:04 2021 +0800

    net: fix uninit-value in caif_seqpkt_sendmsg
    
    [ Upstream commit 991e634360f2622a683b48dfe44fe6d9cb765a09 ]
    
    When nr_segs equal to zero in iovec_from_user, the object
    msg->msg_iter.iov is uninit stack memory in caif_seqpkt_sendmsg
    which is defined in ___sys_sendmsg. So we cann't just judge
    msg->msg_iter.iov->base directlly. We can use nr_segs to judge
    msg in caif_seqpkt_sendmsg whether has data buffers.
    
    =====================================================
    BUG: KMSAN: uninit-value in caif_seqpkt_sendmsg+0x693/0xf60 net/caif/caif_socket.c:542
    Call Trace:
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0x1c9/0x220 lib/dump_stack.c:118
     kmsan_report+0xf7/0x1e0 mm/kmsan/kmsan_report.c:118
     __msan_warning+0x58/0xa0 mm/kmsan/kmsan_instr.c:215
     caif_seqpkt_sendmsg+0x693/0xf60 net/caif/caif_socket.c:542
     sock_sendmsg_nosec net/socket.c:652 [inline]
     sock_sendmsg net/socket.c:672 [inline]
     ____sys_sendmsg+0x12b6/0x1350 net/socket.c:2343
     ___sys_sendmsg net/socket.c:2397 [inline]
     __sys_sendmmsg+0x808/0xc90 net/socket.c:2480
     __compat_sys_sendmmsg net/compat.c:656 [inline]
    
    Reported-by: syzbot+09a5d591c1f98cf5efcb@syzkaller.appspotmail.com
    Link: https://syzkaller.appspot.com/bug?id=1ace85e8fc9b0d5a45c08c2656c3e91762daa9b8
    Fixes: bece7b2398d0 ("caif: Rewritten socket implementation")
    Signed-off-by: Ziyang Xuan <william.xuanziyang@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6d56299ff91195401744598ef5ed7a4f06c64172
Author: Tobias Klauser <tklauser@distanz.ch>
Date:   Thu Jul 15 13:06:09 2021 +0200

    bpftool: Check malloc return value in mount_bpffs_for_pin
    
    [ Upstream commit d444b06e40855219ef38b5e9286db16d435f06dc ]
    
    Fix and add a missing NULL check for the prior malloc() call.
    
    Fixes: 49a086c201a9 ("bpftool: implement prog load command")
    Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Reviewed-by: Quentin Monnet <quentin@isovalent.com>
    Acked-by: Roman Gushchin <guro@fb.com>
    Link: https://lore.kernel.org/bpf/20210715110609.29364-1-tklauser@distanz.ch
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit edec100986753555af4829eb36fe19dca1a5ccfc
Author: John Fastabend <john.fastabend@gmail.com>
Date:   Mon Jul 12 12:55:46 2021 -0700

    bpf, sockmap, tcp: sk_prot needs inuse_idx set for proc stats
    
    [ Upstream commit 228a4a7ba8e99bb9ef980b62f71e3be33f4aae69 ]
    
    The proc socket stats use sk_prot->inuse_idx value to record inuse sock
    stats. We currently do not set this correctly from sockmap side. The
    result is reading sock stats '/proc/net/sockstat' gives incorrect values.
    The socket counter is incremented correctly, but because we don't set the
    counter correctly when we replace sk_prot we may omit the decrement.
    
    To get the correct inuse_idx value move the core_initcall that initializes
    the TCP proto handlers to late_initcall. This way it is initialized after
    TCP has the chance to assign the inuse_idx value from the register protocol
    handler.
    
    Fixes: 604326b41a6fb ("bpf, sockmap: convert to generic sk_msg interface")
    Suggested-by: Jakub Sitnicki <jakub@cloudflare.com>
    Signed-off-by: John Fastabend <john.fastabend@gmail.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Reviewed-by: Cong Wang <cong.wang@bytedance.com>
    Link: https://lore.kernel.org/bpf/20210712195546.423990-3-john.fastabend@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 58259e8b6e857c33a176b91ba05faa1a8180e403
Author: Colin Ian King <colin.king@canonical.com>
Date:   Thu Jul 15 13:57:12 2021 +0100

    s390/bpf: Perform r1 range checking before accessing jit->seen_reg[r1]
    
    [ Upstream commit 91091656252f5d6d8c476e0c92776ce9fae7b445 ]
    
    Currently array jit->seen_reg[r1] is being accessed before the range
    checking of index r1. The range changing on r1 should be performed
    first since it will avoid any potential out-of-range accesses on the
    array seen_reg[] and also it is more optimal to perform checks on r1
    before fetching data from the array. Fix this by swapping the order
    of the checks before the array access.
    
    Fixes: 054623105728 ("s390/bpf: Add s390x eBPF JIT compiler backend")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Tested-by: Ilya Leoshkevich <iii@linux.ibm.com>
    Acked-by: Ilya Leoshkevich <iii@linux.ibm.com>
    Link: https://lore.kernel.org/bpf/20210715125712.24690-1-colin.king@canonical.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cc876a5618bcb0341285be76b6bcf7c8306d550d
Author: Colin Ian King <colin.king@canonical.com>
Date:   Wed Jul 14 16:23:43 2021 +0100

    liquidio: Fix unintentional sign extension issue on left shift of u16
    
    [ Upstream commit e7efc2ce3d0789cd7c21b70ff00cd7838d382639 ]
    
    Shifting the u16 integer oct->pcie_port by CN23XX_PKT_INPUT_CTL_MAC_NUM_POS
    (29) bits will be promoted to a 32 bit signed int and then sign-extended
    to a u64. In the cases where oct->pcie_port where bit 2 is set (e.g. 3..7)
    the shifted value will be sign extended and the top 32 bits of the result
    will be set.
    
    Fix this by casting the u16 values to a u64 before the 29 bit left shift.
    
    Addresses-Coverity: ("Unintended sign extension")
    
    Fixes: 3451b97cce2d ("liquidio: CN23XX register setup")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 42fe8f433b318dc8aa4b254036f1549fcc586f54
Author: Maxim Schwalm <maxim.schwalm@gmail.com>
Date:   Mon Jul 12 03:50:11 2021 +0300

    ASoC: rt5631: Fix regcache sync errors on resume
    
    [ Upstream commit c71f78a662611fe2c67f3155da19b0eff0f29762 ]
    
    The ALC5631 does not like multi-write accesses, avoid them. This fixes:
    
    rt5631 4-001a: Unable to sync registers 0x3a-0x3c. -121
    
    errors on resume from suspend (and all registers after the registers in
    the error not being synced).
    
    Inspired by commit 2d30e9494f1e ("ASoC: rt5651: Fix regcache sync errors
    on resume") from Hans de Geode, which fixed the same errors on ALC5651.
    
    Signed-off-by: Maxim Schwalm <maxim.schwalm@gmail.com>
    Link: https://lore.kernel.org/r/20210712005011.28536-1-digetx@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d99aaf07365fa9b8585f49d8ecd493f658fbe9a5
Author: Peter Hess <peter.hess@ph-home.de>
Date:   Tue Jul 6 14:16:09 2021 +0200

    spi: mediatek: fix fifo rx mode
    
    [ Upstream commit 3a70dd2d050331ee4cf5ad9d5c0a32d83ead9a43 ]
    
    In FIFO mode were two problems:
    - RX mode was never handled and
    - in this case the tx_buf pointer was NULL and caused an exception
    
    fix this by handling RX mode in mtk_spi_fifo_transfer
    
    Fixes: a568231f4632 ("spi: mediatek: Add spi bus for Mediatek MT8173")
    Signed-off-by: Peter Hess <peter.hess@ph-home.de>
    Signed-off-by: Frank Wunderlich <frank-w@public-files.de>
    Link: https://lore.kernel.org/r/20210706121609.680534-1-linux@fw-web.de
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 08cdda8d897287c4cc5398d50725d327981b25e5
Author: Axel Lin <axel.lin@ingics.com>
Date:   Wed Jun 30 17:59:59 2021 +0800

    regulator: hi6421: Fix getting wrong drvdata
    
    [ Upstream commit 1c73daee4bf30ccdff5e86dc400daa6f74735da5 ]
    
    Since config.dev = pdev->dev.parent in current code, so
    dev_get_drvdata(rdev->dev.parent) call in hi6421_regulator_enable
    returns the drvdata of the mfd device rather than the regulator. Fix it.
    
    This was broken while converting to use simplified DT parsing because the
    config.dev changed from pdev->dev to pdev->dev.parent for parsing the
    parent's of_node.
    
    Fixes: 29dc269a85ef ("regulator: hi6421: Convert to use simplified DT parsing")
    Signed-off-by: Axel Lin <axel.lin@ingics.com>
    Link: https://lore.kernel.org/r/20210630095959.2411543-1-axel.lin@ingics.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b25be6bf6419f77693529183ce14bb6871930cc3
Author: Axel Lin <axel.lin@ingics.com>
Date:   Sat Jun 19 20:41:33 2021 +0800

    regulator: hi6421: Use correct variable type for regmap api val argument
    
    [ Upstream commit ae60e6a9d24e89a74e2512204ad04de94921bdd2 ]
    
    Use unsigned int instead of u32 for regmap_read/regmap_update_bits val
    argument.
    
    Signed-off-by: Axel Lin <axel.lin@ingics.com>
    Link: https://lore.kernel.org/r/20210619124133.4096683-1-axel.lin@ingics.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a1ade24cccb5885b33cd26e07abb65486496c8e6
Author: Alain Volmat <alain.volmat@foss.st.com>
Date:   Wed Jul 7 10:27:00 2021 +0200

    spi: stm32: fixes pm_runtime calls in probe/remove
    
    [ Upstream commit 7999d2555c9f879d006ea8469d74db9cdb038af0 ]
    
    Add pm_runtime calls in probe/probe error path and remove
    in order to be consistent in all places in ordering and
    ensure that pm_runtime is disabled prior to resources used
    by the SPI controller.
    
    This patch also fixes the 2 following warnings on driver remove:
    WARNING: CPU: 0 PID: 743 at drivers/clk/clk.c:594 clk_core_disable_lock+0x18/0x24
    WARNING: CPU: 0 PID: 743 at drivers/clk/clk.c:476 clk_unprepare+0x24/0x2c
    
    Fixes: 038ac869c9d2 ("spi: stm32: add runtime PM support")
    
    Signed-off-by: Amelie Delaunay <amelie.delaunay@foss.st.com>
    Signed-off-by: Alain Volmat <alain.volmat@foss.st.com>
    Link: https://lore.kernel.org/r/1625646426-5826-2-git-send-email-alain.volmat@foss.st.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 40e203ce74eb4cd86c963367addee51bb83deb4d
Author: Peter Ujfalusi <peter.ujfalusi@ti.com>
Date:   Thu Dec 12 15:55:50 2019 +0200

    spi: stm32: Use dma_request_chan() instead dma_request_slave_channel()
    
    [ Upstream commit 0a454258febb73e4c60d7f5d9a02d1a8c64fdfb8 ]
    
    dma_request_slave_channel() is a wrapper on top of dma_request_chan()
    eating up the error code.
    
    By using dma_request_chan() directly the driver can support deferred
    probing against DMA.
    
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Link: https://lore.kernel.org/r/20191212135550.4634-10-peter.ujfalusi@ti.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 24b78097a837d92e2d91e7ea40d80a9b06e5d824
Author: Clark Wang <xiaoning.wang@nxp.com>
Date:   Thu Apr 8 18:33:47 2021 +0800

    spi: imx: add a check for speed_hz before calculating the clock
    
    [ Upstream commit 4df2f5e1372e9eec8f9e1b4a3025b9be23487d36 ]
    
    When some drivers use spi to send data, spi_transfer->speed_hz is
    not assigned. If spidev->max_speed_hz is not assigned as well, it
    will cause an error in configuring the clock.
    Add a check for these two values before configuring the clock. An
    error will be returned when they are not assigned.
    
    Signed-off-by: Clark Wang <xiaoning.wang@nxp.com>
    Link: https://lore.kernel.org/r/20210408103347.244313-2-xiaoning.wang@nxp.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 52cff6123aa0f8f6f85d4169a0a33a31a84d6fa5
Author: Riccardo Mancini <rickyman7@gmail.com>
Date:   Fri Jul 16 16:11:20 2021 +0200

    perf data: Close all files in close_dir()
    
    [ Upstream commit d4b3eedce151e63932ce4a00f1d0baa340a8b907 ]
    
    When using 'perf report' in directory mode, the first file is not closed
    on exit, causing a memory leak.
    
    The problem is caused by the iterating variable never reaching 0.
    
    Fixes: 145520631130bd64 ("perf data: Add perf_data__(create_dir|close_dir) functions")
    Signed-off-by: Riccardo Mancini <rickyman7@gmail.com>
    Acked-by: Namhyung Kim <namhyung@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Zhen Lei <thunder.leizhen@huawei.com>
    Link: http://lore.kernel.org/lkml/20210716141122.858082-1-rickyman7@gmail.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0f63857d109960557c8f80ca43de67a137e7d36b
Author: Riccardo Mancini <rickyman7@gmail.com>
Date:   Thu Jul 15 18:07:25 2021 +0200

    perf probe-file: Delete namelist in del_events() on the error path
    
    [ Upstream commit e0fa7ab42232e742dcb3de9f3c1f6127b5adc019 ]
    
    ASan reports some memory leaks when running:
    
      # perf test "42: BPF filter"
    
    This second leak is caused by a strlist not being dellocated on error
    inside probe_file__del_events.
    
    This patch adds a goto label before the deallocation and makes the error
    path jump to it.
    
    Signed-off-by: Riccardo Mancini <rickyman7@gmail.com>
    Fixes: e7895e422e4da63d ("perf probe: Split del_perf_probe_events()")
    Cc: Ian Rogers <irogers@google.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lore.kernel.org/lkml/174963c587ae77fa108af794669998e4ae558338.1626343282.git.rickyman7@gmail.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8b92ea243bbf772f7a46d56831f6b19981246455
Author: Riccardo Mancini <rickyman7@gmail.com>
Date:   Thu Jul 15 18:07:19 2021 +0200

    perf lzma: Close lzma stream on exit
    
    [ Upstream commit f8cbb0f926ae1e1fb5f9e51614e5437560ed4039 ]
    
    ASan reports memory leaks when running:
    
      # perf test "88: Check open filename arg using perf trace + vfs_getname"
    
    One of these is caused by the lzma stream never being closed inside
    lzma_decompress_to_file().
    
    This patch adds the missing lzma_end().
    
    Signed-off-by: Riccardo Mancini <rickyman7@gmail.com>
    Fixes: 80a32e5b498a7547 ("perf tools: Add lzma decompression support for kernel module")
    Cc: Ian Rogers <irogers@google.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lore.kernel.org/lkml/aaf50bdce7afe996cfc06e1bbb36e4a2a9b9db93.1626343282.git.rickyman7@gmail.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 51351c6d5a18a37d7c7b6c66d098c1a813df94ca
Author: Riccardo Mancini <rickyman7@gmail.com>
Date:   Thu Jul 15 18:07:18 2021 +0200

    perf script: Fix memory 'threads' and 'cpus' leaks on exit
    
    [ Upstream commit faf3ac305d61341c74e5cdd9e41daecce7f67bfe ]
    
    ASan reports several memory leaks while running:
    
      # perf test "82: Use vfs_getname probe to get syscall args filenames"
    
    Two of these are caused by some refcounts not being decreased on
    perf-script exit, namely script.threads and script.cpus.
    
    This patch adds the missing __put calls in a new perf_script__exit
    function, which is called at the end of cmd_script.
    
    This patch concludes the fixes of all remaining memory leaks in perf
    test "82: Use vfs_getname probe to get syscall args filenames".
    
    Signed-off-by: Riccardo Mancini <rickyman7@gmail.com>
    Fixes: cfc8874a48599249 ("perf script: Process cpu/threads maps")
    Cc: Ian Rogers <irogers@google.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lore.kernel.org/lkml/5ee73b19791c6fa9d24c4d57f4ac1a23609400d7.1626343282.git.rickyman7@gmail.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d2bfc3eda914c8adaf0798b72439559f4da4f129
Author: Riccardo Mancini <rickyman7@gmail.com>
Date:   Thu Jul 15 18:07:11 2021 +0200

    perf dso: Fix memory leak in dso__new_map()
    
    [ Upstream commit 581e295a0f6b5c2931d280259fbbfff56959faa9 ]
    
    ASan reports a memory leak when running:
    
      # perf test "65: maps__merge_in".
    
    The causes of the leaks are two, this patch addresses only the first
    one, which is related to dso__new_map().
    
    The bug is that dso__new_map() creates a new dso but never decreases the
    refcount it gets from creating it.
    
    This patch adds the missing dso__put().
    
    Signed-off-by: Riccardo Mancini <rickyman7@gmail.com>
    Fixes: d3a7c489c7fd2463 ("perf tools: Reference count struct dso")
    Cc: Ian Rogers <irogers@google.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lore.kernel.org/lkml/60bfe0cd06e89e2ca33646eb8468d7f5de2ee597.1626343282.git.rickyman7@gmail.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 05804a7d223dbf502f5335847f3a3a31476ec239
Author: Riccardo Mancini <rickyman7@gmail.com>
Date:   Thu Jul 15 18:07:09 2021 +0200

    perf test event_update: Fix memory leak of evlist
    
    [ Upstream commit fc56f54f6fcd5337634f4545af6459613129b432 ]
    
    ASan reports a memory leak when running:
    
      # perf test "49: Synthesize attr update"
    
    Caused by evlist not being deleted.
    
    This patch adds the missing evlist__delete and removes the
    perf_cpu_map__put since it's already being deleted by evlist__delete.
    
    Signed-off-by: Riccardo Mancini <rickyman7@gmail.com>
    Fixes: a6e5281780d1da65 ("perf tools: Add event_update event unit type")
    Cc: Ian Rogers <irogers@google.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lore.kernel.org/lkml/f7994ad63d248f7645f901132d208fadf9f2b7e4.1626343282.git.rickyman7@gmail.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d257f3abdc719b7525fe0456f7ed77e1680f6eaa
Author: Riccardo Mancini <rickyman7@gmail.com>
Date:   Thu Jul 15 18:07:08 2021 +0200

    perf test session_topology: Delete session->evlist
    
    [ Upstream commit 233f2dc1c284337286f9a64c0152236779a42f6c ]
    
    ASan reports a memory leak related to session->evlist while running:
    
      # perf test "41: Session topology".
    
    When perf_data is in write mode, session->evlist is owned by the caller,
    which should also take care of deleting it.
    
    This patch adds the missing evlist__delete().
    
    Signed-off-by: Riccardo Mancini <rickyman7@gmail.com>
    Fixes: c84974ed9fb67293 ("perf test: Add entry to test cpu topology")
    Cc: Ian Rogers <irogers@google.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Kan Liang <kan.liang@intel.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lore.kernel.org/lkml/822f741f06eb25250fb60686cf30a35f447e9e91.1626343282.git.rickyman7@gmail.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 89d1762a4a21468c4a484ec497d98badfcca5b30
Author: Riccardo Mancini <rickyman7@gmail.com>
Date:   Thu Jul 15 18:07:07 2021 +0200

    perf env: Fix sibling_dies memory leak
    
    [ Upstream commit 42db3d9ded555f7148b5695109a7dc8d66f0dde4 ]
    
    ASan reports a memory leak in perf_env while running:
    
      # perf test "41: Session topology"
    
    Caused by sibling_dies not being freed.
    
    This patch adds the required free.
    
    Fixes: acae8b36cded0ee6 ("perf header: Add die information in CPU topology")
    Signed-off-by: Riccardo Mancini <rickyman7@gmail.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lore.kernel.org/lkml/2140d0b57656e4eb9021ca9772250c24c032924b.1626343282.git.rickyman7@gmail.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fd335143befbaa8acd469e69881b902b19264bc8
Author: Riccardo Mancini <rickyman7@gmail.com>
Date:   Thu Jul 15 18:07:06 2021 +0200

    perf probe: Fix dso->nsinfo refcounting
    
    [ Upstream commit dedeb4be203b382ba7245d13079bc3b0f6d40c65 ]
    
    ASan reports a memory leak of nsinfo during the execution of:
    
     # perf test "31: Lookup mmap thread".
    
    The leak is caused by a refcounted variable being replaced without
    dropping the refcount.
    
    This patch makes sure that the refcnt of nsinfo is decreased whenever
    a refcounted variable is replaced with a new value.
    
    Signed-off-by: Riccardo Mancini <rickyman7@gmail.com>
    Fixes: 544abd44c7064c8a ("perf probe: Allow placing uprobes in alternate namespaces.")
    Cc: Ian Rogers <irogers@google.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Krister Johansen <kjlx@templeofstupid.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lore.kernel.org/lkml/55223bc8821b34ccb01f92ef1401c02b6a32e61f.1626343282.git.rickyman7@gmail.com
    [ Split from a larger patch ]
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6513dee46f809de5a007ea416c0ba2c407914fd1
Author: Riccardo Mancini <rickyman7@gmail.com>
Date:   Thu Jul 15 18:07:06 2021 +0200

    perf map: Fix dso->nsinfo refcounting
    
    [ Upstream commit 2d6b74baa7147251c30a46c4996e8cc224aa2dc5 ]
    
    ASan reports a memory leak of nsinfo during the execution of
    
      # perf test "31: Lookup mmap thread"
    
    The leak is caused by a refcounted variable being replaced without
    dropping the refcount.
    
    This patch makes sure that the refcnt of nsinfo is decreased whenever a
    refcounted variable is replaced with a new value.
    
    Signed-off-by: Riccardo Mancini <rickyman7@gmail.com>
    Fixes: bf2e710b3cb8445c ("perf maps: Lookup maps in both intitial mountns and inner mountns.")
    Cc: Ian Rogers <irogers@google.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Krister Johansen <kjlx@templeofstupid.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lore.kernel.org/lkml/55223bc8821b34ccb01f92ef1401c02b6a32e61f.1626343282.git.rickyman7@gmail.com
    [ Split from a larger patch ]
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ff9fc81fa8842cd884b4254cd482f12541183def
Author: Casey Chen <cachen@purestorage.com>
Date:   Wed Jul 7 14:14:32 2021 -0700

    nvme-pci: do not call nvme_dev_remove_admin from nvme_remove
    
    [ Upstream commit 251ef6f71be2adfd09546a26643426fe62585173 ]
    
    nvme_dev_remove_admin could free dev->admin_q and the admin_tagset
    while they are being accessed by nvme_dev_disable(), which can be called
    by nvme_reset_work via nvme_remove_dead_ctrl.
    
    Commit cb4bfda62afa ("nvme-pci: fix hot removal during error handling")
    intended to avoid requests being stuck on a removed controller by killing
    the admin queue. But the later fix c8e9e9b7646e ("nvme-pci: unquiesce
    admin queue on shutdown"), together with nvme_dev_disable(dev, true)
    right before nvme_dev_remove_admin() could help dispatch requests and
    fail them early, so we don't need nvme_dev_remove_admin() any more.
    
    Fixes: cb4bfda62afa ("nvme-pci: fix hot removal during error handling")
    Signed-off-by: Casey Chen <cachen@purestorage.com>
    Reviewed-by: Keith Busch <kbusch@kernel.org>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d029df83c61a720ae81c42acba193ce498d9562f
Author: Shahjada Abul Husain <shahjada@chelsio.com>
Date:   Thu Jul 8 21:51:56 2021 +0530

    cxgb4: fix IRQ free race during driver unload
    
    [ Upstream commit 015fe6fd29c4b9ac0f61b8c4455ef88e6018b9cc ]
    
    IRQs are requested during driver's ndo_open() and then later
    freed up in disable_interrupts() during driver unload.
    A race exists where driver can set the CXGB4_FULL_INIT_DONE
    flag in ndo_open() after the disable_interrupts() in driver
    unload path checks it, and hence misses calling free_irq().
    
    Fix by unregistering netdevice first and sync with driver's
    ndo_open(). This ensures disable_interrupts() checks the flag
    correctly and frees up the IRQs properly.
    
    Fixes: b37987e8db5f ("cxgb4: Disable interrupts and napi before unregistering netdev")
    Signed-off-by: Shahjada Abul Husain <shahjada@chelsio.com>
    Signed-off-by: Raju Rangoju <rajur@chelsio.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ae9b64434441e7d2fca1a7f623e15f289d9a8021
Author: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Date:   Thu Jul 1 10:27:51 2021 +0200

    pwm: sprd: Ensure configuring period and duty_cycle isn't wrongly skipped
    
    [ Upstream commit 65e2e6c1c20104ed19060a38f4edbf14e9f9a9a5 ]
    
    As the last call to sprd_pwm_apply() might have exited early if
    state->enabled was false, the values for period and duty_cycle stored in
    pwm->state might not have been written to hardware and it must be
    ensured that they are configured before enabling the PWM.
    
    Fixes: 8aae4b02e8a6 ("pwm: sprd: Add Spreadtrum PWM support")
    Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a37ca2a076ec7c6869824c33c3f15aab5fa16720
Author: Hangbin Liu <liuhangbin@gmail.com>
Date:   Wed Jul 7 16:15:30 2021 +0800

    selftests: icmp_redirect: IPv6 PMTU info should be cleared after redirect
    
    [ Upstream commit 0e02bf5de46ae30074a2e1a8194a422a84482a1a ]
    
    After redirecting, it's already a new path. So the old PMTU info should
    be cleared. The IPv6 test "mtu exception plus redirect" should only
    has redirect info without old PMTU.
    
    The IPv4 test can not be changed because of legacy.
    
    Fixes: ec8105352869 ("selftests: Add redirect tests")
    Signed-off-by: Hangbin Liu <liuhangbin@gmail.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 05364a2794fb56aeaf072f9ac1cd4db15c7196d2
Author: Hangbin Liu <liuhangbin@gmail.com>
Date:   Wed Jul 7 16:15:29 2021 +0800

    selftests: icmp_redirect: remove from checking for IPv6 route get
    
    [ Upstream commit 24b671aad4eae423e1abf5b7f08d9a5235458b8d ]
    
    If the kernel doesn't enable option CONFIG_IPV6_SUBTREES, the RTA_SRC
    info will not be exported to userspace in rt6_fill_node(). And ip cmd will
    not print "from ::" to the route output. So remove this check.
    
    Fixes: ec8105352869 ("selftests: Add redirect tests")
    Signed-off-by: Hangbin Liu <liuhangbin@gmail.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 7f4848229e91d508102b30396b8a1b710ac23637
Author: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Date:   Tue Jul 6 11:13:35 2021 +0200

    ipv6: fix 'disable_policy' for fwd packets
    
    [ Upstream commit ccd27f05ae7b8ebc40af5b004e94517a919aa862 ]
    
    The goal of commit df789fe75206 ("ipv6: Provide ipv6 version of
    "disable_policy" sysctl") was to have the disable_policy from ipv4
    available on ipv6.
    However, it's not exactly the same mechanism. On IPv4, all packets coming
    from an interface, which has disable_policy set, bypass the policy check.
    For ipv6, this is done only for local packets, ie for packets destinated to
    an address configured on the incoming interface.
    
    Let's align ipv6 with ipv4 so that the 'disable_policy' sysctl has the same
    effect for both protocols.
    
    My first approach was to create a new kind of route cache entries, to be
    able to set DST_NOPOLICY without modifying routes. This would have added a
    lot of code. Because the local delivery path is already handled, I choose
    to focus on the forwarding path to minimize code churn.
    
    Fixes: df789fe75206 ("ipv6: Provide ipv6 version of "disable_policy" sysctl")
    Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c67fb96f54314161c6f5ac2d8cbc5451dc56c468
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Thu Jul 1 22:18:24 2021 +0200

    gve: Fix an error handling path in 'gve_probe()'
    
    [ Upstream commit 2342ae10d1272d411a468a85a67647dd115b344f ]
    
    If the 'register_netdev() call fails, we must release the resources
    allocated by the previous 'gve_init_priv()' call, as already done in the
    remove function.
    
    Add a new label and the missing 'gve_teardown_priv_resources()' in the
    error handling path.
    
    Fixes: 893ce44df565 ("gve: Add basic driver framework for Compute Engine Virtual NIC")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Reviewed-by: Catherine Sullivan <csully@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e33da4eeaa35c890d17b1b1007f2a1e95bc85af7
Author: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
Date:   Fri Jun 11 22:42:17 2021 +0000

    igb: Fix position of assignment to *ring
    
    [ Upstream commit 382a7c20d9253bcd5715789b8179528d0f3de72c ]
    
    Assignment to *ring should be done after correctness check of the
    argument queue.
    
    Fixes: 91db364236c8 ("igb: Refactor igb_configure_cbs()")
    Signed-off-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
    Acked-by: Vinicius Costa Gomes <vinicius.gomes@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 7dd8977736181b1fe00befe5735efea2e83fc8ff
Author: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Date:   Thu Apr 22 10:19:23 2021 +0000

    igb: Check if num of q_vectors is smaller than max before array access
    
    [ Upstream commit 6c19d772618fea40d9681f259368f284a330fd90 ]
    
    Ensure that the adapter->q_vector[MAX_Q_VECTORS] array isn't accessed
    beyond its size. It was fixed by using a local variable num_q_vectors
    as a limit for loop index, and ensure that num_q_vectors is not bigger
    than MAX_Q_VECTORS.
    
    Fixes: 047e0030f1e6 ("igb: add new data structure for handling interrupts and NAPI")
    Signed-off-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
    Reviewed-by: Grzegorz Siwik <grzegorz.siwik@intel.com>
    Reviewed-by: Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
    Reviewed-by: Slawomir Laba <slawomirx.laba@intel.com>
    Reviewed-by: Sylwester Dziedziuch <sylwesterx.dziedziuch@intel.com>
    Reviewed-by: Mateusz Palczewski <mateusz.placzewski@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 d3d7cceee84101aab484d5e4f2b3e603580a4126
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Wed Jun 16 07:53:02 2021 +0200

    iavf: Fix an error handling path in 'iavf_probe()'
    
    [ Upstream commit af30cbd2f4d6d66a9b6094e0aa32420bc8b20e08 ]
    
    If an error occurs after a 'pci_enable_pcie_error_reporting()' call, it
    must be undone by a corresponding 'pci_disable_pcie_error_reporting()'
    call, as already done in the remove function.
    
    Fixes: 5eae00c57f5e ("i40evf: main driver core")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7a13a8a8a5fb853a26dd51274f6dc6d321bb0a0e
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Wed Jun 16 07:05:53 2021 +0200

    e1000e: Fix an error handling path in 'e1000_probe()'
    
    [ Upstream commit 4589075608420bc49fcef6e98279324bf2bb91ae ]
    
    If an error occurs after a 'pci_enable_pcie_error_reporting()' call, it
    must be undone by a corresponding 'pci_disable_pcie_error_reporting()'
    call, as already done in the remove function.
    
    Fixes: 111b9dc5c981 ("e1000e: add aer support")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Acked-by: Sasha Neftin <sasha.neftin@intel.com>
    Tested-by: Dvora Fuxbrumer <dvorax.fuxbrumer@linux.intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9fc381db758377db4000c58a86911d3c60489d4e
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Wed Jun 16 07:00:36 2021 +0200

    fm10k: Fix an error handling path in 'fm10k_probe()'
    
    [ Upstream commit e85e14d68f517ef12a5fb8123fff65526b35b6cd ]
    
    If an error occurs after a 'pci_enable_pcie_error_reporting()' call, it
    must be undone by a corresponding 'pci_disable_pcie_error_reporting()'
    call, as already done in the remove function.
    
    Fixes: 19ae1b3fb99c ("fm10k: Add support for PCI power management and error handling")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5d6a04927b088d651749853744828545f862fc17
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Sat Jun 12 22:08:33 2021 +0200

    igb: Fix an error handling path in 'igb_probe()'
    
    [ Upstream commit fea03b1cebd653cd095f2e9a58cfe1c85661c363 ]
    
    If an error occurs after a 'pci_enable_pcie_error_reporting()' call, it
    must be undone by a corresponding 'pci_disable_pcie_error_reporting()'
    call, as already done in the remove function.
    
    Fixes: 40a914fa72ab ("igb: Add support for pci-e Advanced Error Reporting")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    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 cddd53237de87e10ecb5496ffa92f6ac41c30d59
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Sat Jun 12 22:00:05 2021 +0200

    igc: Fix an error handling path in 'igc_probe()'
    
    [ Upstream commit c6bc9e5ce5d37cb3e6b552f41b92a193db1806ab ]
    
    If an error occurs after a 'pci_enable_pcie_error_reporting()' call, it
    must be undone by a corresponding 'pci_disable_pcie_error_reporting()'
    call, as already done in the remove function.
    
    Fixes: c9a11c23ceb6 ("igc: Add netdev")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Tested-by: Dvora Fuxbrumer <dvorax.fuxbrumer@linux.intel.com>
    Acked-by: Sasha Neftin <sasha.neftin@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 47f69d8828e7af878add11fb628898c12d936d34
Author: Sasha Neftin <sasha.neftin@intel.com>
Date:   Sun Nov 10 16:05:20 2019 +0200

    igc: Prefer to use the pci_release_mem_regions method
    
    [ Upstream commit faf4dd52e9e34a36254a6ad43369064b6928d504 ]
    
    Use the pci_release_mem_regions method instead of the
    pci_release_selected_regions method
    
    Signed-off-by: Sasha Neftin <sasha.neftin@intel.com>
    Tested-by: Aaron Brown <aaron.f.brown@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 83b2d55a512a70b8bc7c320bec14a3d2335df9df
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Sat Jun 12 15:46:09 2021 +0200

    ixgbe: Fix an error handling path in 'ixgbe_probe()'
    
    [ Upstream commit dd2aefcd5e37989ae5f90afdae44bbbf3a2990da ]
    
    If an error occurs after a 'pci_enable_pcie_error_reporting()' call, it
    must be undone by a corresponding 'pci_disable_pcie_error_reporting()'
    call, as already done in the remove function.
    
    Fixes: 6fabd715e6d8 ("ixgbe: Implement PCIe AER support")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    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 ba4fbb68fcfe06f0c43d2db4b1448b854c706bb9
Author: Tom Rix <trix@redhat.com>
Date:   Fri May 21 12:50:19 2021 -0700

    igc: change default return of igc_read_phy_reg()
    
    [ Upstream commit 05682a0a61b6cbecd97a0f37f743b2cbfd516977 ]
    
    Static analysis reports this problem
    
    igc_main.c:4944:20: warning: The left operand of '&'
      is a garbage value
        if (!(phy_data & SR_1000T_REMOTE_RX_STATUS) &&
              ~~~~~~~~ ^
    
    phy_data is set by the call to igc_read_phy_reg() only if
    there is a read_reg() op, else it is unset and a 0 is
    returned.  Change the return to -EOPNOTSUPP.
    
    Fixes: 208983f099d9 ("igc: Add watchdog")
    Signed-off-by: Tom Rix <trix@redhat.com>
    Tested-by: Dvora Fuxbrumer <dvorax.fuxbrumer@linux.intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 88e0720133d42d34851c8721cf5f289a50a8710f
Author: Vinicius Costa Gomes <vinicius.gomes@intel.com>
Date:   Thu May 13 17:31:04 2021 -0700

    igb: Fix use-after-free error during reset
    
    [ Upstream commit 7b292608db23ccbbfbfa50cdb155d01725d7a52e ]
    
    Cleans the next descriptor to watch (next_to_watch) when cleaning the
    TX ring.
    
    Failure to do so can cause invalid memory accesses. If igb_poll() runs
    while the controller is reset this can lead to the driver try to free
    a skb that was already freed.
    
    (The crash is harder to reproduce with the igb driver, but the same
    potential problem exists as the code is identical to igc)
    
    Fixes: 7cc6fd4c60f2 ("igb: Don't bother clearing Tx buffer_info in igb_clean_tx_ring")
    Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
    Reported-by: Erez Geva <erez.geva.ext@siemens.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 a9508e0edfe369ac95d0825bcdca976436ce780f
Author: Vinicius Costa Gomes <vinicius.gomes@intel.com>
Date:   Thu May 13 17:31:03 2021 -0700

    igc: Fix use-after-free error during reset
    
    [ Upstream commit 56ea7ed103b46970e171eb1c95916f393d64eeff ]
    
    Cleans the next descriptor to watch (next_to_watch) when cleaning the
    TX ring.
    
    Failure to do so can cause invalid memory accesses. If igc_poll() runs
    while the controller is being reset this can lead to the driver try to
    free a skb that was already freed.
    
    Log message:
    
     [  101.525242] refcount_t: underflow; use-after-free.
     [  101.525251] WARNING: CPU: 1 PID: 646 at lib/refcount.c:28 refcount_warn_saturate+0xab/0xf0
     [  101.525259] Modules linked in: sch_etf(E) sch_mqprio(E) rfkill(E) intel_rapl_msr(E) intel_rapl_common(E)
     x86_pkg_temp_thermal(E) intel_powerclamp(E) coretemp(E) binfmt_misc(E) kvm_intel(E) kvm(E) irqbypass(E) crc32_pclmul(E)
     ghash_clmulni_intel(E) aesni_intel(E) mei_wdt(E) libaes(E) crypto_simd(E) cryptd(E) glue_helper(E) snd_hda_codec_hdmi(E)
     rapl(E) intel_cstate(E) snd_hda_intel(E) snd_intel_dspcfg(E) sg(E) soundwire_intel(E) intel_uncore(E) at24(E)
     soundwire_generic_allocation(E) iTCO_wdt(E) soundwire_cadence(E) intel_pmc_bxt(E) serio_raw(E) snd_hda_codec(E)
     iTCO_vendor_support(E) watchdog(E) snd_hda_core(E) snd_hwdep(E) snd_soc_core(E) snd_compress(E) snd_pcsp(E)
     soundwire_bus(E) snd_pcm(E) evdev(E) snd_timer(E) mei_me(E) snd(E) soundcore(E) mei(E) configfs(E) ip_tables(E) x_tables(E)
     autofs4(E) ext4(E) crc32c_generic(E) crc16(E) mbcache(E) jbd2(E) sd_mod(E) t10_pi(E) crc_t10dif(E) crct10dif_generic(E)
     i915(E) ahci(E) libahci(E) ehci_pci(E) igb(E) xhci_pci(E) ehci_hcd(E)
     [  101.525303]  drm_kms_helper(E) dca(E) xhci_hcd(E) libata(E) crct10dif_pclmul(E) cec(E) crct10dif_common(E) tsn(E) igc(E)
     e1000e(E) ptp(E) i2c_i801(E) crc32c_intel(E) psmouse(E) i2c_algo_bit(E) i2c_smbus(E) scsi_mod(E) lpc_ich(E) pps_core(E)
     usbcore(E) drm(E) button(E) video(E)
     [  101.525318] CPU: 1 PID: 646 Comm: irq/37-enp7s0-T Tainted: G            E     5.10.30-rt37-tsn1-rt-ipipe #ipipe
     [  101.525320] Hardware name: SIEMENS AG SIMATIC IPC427D/A5E31233588, BIOS V17.02.09 03/31/2017
     [  101.525322] RIP: 0010:refcount_warn_saturate+0xab/0xf0
     [  101.525325] Code: 05 31 48 44 01 01 e8 f0 c6 42 00 0f 0b c3 80 3d 1f 48 44 01 00 75 90 48 c7 c7 78 a8 f3 a6 c6 05 0f 48
     44 01 01 e8 d1 c6 42 00 <0f> 0b c3 80 3d fe 47 44 01 00 0f 85 6d ff ff ff 48 c7 c7 d0 a8 f3
     [  101.525327] RSP: 0018:ffffbdedc0917cb8 EFLAGS: 00010286
     [  101.525329] RAX: 0000000000000000 RBX: ffff98fd6becbf40 RCX: 0000000000000001
     [  101.525330] RDX: 0000000000000001 RSI: ffffffffa6f2700c RDI: 00000000ffffffff
     [  101.525332] RBP: ffff98fd6becc14c R08: ffffffffa7463d00 R09: ffffbdedc0917c50
     [  101.525333] R10: ffffffffa74c3578 R11: 0000000000000034 R12: 00000000ffffff00
     [  101.525335] R13: ffff98fd6b0b1000 R14: 0000000000000039 R15: ffff98fd6be35c40
     [  101.525337] FS:  0000000000000000(0000) GS:ffff98fd6e240000(0000) knlGS:0000000000000000
     [  101.525339] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     [  101.525341] CR2: 00007f34135a3a70 CR3: 0000000150210003 CR4: 00000000001706e0
     [  101.525343] Call Trace:
     [  101.525346]  sock_wfree+0x9c/0xa0
     [  101.525353]  unix_destruct_scm+0x7b/0xa0
     [  101.525358]  skb_release_head_state+0x40/0x90
     [  101.525362]  skb_release_all+0xe/0x30
     [  101.525364]  napi_consume_skb+0x57/0x160
     [  101.525367]  igc_poll+0xb7/0xc80 [igc]
     [  101.525376]  ? sched_clock+0x5/0x10
     [  101.525381]  ? sched_clock_cpu+0xe/0x100
     [  101.525385]  net_rx_action+0x14c/0x410
     [  101.525388]  __do_softirq+0xe9/0x2f4
     [  101.525391]  __local_bh_enable_ip+0xe3/0x110
     [  101.525395]  ? irq_finalize_oneshot.part.47+0xe0/0xe0
     [  101.525398]  irq_forced_thread_fn+0x6a/0x80
     [  101.525401]  irq_thread+0xe8/0x180
     [  101.525403]  ? wake_threads_waitq+0x30/0x30
     [  101.525406]  ? irq_thread_check_affinity+0xd0/0xd0
     [  101.525408]  kthread+0x183/0x1a0
     [  101.525412]  ? kthread_park+0x80/0x80
     [  101.525415]  ret_from_fork+0x22/0x30
    
    Fixes: 13b5b7fd6a4a ("igc: Add support for Tx/Rx rings")
    Reported-by: Erez Geva <erez.geva.ext@siemens.com>
    Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
    Tested-by: Dvora Fuxbrumer <dvorax.fuxbrumer@linux.intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
