1. 10 Jan, 2022 3 commits
    • Rafael J. Wysocki's avatar
      Merge branches 'acpi-x86', 'acpi-pmic' and 'acpi-dptf' · af8fefd7
      Rafael J. Wysocki authored
      Merge x86-specific ACPI updates, PMIC driver ACPI updates and a DPTF
      driver update for 5.17-rc1:
      
       - Rework the handling of device enumeration quirks in the x86-specific
         code and add new quirks for known-broken platforms (Hans de Goede).
      
       - Fix the handling of defective LPAT in the ACPI xpower PMIC driver
         and clean up some definitions of PMIC data structures (Hans de
         Goede).
      
       - Fix outdated comment in the ACPI DPTF driver (Sumeet Pawnikar).
      
      * acpi-x86:
        ACPI / x86: Skip AC and battery devices on x86 Android tablets with broken DSDTs
        ACPI / x86: Introduce an acpi_quirk_skip_acpi_ac_and_battery() helper
        mmc: sdhci-acpi: Use the new soc_intel_is_byt() helper
        mmc: sdhci-acpi: Remove special handling for GPD win/pocket devices
        ACPI / x86: Add PWM2 on the Xiaomi Mi Pad 2 to the always_present list
        ACPI / x86: Add not-present quirk for the PCI0.SDHB.BRC1 device on the GPD win
        ACPI / x86: Allow specifying acpi_device_override_status() quirks by path
        ACPI: Change acpi_device_always_present() into acpi_device_override_status()
        ACPI / x86: Drop PWM2 device on Lenovo Yoga Book from always present table
      
      * acpi-pmic:
        ACPI: PMIC: xpower: Fix _TMP ACPI errors
        ACPI: PMIC: allow drivers to provide a custom lpat_raw_to_temp() function
        ACPI: PMIC: constify all struct intel_pmic_opregion_data declarations
      
      * acpi-dptf:
        ACPI: DPTF: Update device ID in a comment
      af8fefd7
    • Rafael J. Wysocki's avatar
      Merge branches 'acpi-ec' and 'acpi-processor' · 5847d2d2
      Rafael J. Wysocki authored
      Merge ACPI EC driver updates and ACPI processor driver updates for
      5.17-rc1:
      
       - Rework flushing of EC work while suspended to idle and clean up
         the handling of events in the ACPI EC driver (Rafael Wysocki).
      
       - Prohibit ec_sys module parameter write_support from being used
         when the system is locked down (Hans de Goede).
      
       - Make the ACPI processor thermal driver use cpufreq_cpu_get() to
         check for presence of cpufreq policy (Manfred Spraul).
      
       - Avoid unnecessary CPU cache flushing in the ACPI processor idle
         driver (Kirill A. Shutemov).
      
       - Replace kernel.h with the necessary inclusions in the ACPI
         processor driver (Andy Shevchenko).
      
       - Use swap() instead of open coding it in the ACPI processor idle
         driver (Guo Zhengkui).
      
      * acpi-ec:
        ACPI: EC: Mark the ec_sys write_support param as module_param_hw()
        ACPI: EC: Relocate acpi_ec_create_query() and drop acpi_ec_delete_query()
        ACPI: EC: Make the event work state machine visible
        ACPI: EC: Avoid queuing unnecessary work in acpi_ec_submit_event()
        ACPI: EC: Rename three functions
        ACPI: EC: Simplify locking in acpi_ec_event_handler()
        ACPI: EC: Rearrange the loop in acpi_ec_event_handler()
        ACPI: EC: Fold acpi_ec_check_event() into acpi_ec_event_handler()
        ACPI: EC: Pass one argument to acpi_ec_query()
        ACPI: EC: Call advance_transaction() from acpi_ec_dispatch_gpe()
        ACPI: EC: Rework flushing of EC work while suspended to idle
      
      * acpi-processor:
        ACPI: processor: thermal: avoid cpufreq_get_policy()
        ACPI: processor: idle: Only flush cache on entering C3
        ACPI: processor idle: Use swap() instead of open coding it
        ACPI: processor: Replace kernel.h with the necessary inclusions
      5847d2d2
    • Rafael J. Wysocki's avatar
      Merge branches 'acpi-scan', 'acpi-pm', 'acpi-power' and 'acpi-pci' · b659ea76
      Rafael J. Wysocki authored
      Merge ACPI device enumeration updates, ACPI power management updates
      and PCI host bridge ACPI driver updates for 5.17-rc1:
      
       - Introduce acpi_fetch_acpi_dev() as a replacement for
         acpi_bus_get_device() and use it in the ACPI subsystem (Rafael
         Wysocki).
      
       - Avoid using _CID for device enumaration if _HID is missing or
         invalid (Rafael Wysocki).
      
       - Rework quirk handling during ACPI device enumeration and add some
         new quirks for known broken platforms (Hans de Goede).
      
       - Avoid unnecessary or redundant CPU cache flushing during system
         PM transitions (Kirill A. Shutemov).
      
       - Add PM debug messages related to power resources (Rafael Wysocki).
      
       - Fix kernel-doc comment in the PCI host bridge ACPI driver (Yang Li).
      
      * acpi-scan:
        serdev: Do not instantiate serdevs on boards with known bogus DSDT entries
        i2c: acpi: Do not instantiate I2C-clients on boards with known bogus DSDT entries
        ACPI / x86: Add acpi_quirk_skip_[i2c_client|serdev]_enumeration() helpers
        ACPI: scan: Create platform device for BCM4752 and LNV4752 ACPI nodes
        ACPI: Use acpi_fetch_acpi_dev() instead of acpi_bus_get_device()
        ACPI: scan: Introduce acpi_fetch_acpi_dev()
        ACPI: scan: Do not add device IDs from _CID if _HID is not valid
      
      * acpi-pm:
        ACPI: PM: Remove redundant cache flushing
        ACPI: PM: Avoid CPU cache flush when entering S4
      
      * acpi-power:
        ACPI: PM: Emit debug messages when enabling/disabling wakeup power
      
      * acpi-pci:
        PCI/ACPI: Fix acpi_pci_osc_control_set() kernel-doc comment
      b659ea76
  2. 04 Jan, 2022 4 commits
    • Sudeep Holla's avatar
      ACPI: PCC: Implement OperationRegion handler for the PCC Type 3 subtype · 77e2a047
      Sudeep Holla authored
      PCC OpRegion provides a mechanism to communicate with the platform
      directly from the AML. PCCT provides the list of PCC channel available
      in the platform, a subset or all of them can be used in PCC Opregion.
      
      This patch registers the PCC OpRegion handler before ACPI tables are
      loaded. This relies on the special context data passed to identify and
      set up the PCC channel before the OpRegion handler is executed for the
      first time.
      
      Typical PCC Opregion declaration looks like this:
      
      OperationRegion (PFRM, PCC, 2, 0x74)
      Field (PFRM, ByteAcc, NoLock, Preserve)
      {
          SIGN,   32,
          FLGS,   32,
          LEN,    32,
          CMD,    32,
          DATA,   800
      }
      
      It contains four named double words followed by 100 bytes of buffer
      names DATA.
      
      ASL can fill out the buffer something like:
      
          /* Create global or local buffer */
          Name (BUFF, Buffer (0x0C){})
          /* Create double word fields over the buffer */
          CreateDWordField (BUFF, 0x0, WD0)
          CreateDWordField (BUFF, 0x04, WD1)
          CreateDWordField (BUFF, 0x08, WD2)
      
          /* Fill the named fields */
          WD0 = 0x50434300
          SIGN = BUFF
          WD0 = 1
          FLGS = BUFF
          WD0 = 0x10
          LEN = BUFF
      
          /* Fill the payload in the DATA buffer */
          WD0 = 0
          WD1 = 0x08
          WD2 = 0
          DATA = BUFF
      
          /* Write to CMD field to trigger handler */
          WD0 = 0x4404
          CMD = BUFF
      
      This buffer is received by acpi_pcc_opregion_space_handler. This
      handler will fetch the complete buffer via internal_pcc_buffer.
      
      The setup handler will receive the special PCC context data which will
      contain the PCC channel index which used to set up the channel. The
      buffer pointer and length is saved in region context which is then used
      in the handler.
      
      (kernel test robot: Build failure with CONFIG_ACPI_DEBUGGER)
      Link: https://lore.kernel.org/r/202201041539.feAV0l27-lkp@intel.comReported-by: default avatarkernel test robot <lkp@intel.com>
      Signed-off-by: default avatarSudeep Holla <sudeep.holla@arm.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      77e2a047
    • Hans de Goede's avatar
      ACPI / x86: Skip AC and battery devices on x86 Android tablets with broken DSDTs · 1b15b698
      Hans de Goede authored
      So far all of the tablets for which the skip i2c-client/serdev enumeration
      quirks have been added also all have broken ACPI AC / battery devices
      extend the existing quirks for these tablets to also skip the broken
      AC / battery devices.
      Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      1b15b698
    • Hans de Goede's avatar
      ACPI / x86: Introduce an acpi_quirk_skip_acpi_ac_and_battery() helper · 57a18322
      Hans de Goede authored
      Some x86 ACPI boards have broken AC and battery ACPI devices in their ACPI
      tables. This is often tied to these devices using certain PMICs where the
      factory OS image seems to be using native charger and fuel-gauge drivers
      instead.
      
      So far both the AC and battery drivers have almost identical checks for
      these PMICs including both of them having a DMI based mechanism to force
      usage of the ACPI AC and battery drivers on some boards even though one
      of these PMICs is present, with the same 2 boards listed in both driver's
      DMI tables for this.
      
      The only difference is that the AC driver checks for 2 PMICs and the
      battery driver only for one. This has grown this way because the other
      (Whiskey Cove) PMIC is only used on a few boards (3 known boards) and
      although some of these do have non working ACPI battery devices, their
      _STA method always returns 0, but that really should not be relied on.
      
      This patch factors out the shared checks into a new
      acpi_quirk_skip_acpi_ac_and_battery() helper and moves the AC and
      battery drivers over to this new helper.
      
      Note the DMI table is shared with acpi_quirk_skip_i2c_client_enumeration()
      and acpi_quirk_skip_serdev_enumeration(), because boards needing DMI quirks
      for either of these typically also have broken AC and battery ACPI devices.
      
      The ACPI_QUIRK_SKIP_ACPI_AC_AND_BATTERY quirk is not set yet on boards
      already in this DMI table, to avoid introducing any functional changes
      in this refactoring patch.
      
      Besided sharing the code between the AC and battery drivers this
      refactoring also moves this quirk handling to under #ifdef CONFIG_X86,
      removing this x86 specific code from non x86 ACPI builds.
      Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      57a18322
    • Rafael J. Wysocki's avatar
      Merge branch 'acpi-scan' into acpi-x86 · 8e0feb25
      Rafael J. Wysocki authored
      Merge recent device enumeration changes to satisfy dependencies.
      8e0feb25
  3. 30 Dec, 2021 6 commits
    • Manfred Spraul's avatar
      ACPI: processor: thermal: avoid cpufreq_get_policy() · 8120832d
      Manfred Spraul authored
      cpu_has_cpufreq() stores a 'struct cpufreq_policy' on the stack.
      Unfortunately, with debugging options enabled, the structure can be
      larger than 1024 bytes, which causes a compiler warning/error.
      
      (actually observed: 1184 bytes).
      
      Therefore: Switch to cpufreq_cpu_get().
      Signed-off-by: default avatarManfred Spraul <manfred@colorfullife.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      8120832d
    • Hans de Goede's avatar
      serdev: Do not instantiate serdevs on boards with known bogus DSDT entries · 0890186a
      Hans de Goede authored
      x86 ACPI devices which ship with only Android as their factory image use
      older kernels which do not yet support ACPI serdev enumeration, as such
      the serdev information in their ACPI tables is not reliable.
      
      For example on the Asus ME176C tablet the serdev describing the Bluetooth
      HCI points to the serdev_controller connected to the GPS and the other way
      around.
      
      Use the new acpi_quirk_skip_serdev_enumeration() helper to identify
      known boards with this issue and then either abort adding the serdev
      controller (creating a tty cdev instead) or only create the controller
      leaving the instantation of the serdev itself up to platform code.
      
      In the case where only the serdev controller is created the necessary
      serdevs will instead be instantiated by the
      drivers/platform/x86/x86-android-tablets.c kernel module.
      Acked-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      0890186a
    • Hans de Goede's avatar
      i2c: acpi: Do not instantiate I2C-clients on boards with known bogus DSDT entries · a6e1445c
      Hans de Goede authored
      x86 ACPI devices which ship with only Android as their factory image
      usually declare a whole bunch of bogus I2C devices in their ACPI tables.
      
      Instantiating I2C clients for these bogus devices causes various issues,
      e.g. GPIO/IRQ resource conflicts because sometimes drivers do bind to them.
      The Android x86 kernel fork shipped on these devices has some special code
      to remove these bogus devices, instead of just fixing the DSDT <sigh>.
      
      Use the new acpi_quirk_skip_i2c_client_enumeration() helper to identify
      known boards / acpi devices with this issue, and skip enumerating these.
      
      Note these boards typically do actually have I2C devices, just
      different ones then the ones described in their DSDT. The devices
      which are actually present are manually instantiated by the
      drivers/platform/x86/x86-android-tablets.c kernel module.
      Reviewed-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
      Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
      Reviewed-by: default avatarWolfram Sang <wsa@kernel.org>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      a6e1445c
    • Hans de Goede's avatar
      ACPI / x86: Add acpi_quirk_skip_[i2c_client|serdev]_enumeration() helpers · 35f9e773
      Hans de Goede authored
      x86 ACPI boards which ship with only Android as their factory image usually
      declare a whole bunch of bogus I2C devs in their ACPI tables and sometimes
      there are issues with serdev devices on these boards too, e.g. the resource
      points to the wrong serdev_controller.
      
      Instantiating I2C / serdev devs for these bogus devs causes various issues,
      e.g. GPIO/IRQ resource conflicts because sometimes drivers do bind to them.
      The Android x86 kernel fork shipped on these devices has some special code
      to remove the bogus I2C clients (and serdevs are ignored completely).
      
      Introduce acpi_quirk_skip_i2c_client_enumeration() and
      acpi_quirk_skip_serdev_enumeration() helpers. Which can be used by the I2C/
      serdev code to skip instantiating any I2C or serdev devs on broken boards.
      
      These 2 helpers are added to drivers/acpi/x86/utils.c so that the DMI table
      can be shared between the I2C and serdev code.
      
      Note these boards typically do actually have I2C and serdev devices, just
      different ones then the ones described in their DSDT. The devices which
      are actually present are manually instantiated by the
      drivers/platform/x86/x86-android-tablets.c kernel module.
      
      The new helpers are only build if CONFIG_X86_ANDROID_TABLETS is enabled,
      otherwise they are empty stubs to not unnecessarily grow the kernel size.
      Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      35f9e773
    • Hans de Goede's avatar
      ACPI: scan: Create platform device for BCM4752 and LNV4752 ACPI nodes · f85196bd
      Hans de Goede authored
      BCM4752 and LNV4752 ACPI nodes describe a Broadcom 4752 GPS module
      attached to an UART of the system.
      
      The GPS modules talk a custom protocol which only works with a closed-
      source Android gpsd daemon which knows this protocol.
      
      The ACPI nodes also describe GPIOs to turn the GPS on/off these are
      handled by the net/rfkill/rfkill-gpio.c code. This handling predates the
      addition of enumeration of ACPI instantiated serdevs to the kernel and
      was broken by that addition, because the ACPI scan code now no longer
      instantiates platform_device-s for these nodes.
      
      Rename the i2c_multi_instantiate_ids HID list to ignore_serial_bus_ids
      and add the BCM4752 and LNV4752 HIDs, so that rfkill-gpio gets
      a platform_device to bind to again; and so that a tty cdev for gpsd
      gets created for these.
      
      Fixes: e361d1f8 ("ACPI / scan: Fix enumeration for special UART devices")
      Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      f85196bd
    • Yang Li's avatar
      PCI/ACPI: Fix acpi_pci_osc_control_set() kernel-doc comment · 843438de
      Yang Li authored
      Add the description of @support and remove @req in
      acpi_pci_osc_control_set() kernel-doc comment to remove warnings found
      by running scripts/kernel-doc, which is caused by using 'make W=1'.
      
      drivers/acpi/pci_root.c:337: warning: Excess function parameter 'req'
      description in 'acpi_pci_osc_control_set'
      drivers/acpi/pci_root.c:337: warning: Function parameter or member
      'support' not described in 'acpi_pci_osc_control_set'
      Reported-by: default avatarAbaci Robot <abaci@linux.alibaba.com>
      Fixes: 6bc779ee ("PCI/ACPI: Check for _OSC support in acpi_pci_osc_control_set()")
      Signed-off-by: default avatarYang Li <yang.lee@linux.alibaba.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      843438de
  4. 27 Dec, 2021 18 commits
  5. 26 Dec, 2021 4 commits
  6. 25 Dec, 2021 5 commits
    • Linus Torvalds's avatar
      Merge tag 'hwmon-for-v5.16-rc7' of... · e2ae0d4a
      Linus Torvalds authored
      Merge tag 'hwmon-for-v5.16-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging
      
      Pull hwmon fixes from Guenter Roeck:
       "A couple of lm90 driver fixes. None of them are critical, but they
        should nevertheless be fixed"
      
      * tag 'hwmon-for-v5.16-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
        hwmon: (lm90) Do not report 'busy' status bit as alarm
        hwmom: (lm90) Fix citical alarm status for MAX6680/MAX6681
        hwmon: (lm90) Drop critical attribute support for MAX6654
        hwmon: (lm90) Prevent integer overflow/underflow in hysteresis calculations
        hwmon: (lm90) Fix usage of CONFIG2 register in detect function
      e2ae0d4a
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input · 5b5e3d03
      Linus Torvalds authored
      Pull input fixes from Dmitry Torokhov:
       "A few small updates to drivers.
      
        Of note we are now deferring probes of i8042 on some Asus devices as
        the controller is not ready to respond to queries first time around
        when the driver is compiled into the kernel"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
        Input: elants_i2c - do not check Remark ID on eKTH3900/eKTH5312
        Input: atmel_mxt_ts - fix double free in mxt_read_info_block
        Input: goodix - fix memory leak in goodix_firmware_upload
        Input: goodix - add id->model mapping for the "9111" model
        Input: goodix - try not to touch the reset-pin on x86/ACPI devices
        Input: i8042 - enable deferred probe quirk for ASUS UM325UA
        Input: elantech - fix stack out of bound access in elantech_change_report_id()
        Input: iqs626a - prohibit inlining of channel parsing functions
        Input: i8042 - add deferred probe support
      5b5e3d03
    • Linus Torvalds's avatar
      Merge branch 'akpm' (patches from Andrew) · d0cc67b2
      Linus Torvalds authored
      Merge misc fixes from Andrew Morton:
       "9 patches.
      
        Subsystems affected by this patch series: mm (kfence, mempolicy,
        memory-failure, pagemap, pagealloc, damon, and memory-failure),
        core-kernel, and MAINTAINERS"
      
      * emailed patches from Andrew Morton <akpm@linux-foundation.org>:
        mm/hwpoison: clear MF_COUNT_INCREASED before retrying get_any_page()
        mm/damon/dbgfs: protect targets destructions with kdamond_lock
        mm/page_alloc: fix __alloc_size attribute for alloc_pages_exact_nid
        mm: delete unsafe BUG from page_cache_add_speculative()
        mm, hwpoison: fix condition in free hugetlb page path
        MAINTAINERS: mark more list instances as moderated
        kernel/crash_core: suppress unknown crashkernel parameter warning
        mm: mempolicy: fix THP allocations escaping mempolicy restrictions
        kfence: fix memory leak when cat kfence objects
      d0cc67b2
    • Liu Shixin's avatar
      mm/hwpoison: clear MF_COUNT_INCREASED before retrying get_any_page() · 2a57d83c
      Liu Shixin authored
      Hulk Robot reported a panic in put_page_testzero() when testing
      madvise() with MADV_SOFT_OFFLINE.  The BUG() is triggered when retrying
      get_any_page().  This is because we keep MF_COUNT_INCREASED flag in
      second try but the refcnt is not increased.
      
          page dumped because: VM_BUG_ON_PAGE(page_ref_count(page) == 0)
          ------------[ cut here ]------------
          kernel BUG at include/linux/mm.h:737!
          invalid opcode: 0000 [#1] PREEMPT SMP
          CPU: 5 PID: 2135 Comm: sshd Tainted: G    B             5.16.0-rc6-dirty #373
          Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1ubuntu1.1 04/01/2014
          RIP: release_pages+0x53f/0x840
          Call Trace:
            free_pages_and_swap_cache+0x64/0x80
            tlb_flush_mmu+0x6f/0x220
            unmap_page_range+0xe6c/0x12c0
            unmap_single_vma+0x90/0x170
            unmap_vmas+0xc4/0x180
            exit_mmap+0xde/0x3a0
            mmput+0xa3/0x250
            do_exit+0x564/0x1470
            do_group_exit+0x3b/0x100
            __do_sys_exit_group+0x13/0x20
            __x64_sys_exit_group+0x16/0x20
            do_syscall_64+0x34/0x80
            entry_SYSCALL_64_after_hwframe+0x44/0xae
          Modules linked in:
          ---[ end trace e99579b570fe0649 ]---
          RIP: 0010:release_pages+0x53f/0x840
      
      Link: https://lkml.kernel.org/r/20211221074908.3910286-1-liushixin2@huawei.com
      Fixes: b94e0282 ("mm,hwpoison: try to narrow window race for free pages")
      Signed-off-by: default avatarLiu Shixin <liushixin2@huawei.com>
      Reported-by: default avatarHulk Robot <hulkci@huawei.com>
      Reviewed-by: default avatarOscar Salvador <osalvador@suse.de>
      Acked-by: default avatarNaoya Horiguchi <naoya.horiguchi@nec.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      2a57d83c
    • SeongJae Park's avatar
      mm/damon/dbgfs: protect targets destructions with kdamond_lock · 34796417
      SeongJae Park authored
      DAMON debugfs interface iterates current monitoring targets in
      'dbgfs_target_ids_read()' while holding the corresponding
      'kdamond_lock'.  However, it also destructs the monitoring targets in
      'dbgfs_before_terminate()' without holding the lock.  This can result in
      a use_after_free bug.  This commit avoids the race by protecting the
      destruction with the corresponding 'kdamond_lock'.
      
      Link: https://lkml.kernel.org/r/20211221094447.2241-1-sj@kernel.orgReported-by: default avatarSangwoo Bae <sangwoob@amazon.com>
      Fixes: 4bc05954 ("mm/damon: implement a debugfs-based user space interface")
      Signed-off-by: default avatarSeongJae Park <sj@kernel.org>
      Cc: <stable@vger.kernel.org>	[5.15.x]
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      34796417