Skip to content
  1. Jul 28, 2021
    • Greg Kroah-Hartman's avatar
      Linux 4.19.199 · a89b48fe
      Greg Kroah-Hartman authored
      
      
      Link: https://lore.kernel.org/r/20210726153832.339431936@linuxfoundation.org
      Tested-by: default avatarShuah Khan <skhan@linuxfoundation.org>
      Link: https://lore.kernel.org/r/20210727071938.046014616@linuxfoundation.org
      Tested-by: default avatarPavel Machek (CIP) <pavel@denx.de>
      Tested-by: default avatarJon Hunter <jonathanh@nvidia.com>
      Link: https://lore.kernel.org/r/20210727112108.341674321@linuxfoundation.org
      Tested-by: default avatarJon Hunter <jonathanh@nvidia.com>
      Tested-by: default avatarSudip Mukherjee <sudip.mukherjee@codethink.co.uk>
      Tested-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Tested-by: default avatarPavel Machek (CIP) <pavel@denx.de>
      Tested-by: default avatarLinux Kernel Functional Testing <lkft@linaro.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      v4.19.199
      a89b48fe
    • Mathias Nyman's avatar
      xhci: add xhci_get_virt_ep() helper · 80050dfe
      Mathias Nyman authored
      [commit b1adc42d
      
       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: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
      Link: https://lore.kernel.org/r/20210129130044.206855-6-mathias.nyman@linux.intel.com
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarCarsten Schmid <carsten_schmid@mentor.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      80050dfe
    • Christophe JAILLET's avatar
      spi: spi-fsl-dspi: Fix a resource leak in an error handling path · 00450ed0
      Christophe JAILLET authored
      commit 680ec054 upstream
      
      'dspi_request_dma()' should be undone by a 'dspi_release_dma()' call in the
      error handling path of the probe function, as already done in the remove
      function
      
      Fixes: 90ba3703
      
       ("spi: spi-fsl-dspi: Add DMA support for Vybrid")
      Signed-off-by: default avatarChristophe JAILLET <christophe.jaillet@wanadoo.fr>
      Reviewed-by: default avatarVladimir Oltean <olteanv@gmail.com>
      Link: https://lore.kernel.org/r/d51caaac747277a1099ba8dea07acd85435b857e.1620587472.git.christophe.jaillet@wanadoo.fr
      Signed-off-by: default avatarMark Brown <broonie@kernel.org>
      [sudip: adjust context]
      Signed-off-by: default avatarSudip Mukherjee <sudipm.mukherjee@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      00450ed0
    • Evan Quan's avatar
      PCI: Mark AMD Navi14 GPU ATS as broken · a9411055
      Evan Quan authored
      commit e8946a53 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:
      
        a2da5d8c ("PCI: Mark AMD Raven iGPU ATS as broken in some platforms")
        45beb31d ("PCI: Mark AMD Navi10 GPU rev 0x00 ATS as broken")
        5e89cd30
      
       ("PCI: Mark AMD Navi14 GPU rev 0xc5 ATS as broken")
      
      Suggested-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      Link: https://lore.kernel.org/r/20210602021255.939090-1-evan.quan@amd.com
      Signed-off-by: default avatarEvan Quan <evan.quan@amd.com>
      Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
      Reviewed-by: default avatarKrzysztof Wilczyński <kw@linux.com>
      Cc: stable@vger.kernel.org
      [sudip: adjust context]
      Signed-off-by: default avatarSudip Mukherjee <sudipm.mukherjee@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      a9411055
    • David Sterba's avatar
      btrfs: compression: don't try to compress if we don't have enough pages · a91010f5
      David Sterba authored
      commit f2165627
      
       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: default avatarDavid Sterba <dsterba@suse.com>
      [sudip: adjust context]
      Signed-off-by: default avatarSudip Mukherjee <sudipm.mukherjee@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      a91010f5
    • Stephan Gerhold's avatar
      iio: accel: bma180: Fix BMA25x bandwidth register values · e2762950
      Stephan Gerhold authored
      commit 8090d674 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: 2017cff2
      
       ("iio:bma180: Add BMA250 chip support")
      Signed-off-by: default avatarStephan Gerhold <stephan@gerhold.net>
      Reviewed-by: default avatarLinus 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: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
      [sudip: adjust context]
      Signed-off-by: default avatarSudip Mukherjee <sudipm.mukherjee@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      e2762950
    • Linus Walleij's avatar
      iio: accel: bma180: Use explicit member assignment · c1fd285f
      Linus Walleij authored
      commit 9436abc4
      
       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: default avatarLinus Walleij <linus.walleij@linaro.org>
      Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
      Signed-off-by: default avatarSudip Mukherjee <sudipm.mukherjee@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      c1fd285f
    • Doug Berger's avatar
      net: bcmgenet: ensure EXT_ENERGY_DET_MASK is clear · 8810e8e4
      Doug Berger authored
      commit 5a3c680a 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: 1c1008c7
      
       ("net: bcmgenet: add main driver file")
      Signed-off-by: default avatarDoug Berger <opendmb@gmail.com>
      Acked-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      8810e8e4
    • Marek Behún's avatar
      net: dsa: mv88e6xxx: use correct .stats_set_histogram() on Topaz · a114b7c6
      Marek Behún authored
      commit 11527f3c upstream.
      
      Commit 40cff8fc
      
       ("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: default avatarMarek Behún <kabel@kernel.org>
      Fixes: 40cff8fc
      
       ("net: dsa: mv88e6xxx: Fix stats histogram mode")
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      a114b7c6
    • Sean Christopherson's avatar
      KVM: Use kvm_pfn_t for local PFN variable in hva_to_pfn_remapped() · fbb7f6a0
      Sean Christopherson authored
      commit a9545779 upstream.
      
      Use kvm_pfn_t, a.k.a. u64, for the local 'pfn' variable when retrieving
      a so called "remapped" hva/pfn pair.  In theory, the hva could resolve to
      a pfn in high memory on a 32-bit kernel.
      
      This bug was inadvertantly exposed by commit bd2fae8d ("KVM: do not
      assume PTE is writable after follow_pfn"), which added an error PFN value
      to the mix, causing gcc to comlain about overflowing the unsigned long.
      
        arch/x86/kvm/../../../virt/kvm/kvm_main.c: In function ‘hva_to_pfn_remapped’:
        include/linux/kvm_host.h:89:30: error: conversion from ‘long long unsigned int’
                                        to ‘long unsigned int’ changes value from
                                        ‘9218868437227405314’ to ‘2’ [-Werror=overflow]
         89 | #define KVM_PFN_ERR_RO_FAULT (KVM_PFN_ERR_MASK + 2)
            |                              ^
      virt/kvm/kvm_main.c:1935:9: note: in expansion of macro ‘KVM_PFN_ERR_RO_FAULT’
      
      Cc: stable@vger.kernel.org
      Fixes: add6a0cd
      
       ("KVM: MMU: try to fix up page faults before giving up")
      Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
      Message-Id: <20210208201940.1258328-1-seanjc@google.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: default avatarOvidiu Panait <ovidiu.panait@windriver.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      fbb7f6a0
    • Nicholas Piggin's avatar
      KVM: do not allow mapping valid but non-reference-counted pages · 11777746
      Nicholas Piggin authored
      commit f8be156b
      
       upstream.
      
      It's possible to create a region which maps valid but non-refcounted
      pages (e.g., tail pages of non-compound higher order allocations). These
      host pages can then be returned by gfn_to_page, gfn_to_pfn, etc., family
      of APIs, which take a reference to the page, which takes it from 0 to 1.
      When the reference is dropped, this will free the page incorrectly.
      
      Fix this by only taking a reference on valid pages if it was non-zero,
      which indicates it is participating in normal refcounting (and can be
      released with put_page).
      
      This addresses CVE-2021-22543.
      
      Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
      Tested-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: default avatarOvidiu Panait <ovidiu.panait@windriver.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      11777746
    • Paolo Bonzini's avatar
      KVM: do not assume PTE is writable after follow_pfn · 918e0039
      Paolo Bonzini authored
      commit bd2fae8d upstream.
      
      In order to convert an HVA to a PFN, KVM usually tries to use
      the get_user_pages family of functinso.  This however is not
      possible for VM_IO vmas; in that case, KVM instead uses follow_pfn.
      
      In doing this however KVM loses the information on whether the
      PFN is writable.  That is usually not a problem because the main
      use of VM_IO vmas with KVM is for BARs in PCI device assignment,
      however it is a bug.  To fix it, use follow_pte and check pte_write
      while under the protection of the PTE lock.  The information can
      be used to fail hva_to_pfn_remapped or passed back to the
      caller via *writable.
      
      Usage of follow_pfn was introduced in commit add6a0cd ("KVM: MMU: try to fix
      up page faults before giving up", 2016-07-05); however, even older version
      have the same issue, all the way back to commit 2e2e3738 ("KVM:
      Handle vma regions with no backing page", 2008-07-20), as they also did
      not check whether the PFN was writable.
      
      Fixes: 2e2e3738
      
       ("KVM: Handle vma regions with no backing page")
      Reported-by: default avatarDavid Stevens <stevensd@google.com>
      Cc: 3pvd@google.com
      Cc: Jann Horn <jannh@google.com>
      Cc: Jason Gunthorpe <jgg@ziepe.ca>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      [OP: backport to 4.19, adjust follow_pte() -> follow_pte_pmd()]
      Signed-off-by: default avatarOvidiu Panait <ovidiu.panait@windriver.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      918e0039
    • Charles Baylis's avatar
      drm: Return -ENOTTY for non-drm ioctls · 020a44cc
      Charles Baylis authored
      commit 3abab27c
      
       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: default avatarCharles Baylis <cb-kernel@fishzet.co.uk>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Link: https://patchwork.freedesktop.org/patch/msgid/YPG3IBlzaMhfPqCr@stando.fishzet.co.uk
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      020a44cc
    • Greg Kroah-Hartman's avatar
      nds32: fix up stack guard gap · acb8e830
      Greg Kroah-Hartman authored
      commit c453db6c upstream.
      
      Commit 1be7107f
      
       ("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: default avatariLifetruth <yixiaonn@gmail.com>
      Acked-by: default avatarHugh Dickins <hughd@google.com>
      Link: https://lore.kernel.org/r/20210629104024.2293615-1-gregkh@linuxfoundation.org
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      acb8e830
    • Peter Collingbourne's avatar
      selftest: use mmap instead of posix_memalign to allocate memory · f96dfc7c
      Peter Collingbourne authored
      commit 0db282ba 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: c47174fc
      
       ("userfaultfd: selftest")
      Co-developed-by: default avatarLokesh Gidra <lokeshgidra@google.com>
      Signed-off-by: default avatarLokesh Gidra <lokeshgidra@google.com>
      Signed-off-by: default avatarPeter Collingbourne <pcc@google.com>
      Reviewed-by: default avatarCatalin 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: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f96dfc7c
    • Markus Boehme's avatar
      ixgbe: Fix packet corruption due to missing DMA sync · 08c2d7c8
      Markus Boehme authored
      commit 09cfae9f 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: 0c5661ec
      
       ("ixgbe: fix crash in build_skb Rx code path")
      Signed-off-by: default avatarMarkus Boehme <markubo@amazon.com>
      Tested-by: default avatarTony Brelinski <tonyx.brelinski@intel.com>
      Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      08c2d7c8
    • Gustavo A. R. Silva's avatar
      media: ngene: Fix out-of-bounds bug in ngene_command_config_free_buf() · ec731c6e
      Gustavo A. R. Silva authored
      commit 8d4abca9 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: dae52d00
      
       ("V4L/DVB: ngene: Initial check-in")
      Cc: stable@vger.kernel.org
      Reported-by: default avatarkernel test robot <lkp@intel.com>
      Reviewed-by: default avatarKees Cook <keescook@chromium.org>
      Signed-off-by: default avatarGustavo A. R. Silva <gustavoars@kernel.org>
      Link: https://lore.kernel.org/linux-hardening/20210420001631.GA45456@embeddedor/
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      ec731c6e
    • Haoran Luo's avatar
      tracing: Fix bug in rb_per_cpu_empty() that might cause deadloop. · 6a99bfee
      Haoran Luo authored
      commit 67f0d6d9 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
      (2734d6c1), 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: bf41a158
      
       ("ring-buffer: make reentrant")
      Suggested-by: default avatarLinus Torvalds <torvalds@linuxfoundation.org>
      Signed-off-by: default avatarHaoran Luo <www@aegistudio.net>
      Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      6a99bfee
    • Minas Harutyunyan's avatar
      usb: dwc2: gadget: Fix sending zero length packet in DDMA mode. · ba176c1b
      Minas Harutyunyan authored
      commit d53dc388 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: f71b5e25
      
       ("usb: dwc2: gadget: fix zero length packet transfers")
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: default avatarMinas Harutyunyan <Minas.Harutyunyan@synopsys.com>
      Link: https://lore.kernel.org/r/967bad78c55dd2db1c19714eee3d0a17cf99d74a.1626777738.git.Minas.Harutyunyan@synopsys.com
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      ba176c1b
    • John Keeping's avatar
      USB: serial: cp210x: add ID for CEL EM3588 USB ZigBee stick · 7b9ff81c
      John Keeping authored
      commit d6a206e6
      
       upstream.
      
      Add the USB serial device ID for the CEL ZigBee EM3588 radio stick.
      
      Signed-off-by: default avatarJohn Keeping <john@metanate.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      7b9ff81c
    • Ian Ray's avatar
      USB: serial: cp210x: fix comments for GE CS1000 · b5084133
      Ian Ray authored
      commit e9db418d upstream.
      
      Fix comments for GE CS1000 CP210x USB ID assignments.
      
      Fixes: 42213a01
      
       ("USB: serial: cp210x: add some more GE USB IDs")
      Signed-off-by: default avatarIan Ray <ian.ray@ge.com>
      Signed-off-by: default avatarSebastian Reichel <sebastian.reichel@collabora.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b5084133
    • Marco De Marco's avatar
      USB: serial: option: add support for u-blox LARA-R6 family · fceeb4e8
      Marco De Marco authored
      commit 94b619a0
      
       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: default avatarMarco De Marco <marco.demarco@posteo.net>
      Link: https://lore.kernel.org/r/49260184.kfMIbaSn9k@mars
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      fceeb4e8
    • Yoshihiro Shimoda's avatar
      usb: renesas_usbhs: Fix superfluous irqs happen after usb_pkt_pop() · f9a8c7de
      Yoshihiro Shimoda authored
      commit 5719df24 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 3af32605 ("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: 2743e7f9
      
       ("usb: renesas_usbhs: fix the usb_pkt_pop()")
      Cc: <stable@vger.kernel.org> # v4.4+
      Signed-off-by: default avatarYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
      Link: https://lore.kernel.org/r/20210624122039.596528-1-yoshihiro.shimoda.uh@renesas.com
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f9a8c7de
    • Mark Tomlinson's avatar
      usb: max-3421: Prevent corruption of freed memory · 51fc12f4
      Mark Tomlinson authored
      commit b5fdf5c6 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: 2d53139f
      
       ("Add support for using a MAX3421E chip as a host driver.")
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: default avatarMark Tomlinson <mark.tomlinson@alliedtelesis.co.nz>
      Link: https://lore.kernel.org/r/20210625031456.8632-1-mark.tomlinson@alliedtelesis.co.nz
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      51fc12f4
    • Julian Sikorski's avatar
      USB: usb-storage: Add LaCie Rugged USB3-FW to IGNORE_UAS · 0b515af9
      Julian Sikorski authored
      commit 6abf2fe6
      
       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: default avatarJulian 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: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      0b515af9
    • Mathias Nyman's avatar
      usb: hub: Fix link power management max exit latency (MEL) calculations · 391bbec1
      Mathias Nyman authored
      commit 1bf2761c
      
       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: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
      Link: https://lore.kernel.org/r/20210715150122.1995966-1-mathias.nyman@linux.intel.com
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      391bbec1
    • Mathias Nyman's avatar
      usb: hub: Disable USB 3 device initiated lpm if exit latency is too high · 6deeb1a7
      Mathias Nyman authored
      commit 1b7f56fb
      
       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: default avatarMathias 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: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      6deeb1a7
    • Nicholas Piggin's avatar
      KVM: PPC: Book3S: Fix H_RTAS rets buffer overflow · 0493b10c
      Nicholas Piggin authored
      commit f62f3c20 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: 8e591cb7
      
       ("KVM: PPC: Book3S: Add infrastructure to implement kernel-side RTAS calls")
      Cc: stable@vger.kernel.org # v3.10+
      Reported-by: default avatarAlexey Kardashevskiy <aik@ozlabs.ru>
      Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
      Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      0493b10c
    • Mathias Nyman's avatar
      xhci: Fix lost USB 2 remote wake · e6490342
      Mathias Nyman authored
      commit 72f68bf5
      
       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: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
      Link: https://lore.kernel.org/r/20210715150651.1996099-2-mathias.nyman@linux.intel.com
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      e6490342
    • Takashi Iwai's avatar
      ALSA: sb: Fix potential ABBA deadlock in CSP driver · b6963f63
      Takashi Iwai authored
      commit 1c2b9519
      
       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: default avatarJia-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: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b6963f63
    • Alexander Tsoy's avatar
      ALSA: usb-audio: Add registration quirk for JBL Quantum headsets · 135e4da2
      Alexander Tsoy authored
      commit b0084afd
      
       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: default avatarJakub Fišer <jakub@ufiseru.cz>
      Signed-off-by: default avatarAlexander Tsoy <alexander@tsoy.me>
      Cc: <stable@vger.kernel.org>
      Link: https://lore.kernel.org/r/20210721235605.53741-1-alexander@tsoy.me
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      135e4da2
    • Vasily Gorbik's avatar
      s390/ftrace: fix ftrace_update_ftrace_func implementation · aa2f15f5
      Vasily Gorbik authored
      commit f8c26027 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: 4cc9bed0
      
       ("[S390] cleanup ftrace backend functions")
      Cc: stable@vger.kernel.org
      Reviewed-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
      Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      aa2f15f5
    • Huang Pei's avatar
      Revert "MIPS: add PMD table accounting into MIPS'pmd_alloc_one" · 2e207001
      Huang Pei authored
      This reverts commit 68046cc5 which is
      commit ed914d48 upstream.
      
      Commit b2b29d6d (mm: account PMD tables like PTE tables) is
      introduced between v5.9 and v5.10, so this fix (commit 002d8b39
      
      )
      should NOT apply to any pre-5.10 branch.
      
      Signed-off-by: default avatarHuang Pei <huangpei@loongson.cn>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      2e207001
    • Marcelo Henrique Cerri's avatar
      proc: Avoid mixing integer types in mem_rw() · 66bcd449
      Marcelo Henrique Cerri authored
      [ Upstream commit d238692b
      
       ]
      
      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: default avatarDavid Disseldorp <ddiss@suse.de>
      Signed-off-by: default avatarThadeu Lima de Souza Cascardo <cascardo@canonical.com>
      Signed-off-by: default avatarMarcelo 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: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      66bcd449
    • Maxime Ripard's avatar
      drm/panel: raspberrypi-touchscreen: Prevent double-free · b8000c17
      Maxime Ripard authored
      [ Upstream commit 7bbcb919 ]
      
      The mipi_dsi_device allocated by mipi_dsi_device_register_full() is
      already free'd on release.
      
      Fixes: 2f733d61
      
       ("drm/panel: Add support for the Raspberry Pi 7" Touchscreen.")
      Signed-off-by: default avatarMaxime Ripard <maxime@cerno.tech>
      Reviewed-by: default avatarSam Ravnborg <sam@ravnborg.org>
      Link: https://patchwork.freedesktop.org/patch/msgid/20210720134525.563936-9-maxime@cerno.tech
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      b8000c17
    • Yajun Deng's avatar
      net: sched: cls_api: Fix the the wrong parameter · d6823906
      Yajun Deng authored
      [ Upstream commit 9d85a6f4 ]
      
      The 4th parameter in tc_chain_notify() should be flags rather than seq.
      Let's change it back correctly.
      
      Fixes: 32a4f5ec
      
       ("net: sched: introduce chain object to uapi")
      Signed-off-by: default avatarYajun Deng <yajun.deng@linux.dev>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      d6823906
    • Xin Long's avatar
      sctp: update active_key for asoc when old key is being replaced · 50b57223
      Xin Long authored
      [ Upstream commit 58acd100 ]
      
      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: 1b1e0bc9
      
       ("sctp: add refcnt support for sh_key")
      Reported-by: default avatar <syzbot+b774577370208727d12b@syzkaller.appspotmail.com>
      Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      50b57223
    • Vincent Palatin's avatar
      Revert "USB: quirks: ignore remote wake-up on Fibocom L850-GL LTE modem" · 7ae622aa
      Vincent Palatin authored
      [ Upstream commit f3a1a937 ]
      
      This reverts commit 0bd86049
      
      .
      
      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: default avatarVincent Palatin <vpalatin@chromium.org>
      Link: https://lore.kernel.org/r/20210721092516.2775971-1-vpalatin@chromium.org
      Fixes: 0bd86049
      
       ("USB: quirks: ignore remote wake-up on Fibocom L850-GL LTE modem")
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      7ae622aa
    • Zhihao Cheng's avatar
      nvme-pci: don't WARN_ON in nvme_reset_work if ctrl.state is not RESETTING · 0ac2cafd
      Zhihao Cheng authored
      [ Upstream commit 7764656b ]
      
      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: 82b057ca
      
       ("nvme-pci: fix multiple ctrl removal schedulin")
      Signed-off-by: default avatarZhihao Cheng <chengzhihao1@huawei.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      0ac2cafd
    • Peilin Ye's avatar
      net/sched: act_skbmod: Skip non-Ethernet packets · e4fdca36
      Peilin Ye authored
      [ Upstream commit 727d6a8b ]
      
      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: 86da71b5
      
       ("net_sched: Introduce skbmod action")
      Reviewed-by: default avatarCong Wang <cong.wang@bytedance.com>
      Signed-off-by: default avatarPeilin Ye <peilin.ye@bytedance.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      e4fdca36