Changelog in Linux kernel 6.6.42

 
ACPI: EC: Abort address space access upon error [+ + +]
Author: Armin Wolf <[email protected]>
Date:   Wed May 22 23:36:48 2024 +0200

    ACPI: EC: Abort address space access upon error
    
    [ Upstream commit f6f172dc6a6d7775b2df6adfd1350700e9a847ec ]
    
    When a multi-byte address space access is requested, acpi_ec_read()/
    acpi_ec_write() is being called multiple times.
    
    Abort such operations if a single call to acpi_ec_read() /
    acpi_ec_write() fails, as the data read from / written to the EC
    might be incomplete.
    
    Signed-off-by: Armin Wolf <[email protected]>
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ACPI: EC: Avoid returning AE_OK on errors in address space handler [+ + +]
Author: Armin Wolf <[email protected]>
Date:   Wed May 22 23:36:49 2024 +0200

    ACPI: EC: Avoid returning AE_OK on errors in address space handler
    
    [ Upstream commit c4bd7f1d78340e63de4d073fd3dbe5391e2996e5 ]
    
    If an error code other than EINVAL, ENODEV or ETIME is returned
    by acpi_ec_read() / acpi_ec_write(), then AE_OK is incorrectly
    returned by acpi_ec_space_handler().
    
    Fix this by only returning AE_OK on success, and return AE_ERROR
    otherwise.
    
    Signed-off-by: Armin Wolf <[email protected]>
    [ rjw: Subject and changelog edits ]
    Signed-off-by: Rafael J. Wysocki <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ALSA: dmaengine: Synchronize dma channel after drop() [+ + +]
Author: Jai Luthra <[email protected]>
Date:   Tue Jun 11 18:02:55 2024 +0530

    ALSA: dmaengine: Synchronize dma channel after drop()
    
    [ Upstream commit e8343410ddf08fc36a9b9cc7c51a4e53a262d4c6 ]
    
    Sometimes the stream may be stopped due to XRUN events, in which case
    the userspace can call snd_pcm_drop() and snd_pcm_prepare() to stop and
    start the stream again.
    
    In these cases, we must wait for the DMA channel to synchronize before
    marking the stream as prepared for playback, as the DMA channel gets
    stopped by drop() without any synchronization. Make sure the ALSA core
    synchronizes the DMA channel by adding a sync_stop() hook.
    
    Reviewed-by: Peter Ujfalusi <[email protected]>
    Signed-off-by: Jai Luthra <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: dmaengine_pcm: terminate dmaengine before synchronize [+ + +]
Author: Shengjiu Wang <[email protected]>
Date:   Thu Jun 20 10:40:18 2024 +0800

    ALSA: dmaengine_pcm: terminate dmaengine before synchronize
    
    [ Upstream commit 6a7db25aad8ce6512b366d2ce1d0e60bac00a09d ]
    
    When dmaengine supports pause function, in suspend state,
    dmaengine_pause() is called instead of dmaengine_terminate_async(),
    
    In end of playback stream, the runtime->state will go to
    SNDRV_PCM_STATE_DRAINING, if system suspend & resume happen
    at this time, application will not resume playback stream, the
    stream will be closed directly, the dmaengine_terminate_async()
    will not be called before the dmaengine_synchronize(), which
    violates the call sequence for dmaengine_synchronize().
    
    This behavior also happens for capture streams, but there is no
    SNDRV_PCM_STATE_DRAINING state for capture. So use
    dmaengine_tx_status() to check the DMA status if the status is
    DMA_PAUSED, then call dmaengine_terminate_async() to terminate
    dmaengine before dmaengine_synchronize().
    
    Signed-off-by: Shengjiu Wang <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: hda/realtek: Add more codec ID to no shutup pins list [+ + +]
Author: Kailang Yang <[email protected]>
Date:   Tue Jun 18 14:16:04 2024 +0800

    ALSA: hda/realtek: Add more codec ID to no shutup pins list
    
    [ Upstream commit 70794b9563fe011988bcf6a081af9777e63e8d37 ]
    
    If it enter to runtime D3 state, it didn't shutup Headset MIC pin.
    
    Signed-off-by: Kailang Yang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: hda/realtek: Support Lenovo Thinkbook 16P Gen 5 [+ + +]
Author: Stefan Binding <[email protected]>
Date:   Thu Jun 6 14:03:50 2024 +0100

    ALSA: hda/realtek: Support Lenovo Thinkbook 16P Gen 5
    
    [ Upstream commit 75f2ea939b5c694b36aad8ef823a2f9bcf7b3d7d ]
    
    Add support for this laptop, which uses CS35L41 HDA amps.
    The laptop does not contain valid _DSD for these amps, so requires
    entries into the CS35L41 configuration table to function correctly.
    
    [ fixed to lower hex numbers in quirk entries -- tiwai ]
    
    Signed-off-by: Stefan Binding <[email protected]>
    Signed-off-by: Takashi Iwai <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: hda/relatek: Enable Mute LED on HP Laptop 15-gw0xxx [+ + +]
Author: Aivaz Latypov <[email protected]>
Date:   Tue Jun 25 13:12:02 2024 +0500

    ALSA: hda/relatek: Enable Mute LED on HP Laptop 15-gw0xxx
    
    [ Upstream commit 1d091a98c399c17d0571fa1d91a7123a698446e4 ]
    
    This HP Laptop uses ALC236 codec with COEF 0x07 controlling
    the mute LED. Enable existing quirk for this device.
    
    Signed-off-by: Aivaz Latypov <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: hda: cs35l56: Fix lifecycle of codec pointer [+ + +]
Author: Simon Trimmer <[email protected]>
Date:   Fri May 31 12:27:16 2024 +0100

    ALSA: hda: cs35l56: Fix lifecycle of codec pointer
    
    [ Upstream commit d339131bf02d4ed918415574082caf5e8af6e664 ]
    
    The codec should be cleared when the amp driver is unbound and when
    resuming it should be tested to prevent loading firmware into the device
    and ALSA in a partially configured system state.
    
    Signed-off-by: Simon Trimmer <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: hda: cs35l56: Select SERIAL_MULTI_INSTANTIATE [+ + +]
Author: Simon Trimmer <[email protected]>
Date:   Wed Jun 19 17:16:02 2024 +0100

    ALSA: hda: cs35l56: Select SERIAL_MULTI_INSTANTIATE
    
    [ Upstream commit 9b1effff19cdf2230d3ecb07ff4038a0da32e9cc ]
    
    The ACPI IDs used in the CS35L56 HDA drivers are all handled by the
    serial multi-instantiate driver which starts multiple Linux device
    instances from a single ACPI Device() node.
    
    As serial multi-instantiate is not an optional part of the system add it
    as a dependency in Kconfig so that it is not overlooked.
    
    Signed-off-by: Simon Trimmer <[email protected]>
    Link: https://lore.kernel.org/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: hda: Use imply for suggesting CONFIG_SERIAL_MULTI_INSTANTIATE [+ + +]
Author: Takashi Iwai <[email protected]>
Date:   Fri Jun 21 09:39:09 2024 +0200

    ALSA: hda: Use imply for suggesting CONFIG_SERIAL_MULTI_INSTANTIATE
    
    [ Upstream commit 17563b4a19d1844bdbccc7a82d2f31c28ca9cfae ]
    
    The recent fix introduced a reverse selection of
    CONFIG_SERIAL_MULTI_INSTANTIATE, but its condition isn't always met.
    Use a weak reverse selection to suggest the config for avoiding such
    inconsistencies, instead.
    
    Fixes: 9b1effff19cd ("ALSA: hda: cs35l56: Select SERIAL_MULTI_INSTANTIATE")
    Reported-by: kernel test robot <[email protected]>
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    Reviewed-by: Richard Fitzgerald <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ALSA: PCM: Allow resume only for suspended streams [+ + +]
Author: Takashi Iwai <[email protected]>
Date:   Mon Jun 24 14:54:34 2024 +0200

    ALSA: PCM: Allow resume only for suspended streams
    
    [ Upstream commit 1225675ca74c746f09211528588e83b3def1ff6a ]
    
    snd_pcm_resume() should bail out if the stream isn't in a suspended
    state.  Otherwise it'd allow doubly resume.
    
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Takashi Iwai <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
arm64: armv8_deprecated: Fix warning in isndep cpuhp starting process [+ + +]
Author: Wei Li <[email protected]>
Date:   Tue Apr 23 17:35:01 2024 +0800

    arm64: armv8_deprecated: Fix warning in isndep cpuhp starting process
    
    [ Upstream commit 14951beaec93696b092a906baa0f29322cf34004 ]
    
    The function run_all_insn_set_hw_mode() is registered as startup callback
    of 'CPUHP_AP_ARM64_ISNDEP_STARTING', it invokes set_hw_mode() methods of
    all emulated instructions.
    
    As the STARTING callbacks are not expected to fail, if one of the
    set_hw_mode() fails, e.g. due to el0 mixed-endian is not supported for
    'setend', it will report a warning:
    
    ```
    CPU[2] cannot support the emulation of setend
    CPU 2 UP state arm64/isndep:starting (136) failed (-22)
    CPU2: Booted secondary processor 0x0000000002 [0x414fd0c1]
    ```
    
    To fix it, add a check for INSN_UNAVAILABLE status and skip the process.
    
    Signed-off-by: Wei Li <[email protected]>
    Tested-by: Huisong Li <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Will Deacon <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ARM: 9324/1: fix get_user() broken with veneer [+ + +]
Author: Masahiro Yamada <[email protected]>
Date:   Tue Sep 26 17:09:03 2023 +0100

    ARM: 9324/1: fix get_user() broken with veneer
    
    commit 24d3ba0a7b44c1617c27f5045eecc4f34752ab03 upstream.
    
    The 32-bit ARM kernel stops working if the kernel grows to the point
    where veneers for __get_user_* are created.
    
    AAPCS32 [1] states, "Register r12 (IP) may be used by a linker as a
    scratch register between a routine and any subroutine it calls. It
    can also be used within a routine to hold intermediate values between
    subroutine calls."
    
    However, bl instructions buried within the inline asm are unpredictable
    for compilers; hence, "ip" must be added to the clobber list.
    
    This becomes critical when veneers for __get_user_* are created because
    veneers use the ip register since commit 02e541db0540 ("ARM: 8323/1:
    force linker to use PIC veneers").
    
    [1]: https://github.com/ARM-software/abi-aa/blob/2023Q1/aapcs32/aapcs32.rst
    
    Signed-off-by: Masahiro Yamada <[email protected]>
    Reviewed-by: Ard Biesheuvel <[email protected]>
    Signed-off-by: Russell King (Oracle) <[email protected]>
    Cc: John Stultz <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
ASoC: amd: yc: Fix non-functional mic on ASUS M5602RA [+ + +]
Author: Vyacheslav Frantsishko <[email protected]>
Date:   Wed Jun 26 10:03:34 2024 +0300

    ASoC: amd: yc: Fix non-functional mic on ASUS M5602RA
    
    [ Upstream commit 63b47f026cc841bd3d3438dd6fccbc394dfead87 ]
    
    The Vivobook S 16X IPS needs a quirks-table entry for the internal microphone to function properly.
    
    Signed-off-by: Vyacheslav Frantsishko <[email protected]>
    Reviewed-by: Mario Limonciello <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: rt722-sdca-sdw: add debounce time for type detection [+ + +]
Author: Jack Yu <[email protected]>
Date:   Wed Jun 12 09:01:07 2024 +0000

    ASoC: rt722-sdca-sdw: add debounce time for type detection
    
    [ Upstream commit f3b198e4788fcc8d03ed0c8bd5e3856c6a5760c5 ]
    
    Add debounce time in headset type detection for better performance.
    
    Signed-off-by: Jack Yu <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: rt722-sdca-sdw: add silence detection register as volatile [+ + +]
Author: Jack Yu <[email protected]>
Date:   Mon Jun 3 10:47:16 2024 +0000

    ASoC: rt722-sdca-sdw: add silence detection register as volatile
    
    [ Upstream commit 968c974c08106fcf911d8d390d0f049af855d348 ]
    
    Including silence detection register as volatile.
    
    Signed-off-by: Jack Yu <[email protected]>
    Link: https://msgid.link/r/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: SOF: Intel: hda-pcm: Limit the maximum number of periods by MAX_BDL_ENTRIES [+ + +]
Author: Peter Ujfalusi <[email protected]>
Date:   Thu Jul 4 11:01:06 2024 +0200

    ASoC: SOF: Intel: hda-pcm: Limit the maximum number of periods by MAX_BDL_ENTRIES
    
    [ Upstream commit 82bb8db96610b558920b8c57cd250ec90567d79b ]
    
    The HDaudio specification Section 3.6.2 limits the number of BDL entries to 256.
    
    Make sure we don't allow more periods than this normative value.
    
    Signed-off-by: Peter Ujfalusi <[email protected]>
    Signed-off-by: Pierre-Louis Bossart <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: SOF: sof-audio: Skip unprepare for in-use widgets on error rollback [+ + +]
Author: Peter Ujfalusi <[email protected]>
Date:   Wed Jun 12 15:12:03 2024 +0300

    ASoC: SOF: sof-audio: Skip unprepare for in-use widgets on error rollback
    
    [ Upstream commit 6f2a43e3d14f6e31a3b041a1043195d02c54d615 ]
    
    If the ipc_prepare() callback fails for a module instance, on error rewind
    we must skip the ipc_unprepare() call for ones that has positive use count.
    
    The positive use count means that the module instance is in active use, it
    cannot be unprepared.
    
    The issue affects capture direction paths with branches (single dai with
    multiple PCMs), the affected widgets are in the shared part of the paths.
    
    Signed-off-by: Peter Ujfalusi <[email protected]>
    Reviewed-by: Pierre-Louis Bossart <[email protected]>
    Reviewed-by: Kai Vehmanen <[email protected]>
    Reviewed-by: Ranjani Sridharan <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: ti: davinci-mcasp: Set min period size using FIFO config [+ + +]
Author: Jai Luthra <[email protected]>
Date:   Tue Jun 11 18:02:56 2024 +0530

    ASoC: ti: davinci-mcasp: Set min period size using FIFO config
    
    [ Upstream commit c5dcf8ab10606e76c1d8a0ec77f27d84a392e874 ]
    
    The minimum period size was enforced to 64 as older devices integrating
    McASP with EDMA used an internal FIFO of 64 samples.
    
    With UDMA based platforms this internal McASP FIFO is optional, as the
    DMA engine internally does some buffering which is already accounted for
    when registering the platform. So we should read the actual FIFO
    configuration (txnumevt/rxnumevt) instead of hardcoding frames.min to
    64.
    
    Acked-by: Peter Ujfalusi <[email protected]>
    Signed-off-by: Jai Luthra <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: ti: omap-hdmi: Fix too long driver name [+ + +]
Author: Primoz Fiser <[email protected]>
Date:   Mon Jun 10 14:58:47 2024 +0200

    ASoC: ti: omap-hdmi: Fix too long driver name
    
    [ Upstream commit 524d3f126362b6033e92cbe107ae2158d7fbff94 ]
    
    Set driver name to "HDMI". This simplifies the code and gets rid of
    the following error messages:
    
      ASoC: driver name too long 'HDMI 58040000.encoder' -> 'HDMI_58040000_e'
    
    Signed-off-by: Primoz Fiser <[email protected]>
    Acked-by: Peter Ujfalusi <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: topology: Do not assign fields that are already set [+ + +]
Author: Amadeusz Sławiński <[email protected]>
Date:   Mon Jun 3 12:28:17 2024 +0200

    ASoC: topology: Do not assign fields that are already set
    
    [ Upstream commit daf0b99d4720c9f05bdb81c73b2efdb43fa9def3 ]
    
    The routes are allocated with kzalloc(), so all fields are zeroed by
    default, skip unnecessary assignments.
    
    Reviewed-by: Cezary Rojewski <[email protected]>
    Signed-off-by: Amadeusz Sławiński <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

ASoC: topology: Fix references to freed memory [+ + +]
Author: Amadeusz Sławiński <[email protected]>
Date:   Mon Jun 3 12:28:15 2024 +0200

    ASoC: topology: Fix references to freed memory
    
    [ Upstream commit 97ab304ecd95c0b1703ff8c8c3956dc6e2afe8e1 ]
    
    Most users after parsing a topology file, release memory used by it, so
    having pointer references directly into topology file contents is wrong.
    Use devm_kmemdup(), to allocate memory as needed.
    
    Reported-by: Jason Montleon <[email protected]>
    Link: https://github.com/thesofproject/avs-topology-xml/issues/22#issuecomment-2127892605
    Reviewed-by: Cezary Rojewski <[email protected]>
    Signed-off-by: Amadeusz Sławiński <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
bluetooth/l2cap: sync sock recv cb and release [+ + +]
Author: Edward Adam Davis <[email protected]>
Date:   Sat Jun 15 09:45:54 2024 +0800

    bluetooth/l2cap: sync sock recv cb and release
    
    [ Upstream commit 89e856e124f9ae548572c56b1b70c2255705f8fe ]
    
    The problem occurs between the system call to close the sock and hci_rx_work,
    where the former releases the sock and the latter accesses it without lock protection.
    
               CPU0                       CPU1
               ----                       ----
               sock_close                 hci_rx_work
               l2cap_sock_release         hci_acldata_packet
               l2cap_sock_kill            l2cap_recv_frame
               sk_free                    l2cap_conless_channel
                                          l2cap_sock_recv_cb
    
    If hci_rx_work processes the data that needs to be received before the sock is
    closed, then everything is normal; Otherwise, the work thread may access the
    released sock when receiving data.
    
    Add a chan mutex in the rx callback of the sock to achieve synchronization between
    the sock release and recv cb.
    
    Sock is dead, so set chan data to NULL, avoid others use invalid sock pointer.
    
    Reported-and-tested-by: [email protected]
    Signed-off-by: Edward Adam Davis <[email protected]>
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Bluetooth: btnxpuart: Enable Power Save feature on startup [+ + +]
Author: Neeraj Sanjay Kale <[email protected]>
Date:   Fri Jun 14 13:50:39 2024 +0530

    Bluetooth: btnxpuart: Enable Power Save feature on startup
    
    [ Upstream commit 4183a7be77009fc31c5760429fe095f163bf96a9 ]
    
    This sets the default power save mode setting to enabled.
    
    The power save feature is now stable and stress test issues, such as the
    TX timeout error, have been resolved.
    commit c7ee0bc8db32 ("Bluetooth: btnxpuart: Resolve TX timeout error in
    power save stress test")
    
    With this setting, the driver will send the vendor command to FW at
    startup, to enable power save feature.
    
    User can disable this feature using the following vendor command:
    hcitool cmd 3f 23 03 00 00 (HCI_NXP_AUTO_SLEEP_MODE)
    
    Signed-off-by: Neeraj Sanjay Kale <[email protected]>
    Reviewed-by: Paul Menzel <[email protected]>
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Bluetooth: hci_core: cancel all works upon hci_unregister_dev() [+ + +]
Author: Tetsuo Handa <[email protected]>
Date:   Mon Jun 10 20:00:32 2024 +0900

    Bluetooth: hci_core: cancel all works upon hci_unregister_dev()
    
    [ Upstream commit 0d151a103775dd9645c78c97f77d6e2a5298d913 ]
    
    syzbot is reporting that calling hci_release_dev() from hci_error_reset()
    due to hci_dev_put() from hci_error_reset() can cause deadlock at
    destroy_workqueue(), for hci_error_reset() is called from
    hdev->req_workqueue which destroy_workqueue() needs to flush.
    
    We need to make sure that hdev->{rx_work,cmd_work,tx_work} which are
    queued into hdev->workqueue and hdev->{power_on,error_reset} which are
    queued into hdev->req_workqueue are no longer running by the moment
    
           destroy_workqueue(hdev->workqueue);
           destroy_workqueue(hdev->req_workqueue);
    
    are called from hci_release_dev().
    
    Call cancel_work_sync() on these work items from hci_unregister_dev()
    as soon as hdev->list is removed from hci_dev_list.
    
    Reported-by: syzbot <[email protected]>
    Closes: https://syzkaller.appspot.com/bug?extid=da0a9c9721e36db712e8
    Signed-off-by: Tetsuo Handa <[email protected]>
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Bluetooth: L2CAP: Fix deadlock [+ + +]
Author: Luiz Augusto von Dentz <[email protected]>
Date:   Mon Jun 24 09:42:09 2024 -0400

    Bluetooth: L2CAP: Fix deadlock
    
    commit f1a8f402f13f94263cf349216c257b2985100927 upstream.
    
    This fixes the following deadlock introduced by 39a92a55be13
    ("bluetooth/l2cap: sync sock recv cb and release")
    
    ============================================
    WARNING: possible recursive locking detected
    6.10.0-rc3-g4029dba6b6f1 #6823 Not tainted
    --------------------------------------------
    kworker/u5:0/35 is trying to acquire lock:
    ffff888002ec2510 (&chan->lock#2/1){+.+.}-{3:3}, at:
    l2cap_sock_recv_cb+0x44/0x1e0
    
    but task is already holding lock:
    ffff888002ec2510 (&chan->lock#2/1){+.+.}-{3:3}, at:
    l2cap_get_chan_by_scid+0xaf/0xd0
    
    other info that might help us debug this:
     Possible unsafe locking scenario:
    
           CPU0
           ----
      lock(&chan->lock#2/1);
      lock(&chan->lock#2/1);
    
     *** DEADLOCK ***
    
     May be due to missing lock nesting notation
    
    3 locks held by kworker/u5:0/35:
     #0: ffff888002b8a940 ((wq_completion)hci0#2){+.+.}-{0:0}, at:
    process_one_work+0x750/0x930
     #1: ffff888002c67dd0 ((work_completion)(&hdev->rx_work)){+.+.}-{0:0},
    at: process_one_work+0x44e/0x930
     #2: ffff888002ec2510 (&chan->lock#2/1){+.+.}-{3:3}, at:
    l2cap_get_chan_by_scid+0xaf/0xd0
    
    To fix the original problem this introduces l2cap_chan_lock at
    l2cap_conless_channel to ensure that l2cap_sock_recv_cb is called with
    chan->lock held.
    
    Fixes: 89e856e124f9 ("bluetooth/l2cap: sync sock recv cb and release")
    Signed-off-by: Luiz Augusto von Dentz <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
btrfs: qgroup: fix quota root leak after quota disable failure [+ + +]
Author: Filipe Manana <[email protected]>
Date:   Thu Jun 20 12:32:00 2024 +0100

    btrfs: qgroup: fix quota root leak after quota disable failure
    
    [ Upstream commit a7e4c6a3031c74078dba7fa36239d0f4fe476c53 ]
    
    If during the quota disable we fail when cleaning the quota tree or when
    deleting the root from the root tree, we jump to the 'out' label without
    ever dropping the reference on the quota root, resulting in a leak of the
    root since fs_info->quota_root is no longer pointing to the root (we have
    set it to NULL just before those steps).
    
    Fix this by always doing a btrfs_put_root() call under the 'out' label.
    This is a problem that exists since qgroups were first added in 2012 by
    commit bed92eae26cc ("Btrfs: qgroup implementation and prototypes"), but
    back then we missed a kfree on the quota root and free_extent_buffer()
    calls on its root and commit root nodes, since back then roots were not
    yet reference counted.
    
    Reviewed-by: Boris Burkov <[email protected]>
    Reviewed-by: Qu Wenruo <[email protected]>
    Signed-off-by: Filipe Manana <[email protected]>
    Reviewed-by: David Sterba <[email protected]>
    Signed-off-by: David Sterba <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
bytcr_rt5640 : inverse jack detect for Archos 101 cesium [+ + +]
Author: Thomas GENTY <[email protected]>
Date:   Sat Jun 8 19:02:51 2024 +0200

    bytcr_rt5640 : inverse jack detect for Archos 101 cesium
    
    [ Upstream commit e3209a1827646daaab744aa6a5767b1f57fb5385 ]
    
    When headphones are plugged in, they appear absent; when they are removed,
    they appear present.
    Add a specific entry in bytcr_rt5640 for this device
    
    Signed-off-by: Thomas GENTY <[email protected]>
    Reviewed-by: Hans de Goede <[email protected]>
    Acked-by: Pierre-Louis Bossart <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
cachefiles: add consistency check for copen/cread [+ + +]
Author: Baokun Li <[email protected]>
Date:   Wed May 22 19:43:02 2024 +0800

    cachefiles: add consistency check for copen/cread
    
    [ Upstream commit a26dc49df37e996876f50a0210039b2d211fdd6f ]
    
    This prevents malicious processes from completing random copen/cread
    requests and crashing the system. Added checks are listed below:
    
      * Generic, copen can only complete open requests, and cread can only
        complete read requests.
      * For copen, ondemand_id must not be 0, because this indicates that the
        request has not been read by the daemon.
      * For cread, the object corresponding to fd and req should be the same.
    
    Signed-off-by: Baokun Li <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Acked-by: Jeff Layton <[email protected]>
    Reviewed-by: Jingbo Xu <[email protected]>
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

cachefiles: fix slab-use-after-free in cachefiles_withdraw_cookie() [+ + +]
Author: Baokun Li <[email protected]>
Date:   Fri Jul 19 21:40:04 2024 +0800

    cachefiles: fix slab-use-after-free in cachefiles_withdraw_cookie()
    
    [ Upstream commit 5d8f805789072ea7fd39504694b7bd17e5f751c4 ]
    
    We got the following issue in our fault injection stress test:
    
    ==================================================================
    BUG: KASAN: slab-use-after-free in cachefiles_withdraw_cookie+0x4d9/0x600
    Read of size 8 at addr ffff888118efc000 by task kworker/u78:0/109
    
    CPU: 13 PID: 109 Comm: kworker/u78:0 Not tainted 6.8.0-dirty #566
    Call Trace:
     <TASK>
     kasan_report+0x93/0xc0
     cachefiles_withdraw_cookie+0x4d9/0x600
     fscache_cookie_state_machine+0x5c8/0x1230
     fscache_cookie_worker+0x91/0x1c0
     process_one_work+0x7fa/0x1800
     [...]
    
    Allocated by task 117:
     kmalloc_trace+0x1b3/0x3c0
     cachefiles_acquire_volume+0xf3/0x9c0
     fscache_create_volume_work+0x97/0x150
     process_one_work+0x7fa/0x1800
     [...]
    
    Freed by task 120301:
     kfree+0xf1/0x2c0
     cachefiles_withdraw_cache+0x3fa/0x920
     cachefiles_put_unbind_pincount+0x1f6/0x250
     cachefiles_daemon_release+0x13b/0x290
     __fput+0x204/0xa00
     task_work_run+0x139/0x230
     do_exit+0x87a/0x29b0
     [...]
    ==================================================================
    
    Following is the process that triggers the issue:
    
               p1                |             p2
    ------------------------------------------------------------
                                  fscache_begin_lookup
                                   fscache_begin_volume_access
                                    fscache_cache_is_live(fscache_cache)
    cachefiles_daemon_release
     cachefiles_put_unbind_pincount
      cachefiles_daemon_unbind
       cachefiles_withdraw_cache
        fscache_withdraw_cache
         fscache_set_cache_state(cache, FSCACHE_CACHE_IS_WITHDRAWN);
        cachefiles_withdraw_objects(cache)
        fscache_wait_for_objects(fscache)
          atomic_read(&fscache_cache->object_count) == 0
                                  fscache_perform_lookup
                                   cachefiles_lookup_cookie
                                    cachefiles_alloc_object
                                     refcount_set(&object->ref, 1);
                                     object->volume = volume
                                     fscache_count_object(vcookie->cache);
                                      atomic_inc(&fscache_cache->object_count)
        cachefiles_withdraw_volumes
         cachefiles_withdraw_volume
          fscache_withdraw_volume
          __cachefiles_free_volume
           kfree(cachefiles_volume)
                                  fscache_cookie_state_machine
                                   cachefiles_withdraw_cookie
                                    cache = object->volume->cache;
                                    // cachefiles_volume UAF !!!
    
    After setting FSCACHE_CACHE_IS_WITHDRAWN, wait for all the cookie lookups
    to complete first, and then wait for fscache_cache->object_count == 0 to
    avoid the cookie exiting after the volume has been freed and triggering
    the above issue. Therefore call fscache_withdraw_volume() before calling
    cachefiles_withdraw_objects().
    
    This way, after setting FSCACHE_CACHE_IS_WITHDRAWN, only the following two
    cases will occur:
    1) fscache_begin_lookup fails in fscache_begin_volume_access().
    2) fscache_withdraw_volume() will ensure that fscache_count_object() has
       been executed before calling fscache_wait_for_objects().
    
    Fixes: fe2140e2f57f ("cachefiles: Implement volume support")
    Suggested-by: Hou Tao <[email protected]>
    Signed-off-by: Baokun Li <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Baokun Li <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

cachefiles: fix slab-use-after-free in fscache_withdraw_volume() [+ + +]
Author: Baokun Li <[email protected]>
Date:   Fri Jul 19 21:40:03 2024 +0800

    cachefiles: fix slab-use-after-free in fscache_withdraw_volume()
    
    [ Upstream commit 522018a0de6b6fcce60c04f86dfc5f0e4b6a1b36 ]
    
    We got the following issue in our fault injection stress test:
    
    ==================================================================
    BUG: KASAN: slab-use-after-free in fscache_withdraw_volume+0x2e1/0x370
    Read of size 4 at addr ffff88810680be08 by task ondemand-04-dae/5798
    
    CPU: 0 PID: 5798 Comm: ondemand-04-dae Not tainted 6.8.0-dirty #565
    Call Trace:
     kasan_check_range+0xf6/0x1b0
     fscache_withdraw_volume+0x2e1/0x370
     cachefiles_withdraw_volume+0x31/0x50
     cachefiles_withdraw_cache+0x3ad/0x900
     cachefiles_put_unbind_pincount+0x1f6/0x250
     cachefiles_daemon_release+0x13b/0x290
     __fput+0x204/0xa00
     task_work_run+0x139/0x230
    
    Allocated by task 5820:
     __kmalloc+0x1df/0x4b0
     fscache_alloc_volume+0x70/0x600
     __fscache_acquire_volume+0x1c/0x610
     erofs_fscache_register_volume+0x96/0x1a0
     erofs_fscache_register_fs+0x49a/0x690
     erofs_fc_fill_super+0x6c0/0xcc0
     vfs_get_super+0xa9/0x140
     vfs_get_tree+0x8e/0x300
     do_new_mount+0x28c/0x580
     [...]
    
    Freed by task 5820:
     kfree+0xf1/0x2c0
     fscache_put_volume.part.0+0x5cb/0x9e0
     erofs_fscache_unregister_fs+0x157/0x1b0
     erofs_kill_sb+0xd9/0x1c0
     deactivate_locked_super+0xa3/0x100
     vfs_get_super+0x105/0x140
     vfs_get_tree+0x8e/0x300
     do_new_mount+0x28c/0x580
     [...]
    ==================================================================
    
    Following is the process that triggers the issue:
    
            mount failed         |         daemon exit
    ------------------------------------------------------------
     deactivate_locked_super        cachefiles_daemon_release
      erofs_kill_sb
       erofs_fscache_unregister_fs
        fscache_relinquish_volume
         __fscache_relinquish_volume
          fscache_put_volume(fscache_volume, fscache_volume_put_relinquish)
           zero = __refcount_dec_and_test(&fscache_volume->ref, &ref);
                                     cachefiles_put_unbind_pincount
                                      cachefiles_daemon_unbind
                                       cachefiles_withdraw_cache
                                        cachefiles_withdraw_volumes
                                         list_del_init(&volume->cache_link)
           fscache_free_volume(fscache_volume)
            cache->ops->free_volume
             cachefiles_free_volume
              list_del_init(&cachefiles_volume->cache_link);
            kfree(fscache_volume)
                                         cachefiles_withdraw_volume
                                          fscache_withdraw_volume
                                           fscache_volume->n_accesses
                                           // fscache_volume UAF !!!
    
    The fscache_volume in cache->volumes must not have been freed yet, but its
    reference count may be 0. So use the new fscache_try_get_volume() helper
    function try to get its reference count.
    
    If the reference count of fscache_volume is 0, fscache_put_volume() is
    freeing it, so wait for it to be removed from cache->volumes.
    
    If its reference count is not 0, call cachefiles_withdraw_volume() with
    reference count protection to avoid the above issue.
    
    Fixes: fe2140e2f57f ("cachefiles: Implement volume support")
    Signed-off-by: Baokun Li <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Baokun Li <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

cachefiles: make on-demand read killable [+ + +]
Author: Baokun Li <[email protected]>
Date:   Wed May 22 19:43:08 2024 +0800

    cachefiles: make on-demand read killable
    
    [ Upstream commit bc9dde6155464e906e630a0a5c17a4cab241ffbb ]
    
    Replacing wait_for_completion() with wait_for_completion_killable() in
    cachefiles_ondemand_send_req() allows us to kill processes that might
    trigger a hunk_task if the daemon is abnormal.
    
    But now only CACHEFILES_OP_READ is killable, because OP_CLOSE and OP_OPEN
    is initiated from kworker context and the signal is prohibited in these
    kworker.
    
    Note that when the req in xas changes, i.e. xas_load(&xas) != req, it
    means that a process will complete the current request soon, so wait
    again for the request to be completed.
    
    In addition, add the cachefiles_ondemand_finish_req() helper function to
    simplify the code.
    
    Suggested-by: Hou Tao <[email protected]>
    Signed-off-by: Baokun Li <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Acked-by: Jeff Layton <[email protected]>
    Reviewed-by: Jia Zhu <[email protected]>
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

cachefiles: Set object to close if ondemand_id < 0 in copen [+ + +]
Author: Zizhi Wo <[email protected]>
Date:   Wed May 22 19:43:06 2024 +0800

    cachefiles: Set object to close if ondemand_id < 0 in copen
    
    [ Upstream commit 4f8703fb3482f92edcfd31661857b16fec89c2c0 ]
    
    If copen is maliciously called in the user mode, it may delete the request
    corresponding to the random id. And the request may have not been read yet.
    
    Note that when the object is set to reopen, the open request will be done
    with the still reopen state in above case. As a result, the request
    corresponding to this object is always skipped in select_req function, so
    the read request is never completed and blocks other process.
    
    Fix this issue by simply set object to close if its id < 0 in copen.
    
    Signed-off-by: Zizhi Wo <[email protected]>
    Signed-off-by: Baokun Li <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Acked-by: Jeff Layton <[email protected]>
    Reviewed-by: Jia Zhu <[email protected]>
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
can: kvaser_usb: fix return value for hif_usb_send_regout [+ + +]
Author: Chen Ni <[email protected]>
Date:   Tue May 21 12:10:20 2024 +0800

    can: kvaser_usb: fix return value for hif_usb_send_regout
    
    [ Upstream commit 0d34d8163fd87978a6abd792e2d8ad849f4c3d57 ]
    
    As the potential failure of usb_submit_urb(), it should be better to
    return the err variable to catch the error.
    
    Signed-off-by: Chen Ni <[email protected]>
    Link: https://lore.kernel.org/all/[email protected]
    Signed-off-by: Marc Kleine-Budde <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
cifs: fix noisy message on copy_file_range [+ + +]
Author: Steve French <[email protected]>
Date:   Wed Jul 17 00:42:22 2024 -0500

    cifs: fix noisy message on copy_file_range
    
    commit ae4ccca47195332c69176b8615c5ee17efd30c46 upstream.
    
    There are common cases where copy_file_range can noisily
    log "source and target of copy not on same server"
    e.g. the mv command across mounts to two different server's shares.
    Change this to informational rather than logging as an error.
    
    A followon patch will add dynamic trace points e.g. for
    cifs_file_copychunk_range
    
    Cc: [email protected]
    Reviewed-by: Shyam Prasad N <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
cpumask: limit FORCE_NR_CPUS to just the UP case [+ + +]
Author: Linus Torvalds <[email protected]>
Date:   Tue Jun 18 09:00:04 2024 -0700

    cpumask: limit FORCE_NR_CPUS to just the UP case
    
    [ Upstream commit 5d272dd1b3430bb31fa30042490fa081512424e4 ]
    
    Hardcoding the number of CPUs at compile time does improve code
    generation, but if you get it wrong the result will be confusion.
    
    We already limited this earlier to only "experts" (see commit
    fe5759d5bfda "cpumask: limit visibility of FORCE_NR_CPUS"), but with
    distro kernel configs often having EXPERT enabled, that turns out to not
    be much of a limit.
    
    To quote the philosophers at Disney: "Everyone can be an expert. And
    when everyone's an expert, no one will be".
    
    There's a runtime warning if you then set nr_cpus to anything but the
    forced number, but apparently that can be ignored too [1] and by then
    it's pretty much too late anyway.
    
    If we had some real way to limit this to "embedded only", maybe it would
    be worth it, but let's see if anybody even notices that the option is
    gone.  We need to simplify kernel configuration anyway.
    
    Link: https://lore.kernel.org/all/[email protected]/ [1]
    Reported-by: Steven Rostedt <[email protected]>
    Cc: Masami Hiramatsu <[email protected]>
    Cc: Mark Rutland <[email protected]>
    Cc: Mathieu Desnoyers <[email protected]>
    Cc: Paul McKenney <[email protected]>
    Cc: Thomas Gleixner <[email protected]>
    Cc: Peter Zijlstra <[email protected]>
    Cc: Yury Norov <[email protected]>
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drivers/perf: riscv: Reset the counter to hpmevent mapping while starting cpus [+ + +]
Author: Samuel Holland <[email protected]>
Date:   Fri Jun 28 00:51:42 2024 -0700

    drivers/perf: riscv: Reset the counter to hpmevent mapping while starting cpus
    
    [ Upstream commit 7dd646cf745c34d31e7ed2a52265e9ca8308f58f ]
    
    Currently, we stop all the counters while a new cpu is brought online.
    However, the hpmevent to counter mappings are not reset. The firmware may
    have some stale encoding in their mapping structure which may lead to
    undesirable results. We have not encountered such scenario though.
    
    Signed-off-by: Samuel Holland <[email protected]>
    Signed-off-by: Atish Patra <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Palmer Dabbelt <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/amd/display: Account for cursor prefetch BW in DML1 mode support [+ + +]
Author: Alvin Lee <[email protected]>
Date:   Thu Jun 20 15:11:38 2024 -0400

    drm/amd/display: Account for cursor prefetch BW in DML1 mode support
    
    [ Upstream commit 074b3a886713f69d98d30bb348b1e4cb3ce52b22 ]
    
    [Description]
    We need to ensure to take into account cursor prefetch BW in
    mode support or we may pass ModeQuery but fail an actual flip
    which will cause a hang. Flip may fail because the cursor_pre_bw
    is populated during mode programming (and mode programming is
    never called prior to ModeQuery).
    
    Reviewed-by: Chaitanya Dhere <[email protected]>
    Reviewed-by: Nevenko Stupar <[email protected]>
    Signed-off-by: Jerry Zuo <[email protected]>
    Signed-off-by: Alvin Lee <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: Add refresh rate range check [+ + +]
Author: Tom Chung <[email protected]>
Date:   Wed Jun 19 14:03:55 2024 +0800

    drm/amd/display: Add refresh rate range check
    
    [ Upstream commit 74ad26b36d303ac233eccadc5c3a8d7ee4709f31 ]
    
    [Why]
    We only enable the VRR while monitor usable refresh rate range
    is greater than 10 Hz.
    But we did not check the range in DRM_EDID_FEATURE_CONTINUOUS_FREQ
    case.
    
    [How]
    Add a refresh rate range check before set the freesync_capable flag
    in DRM_EDID_FEATURE_CONTINUOUS_FREQ case.
    
    Reviewed-by: Mario Limonciello <[email protected]>
    Reviewed-by: Rodrigo Siqueira <[email protected]>
    Signed-off-by: Jerry Zuo <[email protected]>
    Signed-off-by: Tom Chung <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

drm/amd/display: Fix refresh rate range for some panel [+ + +]
Author: Tom Chung <[email protected]>
Date:   Fri Jun 14 15:38:56 2024 +0800

    drm/amd/display: Fix refresh rate range for some panel
    
    [ Upstream commit 9ef1548aeaa8858e7aee2152bf95cc71cdcd6dff ]
    
    [Why]
    Some of the panels does not have the refresh rate range info
    in base EDID and only have the refresh rate range info in
    DisplayID block.
    It will cause the max/min freesync refresh rate set to 0.
    
    [How]
    Try to parse the refresh rate range info from DisplayID if the
    max/min refresh rate is 0.
    
    Reviewed-by: Sun peng Li <[email protected]>
    Signed-off-by: Jerry Zuo <[email protected]>
    Signed-off-by: Tom Chung <[email protected]>
    Tested-by: Daniel Wheeler <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/amdgpu: Indicate CU havest info to CP [+ + +]
Author: Harish Kasiviswanathan <[email protected]>
Date:   Wed Jun 5 09:30:50 2024 -0400

    drm/amdgpu: Indicate CU havest info to CP
    
    [ Upstream commit 49c9ffabde555c841392858d8b9e6cf58998a50c ]
    
    To achieve full occupancy CP hardware needs to know if CUs in SE are
    symmetrically or asymmetrically harvested
    
    v2: Reset is_symmetric_cus for each loop
    
    Signed-off-by: Harish Kasiviswanathan <[email protected]>
    Acked-by: Alex Deucher <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/exynos: dp: drop driver owner initialization [+ + +]
Author: Krzysztof Kozlowski <[email protected]>
Date:   Tue Jun 4 15:11:29 2024 +0200

    drm/exynos: dp: drop driver owner initialization
    
    [ Upstream commit 1f3512cdf8299f9edaea9046d53ea324a7730bab ]
    
    Core in platform_driver_register() already sets the .owner, so driver
    does not need to.  Whatever is set here will be anyway overwritten by
    main driver calling platform_driver_register().
    
    Signed-off-by: Krzysztof Kozlowski <[email protected]>
    Signed-off-by: Inki Dae <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/mediatek: Call drm_atomic_helper_shutdown() at shutdown time [+ + +]
Author: Douglas Anderson <[email protected]>
Date:   Tue Jun 11 10:27:44 2024 -0700

    drm/mediatek: Call drm_atomic_helper_shutdown() at shutdown time
    
    [ Upstream commit c38896ca6318c2df20bbe6c8e3f633e071fda910 ]
    
    Based on grepping through the source code this driver appears to be
    missing a call to drm_atomic_helper_shutdown() at system shutdown
    time. Among other things, this means that if a panel is in use that it
    won't be cleanly powered off at system shutdown time.
    
    The fact that we should call drm_atomic_helper_shutdown() in the case
    of OS shutdown/restart comes straight out of the kernel doc "driver
    instance overview" in drm_drv.c.
    
    This driver users the component model and shutdown happens in the base
    driver. The "drvdata" for this driver will always be valid if
    shutdown() is called and as of commit 2a073968289d
    ("drm/atomic-helper: drm_atomic_helper_shutdown(NULL) should be a
    noop") we don't need to confirm that "drm" is non-NULL.
    
    Suggested-by: Maxime Ripard <[email protected]>
    Reviewed-by: Maxime Ripard <[email protected]>
    Reviewed-by: Fei Shao <[email protected]>
    Tested-by: Fei Shao <[email protected]>
    Signed-off-by: Douglas Anderson <[email protected]>
    Signed-off-by: Maxime Ripard <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/20240611102744.v2.1.I2b014f90afc4729b6ecc7b5ddd1f6dedcea4625b@changeid
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/radeon: check bo_va->bo is non-NULL before using it [+ + +]
Author: Pierre-Eric Pelloux-Prayer <[email protected]>
Date:   Tue Jun 25 14:31:34 2024 +0200

    drm/radeon: check bo_va->bo is non-NULL before using it
    
    [ Upstream commit 6fb15dcbcf4f212930350eaee174bb60ed40a536 ]
    
    The call to radeon_vm_clear_freed might clear bo_va->bo, so
    we have to check it before dereferencing it.
    
    Signed-off-by: Pierre-Eric Pelloux-Prayer <[email protected]>
    Acked-by: Alex Deucher <[email protected]>
    Signed-off-by: Alex Deucher <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
drm/vmwgfx: Fix missing HYPERVISOR_GUEST dependency [+ + +]
Author: Alexey Makhalov <[email protected]>
Date:   Sat Jun 15 18:25:10 2024 -0700

    drm/vmwgfx: Fix missing HYPERVISOR_GUEST dependency
    
    [ Upstream commit 8c4d6945fe5bd04ff847c3c788abd34ca354ecee ]
    
    VMWARE_HYPERCALL alternative will not work as intended without VMware guest code
    initialization.
    
      [ bp: note that this doesn't reproduce with newer gccs so it must be
        something gcc-9-specific. ]
    
    Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
    Reported-by: kernel test robot <[email protected]>
    Signed-off-by: Alexey Makhalov <[email protected]>
    Signed-off-by: Borislav Petkov (AMD) <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
drm: panel-orientation-quirks: Add quirk for Aya Neo KUN [+ + +]
Author: Tobias Jakobi <[email protected]>
Date:   Sun Mar 10 23:04:00 2024 +0100

    drm: panel-orientation-quirks: Add quirk for Aya Neo KUN
    
    [ Upstream commit f74fb5df429ebc6a614dc5aa9e44d7194d402e5a ]
    
    Similar to the other Aya Neo devices this one features
    again a portrait screen, here with a native resolution
    of 1600x2560.
    
    Signed-off-by: Tobias Jakobi <[email protected]>
    Reviewed-by: Hans de Goede <[email protected]>
    Signed-off-by: Hans de Goede <[email protected]>
    Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
efi/libstub: zboot.lds: Discard .discard sections [+ + +]
Author: Nathan Chancellor <[email protected]>
Date:   Wed May 22 10:32:43 2024 -0700

    efi/libstub: zboot.lds: Discard .discard sections
    
    [ Upstream commit 5134acb15d9ef27aa2b90aad46d4e89fcef79fdc ]
    
    When building ARCH=loongarch defconfig + CONFIG_UNWINDER_ORC=y using
    LLVM, there is a warning from ld.lld when linking the EFI zboot image
    due to the use of unreachable() in number() in vsprintf.c:
    
      ld.lld: warning: drivers/firmware/efi/libstub/lib.a(vsprintf.stub.o):(.discard.unreachable+0x0): has non-ABS relocation R_LARCH_32_PCREL against symbol ''
    
    If the compiler cannot eliminate the default case for any reason, the
    .discard.unreachable section will remain in the final binary but the
    entire point of any section prefixed with .discard is that it is only
    used at compile time, so it can be discarded via /DISCARD/ in a linker
    script. The asm-generic vmlinux.lds.h includes .discard and .discard.*
    in the COMMON_DISCARDS macro but that is not used for zboot.lds, as it
    is not a kernel image linker script.
    
    Add .discard and .discard.* to /DISCARD/ in zboot.lds, so that any
    sections meant to be discarded at link time are not included in the
    final zboot image. This issue is not specific to LoongArch, it is just
    the first architecture to select CONFIG_OBJTOOL, which defines
    annotate_unreachable() as an asm statement to add the
    .discard.unreachable section, and use the EFI stub.
    
    Closes: https://github.com/ClangBuiltLinux/linux/issues/2023
    Signed-off-by: Nathan Chancellor <[email protected]>
    Acked-by: Huacai Chen <[email protected]>
    Signed-off-by: Ard Biesheuvel <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
erofs: ensure m_llen is reset to 0 if metadata is invalid [+ + +]
Author: Gao Xiang <[email protected]>
Date:   Sun Jun 30 02:57:43 2024 +0800

    erofs: ensure m_llen is reset to 0 if metadata is invalid
    
    [ Upstream commit 9b32b063be1001e322c5f6e01f2a649636947851 ]
    
    Sometimes, the on-disk metadata might be invalid due to user
    interrupts, storage failures, or other unknown causes.
    
    In that case, z_erofs_map_blocks_iter() may still return a valid
    m_llen while other fields remain invalid (e.g., m_plen can be 0).
    
    Due to the return value of z_erofs_scan_folio() in some path will
    be ignored on purpose, the following z_erofs_scan_folio() could
    then use the invalid value by accident.
    
    Let's reset m_llen to 0 to prevent this.
    
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Gao Xiang <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
filelock: Remove locks reliably when fcntl/close race is detected [+ + +]
Author: Jann Horn <[email protected]>
Date:   Tue Jul 2 18:26:52 2024 +0200

    filelock: Remove locks reliably when fcntl/close race is detected
    
    commit 3cad1bc010416c6dd780643476bc59ed742436b9 upstream.
    
    When fcntl_setlk() races with close(), it removes the created lock with
    do_lock_file_wait().
    However, LSMs can allow the first do_lock_file_wait() that created the lock
    while denying the second do_lock_file_wait() that tries to remove the lock.
    In theory (but AFAIK not in practice), posix_lock_file() could also fail to
    remove a lock due to GFP_KERNEL allocation failure (when splitting a range
    in the middle).
    
    After the bug has been triggered, use-after-free reads will occur in
    lock_get_status() when userspace reads /proc/locks. This can likely be used
    to read arbitrary kernel memory, but can't corrupt kernel memory.
    This only affects systems with SELinux / Smack / AppArmor / BPF-LSM in
    enforcing mode and only works from some security contexts.
    
    Fix it by calling locks_remove_posix() instead, which is designed to
    reliably get rid of POSIX locks associated with the given file and
    files_struct and is also used by filp_flush().
    
    Fixes: c293621bbf67 ("[PATCH] stale POSIX lock handling")
    Cc: [email protected]
    Link: https://bugs.chromium.org/p/project-zero/issues/detail?id=2563
    Signed-off-by: Jann Horn <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Jeff Layton <[email protected]>
    Signed-off-by: Christian Brauner <[email protected]>
    [stable fixup: ->c.flc_type was ->fl_type in older kernels]
    Signed-off-by: Jann Horn <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
 
fs/file: fix the check in find_next_fd() [+ + +]
Author: Yuntao Wang <[email protected]>
Date:   Thu May 30 00:06:56 2024 +0800

    fs/file: fix the check in find_next_fd()
    
    [ Upstream commit ed8c7fbdfe117abbef81f65428ba263118ef298a ]
    
    The maximum possible return value of find_next_zero_bit(fdt->full_fds_bits,
    maxbit, bitbit) is maxbit. This return value, multiplied by BITS_PER_LONG,
    gives the value of bitbit, which can never be greater than maxfd, it can
    only be equal to maxfd at most, so the following check 'if (bitbit > maxfd)'
    will never be true.
    
    Moreover, when bitbit equals maxfd, it indicates that there are no unused
    fds, and the function can directly return.
    
    Fix this check.
    
    Signed-off-by: Yuntao Wang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Jan Kara <[email protected]>
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
fs: better handle deep ancestor chains in is_subdir() [+ + +]
Author: Christian Brauner <[email protected]>
Date:   Tue Jul 2 21:03:26 2024 +0200

    fs: better handle deep ancestor chains in is_subdir()
    
    [ Upstream commit 391b59b045004d5b985d033263ccba3e941a7740 ]
    
    Jan reported that 'cd ..' may take a long time in deep directory
    hierarchies under a bind-mount. If concurrent renames happen it is
    possible to livelock in is_subdir() because it will keep retrying.
    
    Change is_subdir() from simply retrying over and over to retry once and
    then acquire the rename lock to handle deep ancestor chains better. The
    list of alternatives to this approach were less then pleasant. Change
    the scope of rcu lock to cover the whole walk while at it.
    
    A big thanks to Jan and Linus. Both Jan and Linus had proposed
    effectively the same thing just that one version ended up being slightly
    more elegant.
    
    Reported-by: Jan Kara <[email protected]>
    Signed-off-by: Linus Torvalds <[email protected]>
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
gpio: pca953x: fix pca953x_irq_bus_sync_unlock race [+ + +]
Author: Ian Ray <[email protected]>
Date:   Thu Jun 20 07:29:15 2024 +0300

    gpio: pca953x: fix pca953x_irq_bus_sync_unlock race
    
    [ Upstream commit bfc6444b57dc7186b6acc964705d7516cbaf3904 ]
    
    Ensure that `i2c_lock' is held when setting interrupt latch and mask in
    pca953x_irq_bus_sync_unlock() in order to avoid races.
    
    The other (non-probe) call site pca953x_gpio_set_multiple() ensures the
    lock is held before calling pca953x_write_regs().
    
    The problem occurred when a request raced against irq_bus_sync_unlock()
    approximately once per thousand reboots on an i.MX8MP based system.
    
     * Normal case
    
       0-0022: write register AI|3a {03,02,00,00,01} Input latch P0
       0-0022: write register AI|49 {fc,fd,ff,ff,fe} Interrupt mask P0
       0-0022: write register AI|08 {ff,00,00,00,00} Output P3
       0-0022: write register AI|12 {fc,00,00,00,00} Config P3
    
     * Race case
    
       0-0022: write register AI|08 {ff,00,00,00,00} Output P3
       0-0022: write register AI|08 {03,02,00,00,01} *** Wrong register ***
       0-0022: write register AI|12 {fc,00,00,00,00} Config P3
       0-0022: write register AI|49 {fc,fd,ff,ff,fe} Interrupt mask P0
    
    Signed-off-by: Ian Ray <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Bartosz Golaszewski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
hfsplus: fix uninit-value in copy_name [+ + +]
Author: Edward Adam Davis <[email protected]>
Date:   Tue May 21 13:21:46 2024 +0800

    hfsplus: fix uninit-value in copy_name
    
    [ Upstream commit 0570730c16307a72f8241df12363f76600baf57d ]
    
    [syzbot reported]
    BUG: KMSAN: uninit-value in sized_strscpy+0xc4/0x160
     sized_strscpy+0xc4/0x160
     copy_name+0x2af/0x320 fs/hfsplus/xattr.c:411
     hfsplus_listxattr+0x11e9/0x1a50 fs/hfsplus/xattr.c:750
     vfs_listxattr fs/xattr.c:493 [inline]
     listxattr+0x1f3/0x6b0 fs/xattr.c:840
     path_listxattr fs/xattr.c:864 [inline]
     __do_sys_listxattr fs/xattr.c:876 [inline]
     __se_sys_listxattr fs/xattr.c:873 [inline]
     __x64_sys_listxattr+0x16b/0x2f0 fs/xattr.c:873
     x64_sys_call+0x2ba0/0x3b50 arch/x86/include/generated/asm/syscalls_64.h:195
     do_syscall_x64 arch/x86/entry/common.c:52 [inline]
     do_syscall_64+0xcf/0x1e0 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Uninit was created at:
     slab_post_alloc_hook mm/slub.c:3877 [inline]
     slab_alloc_node mm/slub.c:3918 [inline]
     kmalloc_trace+0x57b/0xbe0 mm/slub.c:4065
     kmalloc include/linux/slab.h:628 [inline]
     hfsplus_listxattr+0x4cc/0x1a50 fs/hfsplus/xattr.c:699
     vfs_listxattr fs/xattr.c:493 [inline]
     listxattr+0x1f3/0x6b0 fs/xattr.c:840
     path_listxattr fs/xattr.c:864 [inline]
     __do_sys_listxattr fs/xattr.c:876 [inline]
     __se_sys_listxattr fs/xattr.c:873 [inline]
     __x64_sys_listxattr+0x16b/0x2f0 fs/xattr.c:873
     x64_sys_call+0x2ba0/0x3b50 arch/x86/include/generated/asm/syscalls_64.h:195
     do_syscall_x64 arch/x86/entry/common.c:52 [inline]
     do_syscall_64+0xcf/0x1e0 arch/x86/entry/common.c:83
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    [Fix]
    When allocating memory to strbuf, initialize memory to 0.
    
    Reported-and-tested-by: [email protected]
    Signed-off-by: Edward Adam Davis <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reported-and-tested-by: [email protected]
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
HID: Ignore battery for ELAN touchscreens 2F2C and 4116 [+ + +]
Author: Louis Dalibard <[email protected]>
Date:   Fri Jun 7 16:53:43 2024 +0200

    HID: Ignore battery for ELAN touchscreens 2F2C and 4116
    
    [ Upstream commit a3a5a37efba11b7cf1a86abe7bccfbcdb521764e ]
    
    At least ASUS Zenbook 14 (2023) and ASUS Zenbook 14 Pro (2023) are affected.
    
    The touchscreen reports a battery status of 0% and jumps to 1% when a
    stylus is used.
    
    The device ID was added and the battery ignore quirk was enabled for it.
    
    [[email protected]: reformatted changelog a bit]
    Signed-off-by: Louis Dalibard <[email protected]>
    Signed-off-by: Jiri Kosina <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ibmvnic: Add tx check to prevent skb leak [+ + +]
Author: Nick Child <[email protected]>
Date:   Thu Jun 20 10:23:11 2024 -0500

    ibmvnic: Add tx check to prevent skb leak
    
    [ Upstream commit 0983d288caf984de0202c66641577b739caad561 ]
    
    Below is a summary of how the driver stores a reference to an skb during
    transmit:
        tx_buff[free_map[consumer_index]]->skb = new_skb;
        free_map[consumer_index] = IBMVNIC_INVALID_MAP;
        consumer_index ++;
    Where variable data looks like this:
        free_map == [4, IBMVNIC_INVALID_MAP, IBMVNIC_INVALID_MAP, 0, 3]
                                                    consumer_index^
        tx_buff == [skb=null, skb=<ptr>, skb=<ptr>, skb=null, skb=null]
    
    The driver has checks to ensure that free_map[consumer_index] pointed to
    a valid index but there was no check to ensure that this index pointed
    to an unused/null skb address. So, if, by some chance, our free_map and
    tx_buff lists become out of sync then we were previously risking an
    skb memory leak. This could then cause tcp congestion control to stop
    sending packets, eventually leading to ETIMEDOUT.
    
    Therefore, add a conditional to ensure that the skb address is null. If
    not then warn the user (because this is still a bug that should be
    patched) and free the old pointer to prevent memleak/tcp problems.
    
    Signed-off-by: Nick Child <[email protected]>
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ila: block BH in ila_output() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Fri May 31 13:26:35 2024 +0000

    ila: block BH in ila_output()
    
    [ Upstream commit cf28ff8e4c02e1ffa850755288ac954b6ff0db8c ]
    
    As explained in commit 1378817486d6 ("tipc: block BH
    before using dst_cache"), net/core/dst_cache.c
    helpers need to be called with BH disabled.
    
    ila_output() is called from lwtunnel_output()
    possibly from process context, and under rcu_read_lock().
    
    We might be interrupted by a softirq, re-enter ila_output()
    and corrupt dst_cache data structures.
    
    Fix the race by using local_bh_disable().
    
    Signed-off-by: Eric Dumazet <[email protected]>
    Acked-by: Paolo Abeni <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
input: Add event code for accessibility key [+ + +]
Author: Aseda Aboagye <[email protected]>
Date:   Tue Jun 4 23:10:47 2024 +0000

    input: Add event code for accessibility key
    
    [ Upstream commit 0c7dd00de018ff70b3452c424901816e26366a8a ]
    
    HUTRR116 added support for a new usage titled "System Accessibility
    Binding" which toggles a system-wide bound accessibility UI or command.
    This commit simply adds a new event code for the usage.
    
    Signed-off-by: Aseda Aboagye <[email protected]>
    Acked-by: Dmitry Torokhov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Benjamin Tissoires <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

input: Add support for "Do Not Disturb" [+ + +]
Author: Aseda Aboagye <[email protected]>
Date:   Tue Jun 4 23:16:32 2024 +0000

    input: Add support for "Do Not Disturb"
    
    [ Upstream commit 22d6d060ac77955291deb43efc2f3f4f9632c6cb ]
    
    HUTRR94 added support for a new usage titled "System Do Not Disturb"
    which toggles a system-wide Do Not Disturb setting. This commit simply
    adds a new event code for the usage.
    
    Signed-off-by: Aseda Aboagye <[email protected]>
    Acked-by: Dmitry Torokhov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Benjamin Tissoires <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
Input: ads7846 - use spi_device_id table [+ + +]
Author: Alexander Stein <[email protected]>
Date:   Wed Jun 19 14:27:02 2024 +0200

    Input: ads7846 - use spi_device_id table
    
    [ Upstream commit 7c7b1be19b228b450c2945ec379d7fc6bfef9852 ]
    
    As the driver supports more devices over time the single MODULE_ALIAS
    is complete and raises several warnings:
    SPI driver ads7846 has no spi_device_id for ti,tsc2046
    SPI driver ads7846 has no spi_device_id for ti,ads7843
    SPI driver ads7846 has no spi_device_id for ti,ads7845
    SPI driver ads7846 has no spi_device_id for ti,ads7873
    
    Fix this by adding a spi_device_id table and removing the manual
    MODULE_ALIAS.
    
    Signed-off-by: Alexander Stein <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Dmitry Torokhov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Input: elantech - fix touchpad state on resume for Lenovo N24 [+ + +]
Author: Jonathan Denose <[email protected]>
Date:   Fri May 3 16:12:07 2024 +0000

    Input: elantech - fix touchpad state on resume for Lenovo N24
    
    [ Upstream commit a69ce592cbe0417664bc5a075205aa75c2ec1273 ]
    
    The Lenovo N24 on resume becomes stuck in a state where it
    sends incorrect packets, causing elantech_packet_check_v4 to fail.
    The only way for the device to resume sending the correct packets is for
    it to be disabled and then re-enabled.
    
    This change adds a dmi check to trigger this behavior on resume.
    
    Signed-off-by: Jonathan Denose <[email protected]>
    Link: https://lore.kernel.org/r/20240503155020.v2.1.Ifa0e25ebf968d8f307f58d678036944141ab17e6@changeid
    Signed-off-by: Dmitry Torokhov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Input: i8042 - add Ayaneo Kun to i8042 quirk table [+ + +]
Author: Tobias Jakobi <[email protected]>
Date:   Fri May 31 15:43:07 2024 -0700

    Input: i8042 - add Ayaneo Kun to i8042 quirk table
    
    [ Upstream commit 955af6355ddfe35140f9706a635838212a32513b ]
    
    See the added comment for details. Also fix a typo in the
    quirk's define.
    
    Signed-off-by: Tobias Jakobi <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Dmitry Torokhov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

Input: silead - Always support 10 fingers [+ + +]
Author: Hans de Goede <[email protected]>
Date:   Sat May 25 21:38:53 2024 +0200

    Input: silead - Always support 10 fingers
    
    [ Upstream commit 38a38f5a36da9820680d413972cb733349400532 ]
    
    When support for Silead touchscreens was orginal added some touchscreens
    with older firmware versions only supported 5 fingers and this was made
    the default requiring the setting of a "silead,max-fingers=10" uint32
    device-property for all touchscreen models which do support 10 fingers.
    
    There are very few models with the old 5 finger fw, so in practice the
    setting of the "silead,max-fingers=10" is boilerplate which needs to
    be copy and pasted to every touchscreen config.
    
    Reporting that 10 fingers are supported on devices which only support
    5 fingers doesn't cause any problems for userspace in practice, since
    at max 4 finger gestures are supported anyways. Drop the max_fingers
    configuration and simply always assume 10 fingers.
    
    Signed-off-by: Hans de Goede <[email protected]>
    Acked-by: Dmitry Torokhov <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

Input: xpad - add support for ASUS ROG RAIKIRI PRO [+ + +]
Author: Luke D. Jones <[email protected]>
Date:   Fri Jun 7 16:37:48 2024 -0700

    Input: xpad - add support for ASUS ROG RAIKIRI PRO
    
    [ Upstream commit cee77149ebe9cd971ba238d87aa10e09bd98f1c9 ]
    
    Add the VID/PID for ASUS ROG RAIKIRI PRO to the list of known devices.
    
    Signed-off-by: Luke D. Jones <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Dmitry Torokhov <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
iomap: Fix iomap_adjust_read_range for plen calculation [+ + +]
Author: Ritesh Harjani (IBM) <[email protected]>
Date:   Tue May 7 14:25:42 2024 +0530

    iomap: Fix iomap_adjust_read_range for plen calculation
    
    [ Upstream commit f5ceb1bbc98c69536d4673a97315e8427e67de1b ]
    
    If the extent spans the block that contains i_size, we need to handle
    both halves separately so that we properly zero data in the page cache
    for blocks that are entirely outside of i_size. But this is needed only
    when i_size is within the current folio under processing.
    "orig_pos + length > isize" can be true for all folios if the mapped
    extent length is greater than the folio size. That is making plen to
    break for every folio instead of only the last folio.
    
    So use orig_plen for checking if "orig_pos + orig_plen > isize".
    
    Signed-off-by: Ritesh Harjani (IBM) <[email protected]>
    Link: https://lore.kernel.org/r/a32e5f9a4fcfdb99077300c4020ed7ae61d6e0f9.1715067055.git.ritesh.list@gmail.com
    Reviewed-by: Christoph Hellwig <[email protected]>
    Reviewed-by: Darrick J. Wong <[email protected]>
    Reviewed-by: Jan Kara <[email protected]>
    cc: Ojaswin Mujoo <[email protected]>
    Signed-off-by: Christian Brauner <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
kconfig: gconf: give a proper initial state to the Save button [+ + +]
Author: Masahiro Yamada <[email protected]>
Date:   Sun Jun 2 03:20:40 2024 +0900

    kconfig: gconf: give a proper initial state to the Save button
    
    [ Upstream commit 46edf4372e336ef3a61c3126e49518099d2e2e6d ]
    
    Currently, the initial state of the "Save" button is always active.
    
    If none of the CONFIG options are changed while loading the .config
    file, the "Save" button should be greyed out.
    
    This can be fixed by calling conf_read() after widget initialization.
    
    Signed-off-by: Masahiro Yamada <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

kconfig: remove wrong expr_trans_bool() [+ + +]
Author: Masahiro Yamada <[email protected]>
Date:   Tue Jun 4 01:19:04 2024 +0900

    kconfig: remove wrong expr_trans_bool()
    
    [ Upstream commit 77a92660d8fe8d29503fae768d9f5eb529c88b36 ]
    
    expr_trans_bool() performs an incorrect transformation.
    
    [Test Code]
    
        config MODULES
                def_bool y
                modules
    
        config A
                def_bool y
                select C if B != n
    
        config B
                def_tristate m
    
        config C
                tristate
    
    [Result]
    
        CONFIG_MODULES=y
        CONFIG_A=y
        CONFIG_B=m
        CONFIG_C=m
    
    This output is incorrect because CONFIG_C=y is expected.
    
    Documentation/kbuild/kconfig-language.rst clearly explains the function
    of the '!=' operator:
    
        If the values of both symbols are equal, it returns 'n',
        otherwise 'y'.
    
    Therefore, the statement:
    
        select C if B != n
    
    should be equivalent to:
    
        select C if y
    
    Or, more simply:
    
        select C
    
    Hence, the symbol C should be selected by the value of A, which is 'y'.
    
    However, expr_trans_bool() wrongly transforms it to:
    
        select C if B
    
    Therefore, the symbol C is selected by (A && B), which is 'm'.
    
    The comment block of expr_trans_bool() correctly explains its intention:
    
      * bool FOO!=n => FOO
        ^^^^
    
    If FOO is bool, FOO!=n can be simplified into FOO. This is correct.
    
    However, the actual code performs this transformation when FOO is
    tristate:
    
        if (e->left.sym->type == S_TRISTATE) {
                                 ^^^^^^^^^^
    
    While it can be fixed to S_BOOLEAN, there is no point in doing so
    because expr_tranform() already transforms FOO!=n to FOO when FOO is
    bool. (see the "case E_UNEQUAL" part)
    
    expr_trans_bool() is wrong and unnecessary.
    
    Signed-off-by: Masahiro Yamada <[email protected]>
    Acked-by: Randy Dunlap <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
ksmbd: return FILE_DEVICE_DISK instead of super magic [+ + +]
Author: Namjae Jeon <[email protected]>
Date:   Mon Jun 24 08:39:23 2024 +0900

    ksmbd: return FILE_DEVICE_DISK instead of super magic
    
    [ Upstream commit 25a6e135569b3901452e4863c94560df7c11c492 ]
    
    MS-SMB2 specification describes setting ->DeviceType to FILE_DEVICE_DISK
    or FILE_DEVICE_CD_ROM. Set FILE_DEVICE_DISK instead of super magic in
    FS_DEVICE_INFORMATION. And Set FILE_READ_ONLY_DEVICE for read-only share.
    
    Signed-off-by: Namjae Jeon <[email protected]>
    Signed-off-by: Steve French <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
KVM: PPC: Book3S HV: Prevent UAF in kvm_spapr_tce_attach_iommu_group() [+ + +]
Author: Michael Ellerman <[email protected]>
Date:   Fri Jun 14 22:29:10 2024 +1000

    KVM: PPC: Book3S HV: Prevent UAF in kvm_spapr_tce_attach_iommu_group()
    
    [ Upstream commit a986fa57fd81a1430e00b3c6cf8a325d6f894a63 ]
    
    Al reported a possible use-after-free (UAF) in kvm_spapr_tce_attach_iommu_group().
    
    It looks up `stt` from tablefd, but then continues to use it after doing
    fdput() on the returned fd. After the fdput() the tablefd is free to be
    closed by another thread. The close calls kvm_spapr_tce_release() and
    then release_spapr_tce_table() (via call_rcu()) which frees `stt`.
    
    Although there are calls to rcu_read_lock() in
    kvm_spapr_tce_attach_iommu_group() they are not sufficient to prevent
    the UAF, because `stt` is used outside the locked regions.
    
    With an artifcial delay after the fdput() and a userspace program which
    triggers the race, KASAN detects the UAF:
    
      BUG: KASAN: slab-use-after-free in kvm_spapr_tce_attach_iommu_group+0x298/0x720 [kvm]
      Read of size 4 at addr c000200027552c30 by task kvm-vfio/2505
      CPU: 54 PID: 2505 Comm: kvm-vfio Not tainted 6.10.0-rc3-next-20240612-dirty #1
      Hardware name: 8335-GTH POWER9 0x4e1202 opal:skiboot-v6.5.3-35-g1851b2a06 PowerNV
      Call Trace:
        dump_stack_lvl+0xb4/0x108 (unreliable)
        print_report+0x2b4/0x6ec
        kasan_report+0x118/0x2b0
        __asan_load4+0xb8/0xd0
        kvm_spapr_tce_attach_iommu_group+0x298/0x720 [kvm]
        kvm_vfio_set_attr+0x524/0xac0 [kvm]
        kvm_device_ioctl+0x144/0x240 [kvm]
        sys_ioctl+0x62c/0x1810
        system_call_exception+0x190/0x440
        system_call_vectored_common+0x15c/0x2ec
      ...
      Freed by task 0:
       ...
       kfree+0xec/0x3e0
       release_spapr_tce_table+0xd4/0x11c [kvm]
       rcu_core+0x568/0x16a0
       handle_softirqs+0x23c/0x920
       do_softirq_own_stack+0x6c/0x90
       do_softirq_own_stack+0x58/0x90
       __irq_exit_rcu+0x218/0x2d0
       irq_exit+0x30/0x80
       arch_local_irq_restore+0x128/0x230
       arch_local_irq_enable+0x1c/0x30
       cpuidle_enter_state+0x134/0x5cc
       cpuidle_enter+0x6c/0xb0
       call_cpuidle+0x7c/0x100
       do_idle+0x394/0x410
       cpu_startup_entry+0x60/0x70
       start_secondary+0x3fc/0x410
       start_secondary_prolog+0x10/0x14
    
    Fix it by delaying the fdput() until `stt` is no longer in use, which
    is effectively the entire function. To keep the patch minimal add a call
    to fdput() at each of the existing return paths. Future work can convert
    the function to goto or __cleanup style cleanup.
    
    With the fix in place the test case no longer triggers the UAF.
    
    Reported-by: Al Viro <[email protected]>
    Closes: https://lore.kernel.org/all/20240610024437.GA1464458@ZenIV/
    Signed-off-by: Michael Ellerman <[email protected]>
    Link: https://msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
Linux: Linux 6.6.42 [+ + +]
Author: Greg Kroah-Hartman <[email protected]>
Date:   Thu Jul 25 09:50:58 2024 +0200

    Linux 6.6.42
    
    Link: https://lore.kernel.org/r/[email protected]
    Tested-by: Florian Fainelli <[email protected]>
    Tested-by: Jon Hunter <[email protected]>
    Tested-by: Harshit Mogalapalli <[email protected]>
    Tested-by: Conor Dooley <[email protected]>
    Tested-by: Mark Brown <[email protected]>
    Tested-by: Takeshi Ogasawara <[email protected]>
    Tested-by: Peter Schneider <[email protected]>
    Tested-by: kernelci.org bot <[email protected]>
    Tested-by: Shuah Khan <[email protected]>
    Tested-by: Linux Kernel Functional Testing <[email protected]>
    Tested-by: Ron Economos <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
mei: demote client disconnect warning on suspend to debug [+ + +]
Author: Alexander Usyskin <[email protected]>
Date:   Thu May 30 12:14:15 2024 +0300

    mei: demote client disconnect warning on suspend to debug
    
    [ Upstream commit 1db5322b7e6b58e1b304ce69a50e9dca798ca95b ]
    
    Change level for the "not connected" client message in the write
    callback from error to debug.
    
    The MEI driver currently disconnects all clients upon system suspend.
    This behavior is by design and user-space applications with
    open connections before the suspend are expected to handle errors upon
    resume, by reopening their handles, reconnecting,
    and retrying their operations.
    
    However, the current driver implementation logs an error message every
    time a write operation is attempted on a disconnected client.
    Since this is a normal and expected flow after system resume
    logging this as an error can be misleading.
    
    Signed-off-by: Alexander Usyskin <[email protected]>
    Signed-off-by: Tomas Winkler <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Greg Kroah-Hartman <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
mips: fix compat_sys_lseek syscall [+ + +]
Author: Arnd Bergmann <[email protected]>
Date:   Thu Jun 20 18:23:04 2024 +0200

    mips: fix compat_sys_lseek syscall
    
    [ Upstream commit 0d5679a0aae2d8cda72169452c32e5cb88a7ab33 ]
    
    This is almost compatible, but passing a negative offset should result
    in a EINVAL error, but on mips o32 compat mode would seek to a large
    32-bit byte offset.
    
    Use compat_sys_lseek() to correctly sign-extend the argument.
    
    Signed-off-by: Arnd Bergmann <[email protected]>
    Signed-off-by: Thomas Bogendoerfer <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
mm: page_ref: remove folio_try_get_rcu() [+ + +]
Author: Yang Shi <[email protected]>
Date:   Tue Jun 25 13:53:50 2024 -0700

    mm: page_ref: remove folio_try_get_rcu()
    
    commit fa2690af573dfefb47ba6eef888797a64b6b5f3c upstream.
    
    The below bug was reported on a non-SMP kernel:
    
    [  275.267158][ T4335] ------------[ cut here ]------------
    [  275.267949][ T4335] kernel BUG at include/linux/page_ref.h:275!
    [  275.268526][ T4335] invalid opcode: 0000 [#1] KASAN PTI
    [  275.269001][ T4335] CPU: 0 PID: 4335 Comm: trinity-c3 Not tainted 6.7.0-rc4-00061-gefa7df3e3bb5 #1
    [  275.269787][ T4335] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014
    [  275.270679][ T4335] RIP: 0010:try_get_folio (include/linux/page_ref.h:275 (discriminator 3) mm/gup.c:79 (discriminator 3))
    [  275.272813][ T4335] RSP: 0018:ffffc90005dcf650 EFLAGS: 00010202
    [  275.273346][ T4335] RAX: 0000000000000246 RBX: ffffea00066e0000 RCX: 0000000000000000
    [  275.274032][ T4335] RDX: fffff94000cdc007 RSI: 0000000000000004 RDI: ffffea00066e0034
    [  275.274719][ T4335] RBP: ffffea00066e0000 R08: 0000000000000000 R09: fffff94000cdc006
    [  275.275404][ T4335] R10: ffffea00066e0037 R11: 0000000000000000 R12: 0000000000000136
    [  275.276106][ T4335] R13: ffffea00066e0034 R14: dffffc0000000000 R15: ffffea00066e0008
    [  275.276790][ T4335] FS:  00007fa2f9b61740(0000) GS:ffffffff89d0d000(0000) knlGS:0000000000000000
    [  275.277570][ T4335] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  275.278143][ T4335] CR2: 00007fa2f6c00000 CR3: 0000000134b04000 CR4: 00000000000406f0
    [  275.278833][ T4335] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [  275.279521][ T4335] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [  275.280201][ T4335] Call Trace:
    [  275.280499][ T4335]  <TASK>
    [ 275.280751][ T4335] ? die (arch/x86/kernel/dumpstack.c:421 arch/x86/kernel/dumpstack.c:434 arch/x86/kernel/dumpstack.c:447)
    [ 275.281087][ T4335] ? do_trap (arch/x86/kernel/traps.c:112 arch/x86/kernel/traps.c:153)
    [ 275.281463][ T4335] ? try_get_folio (include/linux/page_ref.h:275 (discriminator 3) mm/gup.c:79 (discriminator 3))
    [ 275.281884][ T4335] ? try_get_folio (include/linux/page_ref.h:275 (discriminator 3) mm/gup.c:79 (discriminator 3))
    [ 275.282300][ T4335] ? do_error_trap (arch/x86/kernel/traps.c:174)
    [ 275.282711][ T4335] ? try_get_folio (include/linux/page_ref.h:275 (discriminator 3) mm/gup.c:79 (discriminator 3))
    [ 275.283129][ T4335] ? handle_invalid_op (arch/x86/kernel/traps.c:212)
    [ 275.283561][ T4335] ? try_get_folio (include/linux/page_ref.h:275 (discriminator 3) mm/gup.c:79 (discriminator 3))
    [ 275.283990][ T4335] ? exc_invalid_op (arch/x86/kernel/traps.c:264)
    [ 275.284415][ T4335] ? asm_exc_invalid_op (arch/x86/include/asm/idtentry.h:568)
    [ 275.284859][ T4335] ? try_get_folio (include/linux/page_ref.h:275 (discriminator 3) mm/gup.c:79 (discriminator 3))
    [ 275.285278][ T4335] try_grab_folio (mm/gup.c:148)
    [ 275.285684][ T4335] __get_user_pages (mm/gup.c:1297 (discriminator 1))
    [ 275.286111][ T4335] ? __pfx___get_user_pages (mm/gup.c:1188)
    [ 275.286579][ T4335] ? __pfx_validate_chain (kernel/locking/lockdep.c:3825)
    [ 275.287034][ T4335] ? mark_lock (kernel/locking/lockdep.c:4656 (discriminator 1))
    [ 275.287416][ T4335] __gup_longterm_locked (mm/gup.c:1509 mm/gup.c:2209)
    [ 275.288192][ T4335] ? __pfx___gup_longterm_locked (mm/gup.c:2204)
    [ 275.288697][ T4335] ? __pfx_lock_acquire (kernel/locking/lockdep.c:5722)
    [ 275.289135][ T4335] ? __pfx___might_resched (kernel/sched/core.c:10106)
    [ 275.289595][ T4335] pin_user_pages_remote (mm/gup.c:3350)
    [ 275.290041][ T4335] ? __pfx_pin_user_pages_remote (mm/gup.c:3350)
    [ 275.290545][ T4335] ? find_held_lock (kernel/locking/lockdep.c:5244 (discriminator 1))
    [ 275.290961][ T4335] ? mm_access (kernel/fork.c:1573)
    [ 275.291353][ T4335] process_vm_rw_single_vec+0x142/0x360
    [ 275.291900][ T4335] ? __pfx_process_vm_rw_single_vec+0x10/0x10
    [ 275.292471][ T4335] ? mm_access (kernel/fork.c:1573)
    [ 275.292859][ T4335] process_vm_rw_core+0x272/0x4e0
    [ 275.293384][ T4335] ? hlock_class (arch/x86/include/asm/bitops.h:227 arch/x86/include/asm/bitops.h:239 include/asm-generic/bitops/instrumented-non-atomic.h:142 kernel/locking/lockdep.c:228)
    [ 275.293780][ T4335] ? __pfx_process_vm_rw_core+0x10/0x10
    [ 275.294350][ T4335] process_vm_rw (mm/process_vm_access.c:284)
    [ 275.294748][ T4335] ? __pfx_process_vm_rw (mm/process_vm_access.c:259)
    [ 275.295197][ T4335] ? __task_pid_nr_ns (include/linux/rcupdate.h:306 (discriminator 1) include/linux/rcupdate.h:780 (discriminator 1) kernel/pid.c:504 (discriminator 1))
    [ 275.295634][ T4335] __x64_sys_process_vm_readv (mm/process_vm_access.c:291)
    [ 275.296139][ T4335] ? syscall_enter_from_user_mode (kernel/entry/common.c:94 kernel/entry/common.c:112)
    [ 275.296642][ T4335] do_syscall_64 (arch/x86/entry/common.c:51 (discriminator 1) arch/x86/entry/common.c:82 (discriminator 1))
    [ 275.297032][ T4335] ? __task_pid_nr_ns (include/linux/rcupdate.h:306 (discriminator 1) include/linux/rcupdate.h:780 (discriminator 1) kernel/pid.c:504 (discriminator 1))
    [ 275.297470][ T4335] ? lockdep_hardirqs_on_prepare (kernel/locking/lockdep.c:4300 kernel/locking/lockdep.c:4359)
    [ 275.297988][ T4335] ? do_syscall_64 (arch/x86/include/asm/cpufeature.h:171 arch/x86/entry/common.c:97)
    [ 275.298389][ T4335] ? lockdep_hardirqs_on_prepare (kernel/locking/lockdep.c:4300 kernel/locking/lockdep.c:4359)
    [ 275.298906][ T4335] ? do_syscall_64 (arch/x86/include/asm/cpufeature.h:171 arch/x86/entry/common.c:97)
    [ 275.299304][ T4335] ? do_syscall_64 (arch/x86/include/asm/cpufeature.h:171 arch/x86/entry/common.c:97)
    [ 275.299703][ T4335] ? do_syscall_64 (arch/x86/include/asm/cpufeature.h:171 arch/x86/entry/common.c:97)
    [ 275.300115][ T4335] entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:129)
    
    This BUG is the VM_BUG_ON(!in_atomic() && !irqs_disabled()) assertion in
    folio_ref_try_add_rcu() for non-SMP kernel.
    
    The process_vm_readv() calls GUP to pin the THP. An optimization for
    pinning THP instroduced by commit 57edfcfd3419 ("mm/gup: accelerate thp
    gup even for "pages != NULL"") calls try_grab_folio() to pin the THP,
    but try_grab_folio() is supposed to be called in atomic context for
    non-SMP kernel, for example, irq disabled or preemption disabled, due to
    the optimization introduced by commit e286781d5f2e ("mm: speculative
    page references").
    
    The commit efa7df3e3bb5 ("mm: align larger anonymous mappings on THP
    boundaries") is not actually the root cause although it was bisected to.
    It just makes the problem exposed more likely.
    
    The follow up discussion suggested the optimization for non-SMP kernel
    may be out-dated and not worth it anymore [1].  So removing the
    optimization to silence the BUG.
    
    However calling try_grab_folio() in GUP slow path actually is
    unnecessary, so the following patch will clean this up.
    
    [1] https://lore.kernel.org/linux-mm/821cf1d6-92b9-4ac4-bacc-d8f2364ac14f@paulmck-laptop/
    
    Link: https://lkml.kernel.org/r/[email protected]
    Fixes: 57edfcfd3419 ("mm/gup: accelerate thp gup even for "pages != NULL"")
    Signed-off-by: Yang Shi <[email protected]>
    Reported-by: kernel test robot <[email protected]>
    Tested-by: Oliver Sang <[email protected]>
    Acked-by: Peter Xu <[email protected]>
    Acked-by: David Hildenbrand <[email protected]>
    Cc: Christoph Lameter <[email protected]>
    Cc: Matthew Wilcox (Oracle) <[email protected]>
    Cc: Paul E. McKenney <[email protected]>
    Cc: Rik van Riel <[email protected]>
    Cc: Vivek Kasireddy <[email protected]>
    Cc: <[email protected]>    [6.6+]
    Signed-off-by: Andrew Morton <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
net: ipv6: rpl_iptunnel: block BH in rpl_output() and rpl_input() [+ + +]
Author: Eric Dumazet <[email protected]>
Date:   Fri May 31 13:26:33 2024 +0000

    net: ipv6: rpl_iptunnel: block BH in rpl_output() and rpl_input()
    
    [ Upstream commit db0090c6eb12c31246438b7fe2a8f1b833e7a653 ]
    
    As explained in commit 1378817486d6 ("tipc: block BH
    before using dst_cache"), net/core/dst_cache.c
    helpers need to be called with BH disabled.
    
    Disabling preemption in rpl_output() is not good enough,
    because rpl_output() is called from process context,
    lwtunnel_output() only uses rcu_read_lock().
    
    We might be interrupted by a softirq, re-enter rpl_output()
    and corrupt dst_cache data structures.
    
    Fix the race by using local_bh_disable() instead of
    preempt_disable().
    
    Apply a similar change in rpl_input().
    
    Signed-off-by: Eric Dumazet <[email protected]>
    Cc: Alexander Aring <[email protected]>
    Acked-by: Paolo Abeni <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: mac802154: Fix racy device stats updates by DEV_STATS_INC() and DEV_STATS_ADD() [+ + +]
Author: Yunshui Jiang <[email protected]>
Date:   Fri May 31 16:07:39 2024 +0800

    net: mac802154: Fix racy device stats updates by DEV_STATS_INC() and DEV_STATS_ADD()
    
    [ Upstream commit b8ec0dc3845f6c9089573cb5c2c4b05f7fc10728 ]
    
    mac802154 devices update their dev->stats fields locklessly. Therefore
    these counters should be updated atomically. Adopt SMP safe DEV_STATS_INC()
    and DEV_STATS_ADD() to achieve this.
    
    Signed-off-by: Yunshui Jiang <[email protected]>
    Message-ID: <[email protected]>
    Signed-off-by: Stefan Schmidt <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

net: usb: qmi_wwan: add Telit FN912 compositions [+ + +]
Author: Daniele Palmas <[email protected]>
Date:   Tue Jun 25 12:22:36 2024 +0200

    net: usb: qmi_wwan: add Telit FN912 compositions
    
    [ Upstream commit 77453e2b015b5ced5b3f45364dd5a72dfc3bdecb ]
    
    Add the following Telit FN912 compositions:
    
    0x3000: rmnet + tty (AT/NMEA) + tty (AT) + tty (diag)
    T:  Bus=03 Lev=01 Prnt=03 Port=07 Cnt=01 Dev#=  8 Spd=480  MxCh= 0
    D:  Ver= 2.01 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1bc7 ProdID=3000 Rev=05.15
    S:  Manufacturer=Telit Cinterion
    S:  Product=FN912
    S:  SerialNumber=92c4c4d8
    C:  #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=50 Driver=qmi_wwan
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=82(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
    I:  If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=60 Driver=option
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=84(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=86(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    0x3001: rmnet + tty (AT) + tty (diag) + DPL (data packet logging) + adb
    T:  Bus=03 Lev=01 Prnt=03 Port=07 Cnt=01 Dev#=  7 Spd=480  MxCh= 0
    D:  Ver= 2.01 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1bc7 ProdID=3001 Rev=05.15
    S:  Manufacturer=Telit Cinterion
    S:  Product=FN912
    S:  SerialNumber=92c4c4d8
    C:  #Ifs= 5 Cfg#= 1 Atr=e0 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=50 Driver=qmi_wwan
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=82(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
    I:  If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=84(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    I:  If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 3 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=80 Driver=(none)
    E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:  If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=usbfs
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    Signed-off-by: Daniele Palmas <[email protected]>
    Acked-by: Bjørn Mork <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Jakub Kicinski <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
netfs, fscache: export fscache_put_volume() and add fscache_try_get_volume() [+ + +]
Author: Baokun Li <[email protected]>
Date:   Fri Jul 19 21:40:02 2024 +0800

    netfs, fscache: export fscache_put_volume() and add fscache_try_get_volume()
    
    [ Upstream commit 85b08b31a22b481ec6528130daf94eee4452e23f ]
    
    Export fscache_put_volume() and add fscache_try_get_volume()
    helper function to allow cachefiles to get/put fscache_volume
    via linux/fscache-cache.h.
    
    Signed-off-by: Baokun Li <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Christian Brauner <[email protected]>
    Stable-dep-of: 522018a0de6b ("cachefiles: fix slab-use-after-free in fscache_withdraw_volume()")
    Stable-dep-of: 5d8f80578907 ("cachefiles: fix slab-use-after-free in cachefiles_withdraw_cookie()")
    Signed-off-by: Baokun Li <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

 
nfs: Avoid flushing many pages with NFS_FILE_SYNC [+ + +]
Author: Jan Kara <[email protected]>
Date:   Fri May 24 18:14:19 2024 +0200

    nfs: Avoid flushing many pages with NFS_FILE_SYNC
    
    [ Upstream commit a527c3ba41c4c61e2069bfce4091e5515f06a8dd ]
    
    When we are doing WB_SYNC_ALL writeback, nfs submits write requests with
    NFS_FILE_SYNC flag to the server (which then generally treats it as an
    O_SYNC write). This helps to reduce latency for single requests but when
    submitting more requests, additional fsyncs on the server side hurt
    latency. NFS generally avoids this additional overhead by not setting
    NFS_FILE_SYNC if desc->pg_moreio is set.
    
    However this logic doesn't always work. When we do random 4k writes to a huge
    file and then call fsync(2), each page writeback is going to be sent with
    NFS_FILE_SYNC because after preparing one page for writeback, we start writing
    back next, nfs_do_writepage() will call nfs_pageio_cond_complete() which finds
    the page is not contiguous with previously prepared IO and submits is *without*
    setting desc->pg_moreio.  Hence NFS_FILE_SYNC is used resulting in poor
    performance.
    
    Fix the problem by setting desc->pg_moreio in nfs_pageio_cond_complete() before
    submitting outstanding IO. This improves throughput of
    fsync-after-random-writes on my test SSD from ~70MB/s to ~250MB/s.
    
    Signed-off-by: Jan Kara <[email protected]>
    Signed-off-by: Trond Myklebust <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

nfs: don't invalidate dentries on transient errors [+ + +]
Author: Scott Mayhew <[email protected]>
Date:   Thu May 23 15:01:22 2024 -0400

    nfs: don't invalidate dentries on transient errors
    
    [ Upstream commit 0c8c7c559740d2d8b66048162af6c4dba8f0c88c ]
    
    This is a slight variation on a patch previously proposed by Neil Brown
    that never got merged.
    
    Prior to commit 5ceb9d7fdaaf ("NFS: Refactor nfs_lookup_revalidate()"),
    any error from nfs_lookup_verify_inode() other than -ESTALE would result
    in nfs_lookup_revalidate() returning that error (-ESTALE is mapped to
    zero).
    
    Since that commit, all errors result in nfs_lookup_revalidate()
    returning zero, resulting in dentries being invalidated where they
    previously were not (particularly in the case of -ERESTARTSYS).
    
    Fix it by passing the actual error code to nfs_lookup_revalidate_done(),
    and leaving the decision on whether to  map the error code to zero or
    one to nfs_lookup_revalidate_done().
    
    A simple reproducer is to run the following python code in a
    subdirectory of an NFS mount (not in the root of the NFS mount):
    
    ---8<---
    import os
    import multiprocessing
    import time
    
    if __name__=="__main__":
        multiprocessing.set_start_method("spawn")
    
        count = 0
        while True:
            try:
                os.getcwd()
                pool = multiprocessing.Pool(10)
                pool.close()
                pool.terminate()
                count += 1
            except Exception as e:
                print(f"Failed after {count} iterations")
                print(e)
                break
    ---8<---
    
    Prior to commit 5ceb9d7fdaaf, the above code would run indefinitely.
    After commit 5ceb9d7fdaaf, it fails almost immediately with -ENOENT.
    
    Signed-off-by: Scott Mayhew <[email protected]>
    Signed-off-by: Trond Myklebust <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

nfs: propagate readlink errors in nfs_symlink_filler [+ + +]
Author: Sagi Grimberg <[email protected]>
Date:   Tue May 21 15:58:40 2024 +0300

    nfs: propagate readlink errors in nfs_symlink_filler
    
    [ Upstream commit 134d0b3f2440cdddd12fc3444c9c0f62331ce6fc ]
    
    There is an inherent race where a symlink file may have been overriden
    (by a different client) between lookup and readlink, resulting in a
    spurious EIO error returned to userspace. Fix this by propagating back
    ESTALE errors such that the vfs will retry the lookup/get_link (similar
    to nfs4_file_open) at least once.
    
    Cc: Dan Aloni <[email protected]>
    Signed-off-by: Sagi Grimberg <[email protected]>
    Reviewed-by: Jeff Layton <[email protected]>
    Signed-off-by: Trond Myklebust <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
NFSv4: Fix memory leak in nfs4_set_security_label [+ + +]
Author: Dmitry Mastykin <[email protected]>
Date:   Wed May 22 10:45:24 2024 +0300

    NFSv4: Fix memory leak in nfs4_set_security_label
    
    [ Upstream commit aad11473f8f4be3df86461081ce35ec5b145ba68 ]
    
    We leak nfs_fattr and nfs4_label every time we set a security xattr.
    
    Signed-off-by: Dmitry Mastykin <[email protected]>
    Signed-off-by: Trond Myklebust <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
null_blk: fix validation of block size [+ + +]
Author: Andreas Hindborg <[email protected]>
Date:   Mon Jun 3 21:26:45 2024 +0200

    null_blk: fix validation of block size
    
    [ Upstream commit c462ecd659b5fce731f1d592285832fd6ad54053 ]
    
    Block size should be between 512 and PAGE_SIZE and be a power of 2. The current
    check does not validate this, so update the check.
    
    Without this patch, null_blk would Oops due to a null pointer deref when
    loaded with bs=1536 [1].
    
    Link: https://lore.kernel.org/all/[email protected]/
    
    Signed-off-by: Andreas Hindborg <[email protected]>
    Reviewed-by: Ming Lei <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    [axboe: remove unnecessary braces and != 0 check]
    Signed-off-by: Jens Axboe <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
nvme: avoid double free special payload [+ + +]
Author: Chunguang Xu <[email protected]>
Date:   Tue Jun 11 18:02:08 2024 +0800

    nvme: avoid double free special payload
    
    [ Upstream commit e5d574ab37f5f2e7937405613d9b1a724811e5ad ]
    
    If a discard request needs to be retried, and that retry may fail before
    a new special payload is added, a double free will result. Clear the
    RQF_SPECIAL_LOAD when the request is cleaned.
    
    Signed-off-by: Chunguang Xu <[email protected]>
    Reviewed-by: Sagi Grimberg <[email protected]>
    Reviewed-by: Max Gurtovoy <[email protected]>
    Signed-off-by: Keith Busch <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

nvme: fix NVME_NS_DEAC may incorrectly identifying the disk as EXT_LBA. [+ + +]
Author: Boyang Yu <[email protected]>
Date:   Mon Jun 17 21:11:44 2024 +0800

    nvme: fix NVME_NS_DEAC may incorrectly identifying the disk as EXT_LBA.
    
    [ Upstream commit 9570a48847e3acfa1a741cef431c923325ddc637 ]
    
    The value of NVME_NS_DEAC is 3,
    which means NVME_NS_METADATA_SUPPORTED | NVME_NS_EXT_LBAS. Provide a
    unique value for this feature flag.
    
    Fixes 1b96f862eccc ("nvme: implement the DEAC bit for the Write Zeroes command")
    Signed-off-by: Boyang Yu <[email protected]>
    Reviewed-by: Kanchan Joshi <[email protected]>
    Signed-off-by: Keith Busch <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
nvmet: always initialize cqe.result [+ + +]
Author: Daniel Wagner <[email protected]>
Date:   Wed Jun 12 16:11:59 2024 +0200

    nvmet: always initialize cqe.result
    
    [ Upstream commit cd0c1b8e045a8d2785342b385cb2684d9b48e426 ]
    
    The spec doesn't mandate that the first two double words (aka results)
    for the command queue entry need to be set to 0 when they are not
    used (not specified). Though, the target implemention returns 0 for TCP
    and FC but not for RDMA.
    
    Let's make RDMA behave the same and thus explicitly initializing the
    result field. This prevents leaking any data from the stack.
    
    Signed-off-by: Daniel Wagner <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Signed-off-by: Keith Busch <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
octeontx2-pf: Fix coverity and klockwork issues in octeon PF driver [+ + +]
Author: Ratheesh Kannoth <[email protected]>
Date:   Sat Jun 22 12:14:37 2024 +0530

    octeontx2-pf: Fix coverity and klockwork issues in octeon PF driver
    
    [ Upstream commit 02ea312055da84e08e3e5bce2539c1ff11c8b5f2 ]
    
    Fix unintended sign extension and klockwork issues. These are not real
    issue but for sanity checks.
    
    Signed-off-by: Ratheesh Kannoth <[email protected]>
    Signed-off-by: Suman Ghosh <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
of/irq: Disable "interrupt-map" parsing for PASEMI Nemo [+ + +]
Author: Marc Zyngier <[email protected]>
Date:   Tue Jul 2 22:42:46 2024 +0100

    of/irq: Disable "interrupt-map" parsing for PASEMI Nemo
    
    commit 2cf6b7d15a28640117bf9f75dc050892cf78a6e8 upstream.
    
    Once again, we've broken PASEMI Nemo boards with its incomplete
    "interrupt-map" translations. Commit 935df1bd40d4 ("of/irq: Factor out
    parsing of interrupt-map parent phandle+args from of_irq_parse_raw()")
    changed the behavior resulting in the existing work-around not taking
    effect. Rework the work-around to just skip parsing "interrupt-map" up
    front by using the of_irq_imap_abusers list.
    
    Fixes: 935df1bd40d4 ("of/irq: Factor out parsing of interrupt-map parent phandle+args from of_irq_parse_raw()")
    Reported-by: Christian Zigotzky <[email protected]>
    Signed-off-by: Marc Zyngier <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Rob Herring (Arm) <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

of/irq: Factor out parsing of interrupt-map parent phandle+args from of_irq_parse_raw() [+ + +]
Author: Rob Herring (Arm) <[email protected]>
Date:   Wed May 29 14:59:20 2024 -0500

    of/irq: Factor out parsing of interrupt-map parent phandle+args from of_irq_parse_raw()
    
    [ Upstream commit 935df1bd40d43c4ee91838c42a20e9af751885cc ]
    
    Factor out the parsing of interrupt-map interrupt parent phandle and its
    arg cells to a separate function, of_irq_parse_imap_parent(), so that it
    can be used in other parsing scenarios (e.g. fw_devlink).
    
    There was a refcount leak on non-matching entries when iterating thru
    "interrupt-map" which is fixed.
    
    Tested-by: Marc Zyngier <[email protected]>
    Tested-by: Anup Patel <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Rob Herring (Arm) <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
platform/mellanox: nvsw-sn2201: Add check for platform_device_add_resources [+ + +]
Author: Chen Ni <[email protected]>
Date:   Wed Jun 5 11:27:45 2024 +0800

    platform/mellanox: nvsw-sn2201: Add check for platform_device_add_resources
    
    [ Upstream commit d56fbfbaf592a115b2e11c1044829afba34069d2 ]
    
    Add check for the return value of platform_device_add_resources() and
    return the error if it fails in order to catch the error.
    
    Signed-off-by: Chen Ni <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Hans de Goede <[email protected]>
    Signed-off-by: Hans de Goede <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
platform/x86: lg-laptop: Change ACPI device id [+ + +]
Author: Armin Wolf <[email protected]>
Date:   Fri Jun 7 01:35:39 2024 +0200

    platform/x86: lg-laptop: Change ACPI device id
    
    [ Upstream commit 58a54f27a0dac81f7fd3514be01012635219a53c ]
    
    The LGEX0815 ACPI device id is used for handling hotkey events, but
    this functionality is already handled by the wireless-hotkey driver.
    
    The LGEX0820 ACPI device id however is used to manage various
    platform features using the WMAB/WMBB ACPI methods. Use this ACPI
    device id to avoid blocking the wireless-hotkey driver from probing.
    
    Tested-by: Agathe Boutmy <[email protected]>
    Signed-off-by: Armin Wolf <[email protected]>
    Reviewed-by: Ilpo Järvinen <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Hans de Goede <[email protected]>
    Signed-off-by: Hans de Goede <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

platform/x86: lg-laptop: Remove LGEX0815 hotkey handling [+ + +]
Author: Armin Wolf <[email protected]>
Date:   Fri Jun 7 01:35:38 2024 +0200

    platform/x86: lg-laptop: Remove LGEX0815 hotkey handling
    
    [ Upstream commit 413c204595ca98a4f33414a948c18d7314087342 ]
    
    The rfkill hotkey handling is already provided by the wireless-hotkey
    driver. Remove the now unnecessary rfkill hotkey handling to avoid
    duplicating functionality.
    
    The ACPI notify handler still prints debugging information when
    receiving ACPI notifications to aid in reverse-engineering.
    
    Tested-by: Agathe Boutmy <[email protected]>
    Signed-off-by: Armin Wolf <[email protected]>
    Reviewed-by: Ilpo Järvinen <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Hans de Goede <[email protected]>
    Signed-off-by: Hans de Goede <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

platform/x86: lg-laptop: Use ACPI device handle when evaluating WMAB/WMBB [+ + +]
Author: Armin Wolf <[email protected]>
Date:   Fri Jun 7 01:35:40 2024 +0200

    platform/x86: lg-laptop: Use ACPI device handle when evaluating WMAB/WMBB
    
    [ Upstream commit b27ea279556121b54d3f45d0529706cf100cdb3a ]
    
    On the LG Gram 16Z90S, the WMAB and WMBB ACPI methods are not mapped
    under \XINI, but instead are mapped under \_SB.XINI.
    
    The reason for this is that the LGEX0820 ACPI device used by this
    driver is mapped at \_SB.XINI, so the ACPI methods where moved as well
    to appear below the LGEX0820 ACPI device.
    
    Fix this by using the ACPI handle from the ACPI device when evaluating
    both methods.
    
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=218901
    Tested-by: Agathe Boutmy <[email protected]>
    Signed-off-by: Armin Wolf <[email protected]>
    Reviewed-by: Ilpo Järvinen <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Hans de Goede <[email protected]>
    Signed-off-by: Hans de Goede <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

platform/x86: wireless-hotkey: Add support for LG Airplane Button [+ + +]
Author: Armin Wolf <[email protected]>
Date:   Fri Jun 7 01:35:37 2024 +0200

    platform/x86: wireless-hotkey: Add support for LG Airplane Button
    
    [ Upstream commit 151e78a0b89ee6dec93382dbdf5b1ef83f9c4716 ]
    
    The LGEX0815 ACPI device is used by the "LG Airplane Mode Button"
    Windows driver for handling rfkill requests. When the ACPI device
    receives an 0x80 ACPI notification, an rfkill event is to be
    send to userspace.
    
    Add support for the LGEX0815 ACPI device to the driver.
    
    Tested-by: Agathe Boutmy <[email protected]>
    Signed-off-by: Armin Wolf <[email protected]>
    Reviewed-by: Ilpo Järvinen <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Hans de Goede <[email protected]>
    Signed-off-by: Hans de Goede <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
powerpc/eeh: avoid possible crash when edev->pdev changes [+ + +]
Author: Ganesh Goudar <[email protected]>
Date:   Mon Jun 17 19:32:40 2024 +0530

    powerpc/eeh: avoid possible crash when edev->pdev changes
    
    [ Upstream commit a1216e62d039bf63a539bbe718536ec789a853dd ]
    
    If a PCI device is removed during eeh_pe_report_edev(), edev->pdev
    will change and can cause a crash, hold the PCI rescan/remove lock
    while taking a copy of edev->pdev->bus.
    
    Signed-off-by: Ganesh Goudar <[email protected]>
    Signed-off-by: Michael Ellerman <[email protected]>
    Link: https://msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
powerpc/pseries: Whitelist dtl slub object for copying to userspace [+ + +]
Author: Anjali K <[email protected]>
Date:   Fri Jun 14 23:08:44 2024 +0530

    powerpc/pseries: Whitelist dtl slub object for copying to userspace
    
    [ Upstream commit 1a14150e1656f7a332a943154fc486504db4d586 ]
    
    Reading the dispatch trace log from /sys/kernel/debug/powerpc/dtl/cpu-*
    results in a BUG() when the config CONFIG_HARDENED_USERCOPY is enabled as
    shown below.
    
        kernel BUG at mm/usercopy.c:102!
        Oops: Exception in kernel mode, sig: 5 [#1]
        LE PAGE_SIZE=64K MMU=Radix SMP NR_CPUS=2048 NUMA pSeries
        Modules linked in: xfs libcrc32c dm_service_time sd_mod t10_pi sg ibmvfc
        scsi_transport_fc ibmveth pseries_wdt dm_multipath dm_mirror dm_region_hash dm_log dm_mod fuse
        CPU: 27 PID: 1815 Comm: python3 Not tainted 6.10.0-rc3 #85
        Hardware name: IBM,9040-MRX POWER10 (raw) 0x800200 0xf000006 of:IBM,FW1060.00 (NM1060_042) hv:phyp pSeries
        NIP:  c0000000005d23d4 LR: c0000000005d23d0 CTR: 00000000006ee6f8
        REGS: c000000120c078c0 TRAP: 0700   Not tainted  (6.10.0-rc3)
        MSR:  8000000000029033 <SF,EE,ME,IR,DR,RI,LE>  CR: 2828220f  XER: 0000000e
        CFAR: c0000000001fdc80 IRQMASK: 0
        [ ... GPRs omitted ... ]
        NIP [c0000000005d23d4] usercopy_abort+0x78/0xb0
        LR [c0000000005d23d0] usercopy_abort+0x74/0xb0
        Call Trace:
         usercopy_abort+0x74/0xb0 (unreliable)
         __check_heap_object+0xf8/0x120
         check_heap_object+0x218/0x240
         __check_object_size+0x84/0x1a4
         dtl_file_read+0x17c/0x2c4
         full_proxy_read+0x8c/0x110
         vfs_read+0xdc/0x3a0
         ksys_read+0x84/0x144
         system_call_exception+0x124/0x330
         system_call_vectored_common+0x15c/0x2ec
        --- interrupt: 3000 at 0x7fff81f3ab34
    
    Commit 6d07d1cd300f ("usercopy: Restrict non-usercopy caches to size 0")
    requires that only whitelisted areas in slab/slub objects can be copied to
    userspace when usercopy hardening is enabled using CONFIG_HARDENED_USERCOPY.
    Dtl contains hypervisor dispatch events which are expected to be read by
    privileged users. Hence mark this safe for user access.
    Specify useroffset=0 and usersize=DISPATCH_LOG_BYTES to whitelist the
    entire object.
    
    Co-developed-by: Vishal Chourasia <[email protected]>
    Signed-off-by: Vishal Chourasia <[email protected]>
    Signed-off-by: Anjali K <[email protected]>
    Reviewed-by: Srikar Dronamraju <[email protected]>
    Signed-off-by: Michael Ellerman <[email protected]>
    Link: https://msgid.link/[email protected]
    Signed-off-by: Sasha Levin <[email protected]>

 
riscv: stacktrace: fix usage of ftrace_graph_ret_addr() [+ + +]
Author: Puranjay Mohan <[email protected]>
Date:   Tue Jun 18 14:58:20 2024 +0000

    riscv: stacktrace: fix usage of ftrace_graph_ret_addr()
    
    [ Upstream commit 393da6cbb2ff89aadc47683a85269f913aa1c139 ]
    
    ftrace_graph_ret_addr() takes an `idx` integer pointer that is used to
    optimize the stack unwinding. Pass it a valid pointer to utilize the
    optimizations that might be available in the future.
    
    The commit is making riscv's usage of ftrace_graph_ret_addr() match
    x86_64.
    
    Signed-off-by: Puranjay Mohan <[email protected]>
    Reviewed-by: Steven Rostedt (Google) <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Palmer Dabbelt <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
s390/sclp: Fix sclp_init() cleanup on failure [+ + +]
Author: Heiko Carstens <[email protected]>
Date:   Fri Jun 14 18:09:01 2024 +0200

    s390/sclp: Fix sclp_init() cleanup on failure
    
    [ Upstream commit 6434b33faaa063df500af355ee6c3942e0f8d982 ]
    
    If sclp_init() fails it only partially cleans up: if there are multiple
    failing calls to sclp_init() sclp_state_change_event will be added several
    times to sclp_reg_list, which results in the following warning:
    
    ------------[ cut here ]------------
    list_add double add: new=000003ffe1598c10, prev=000003ffe1598bf0, next=000003ffe1598c10.
    WARNING: CPU: 0 PID: 1 at lib/list_debug.c:35 __list_add_valid_or_report+0xde/0xf8
    CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.10.0-rc3
    Krnl PSW : 0404c00180000000 000003ffe0d6076a (__list_add_valid_or_report+0xe2/0xf8)
               R:0 T:1 IO:0 EX:0 Key:0 M:1 W:0 P:0 AS:3 CC:0 PM:0 RI:0 EA:3
    ...
    Call Trace:
     [<000003ffe0d6076a>] __list_add_valid_or_report+0xe2/0xf8
    ([<000003ffe0d60766>] __list_add_valid_or_report+0xde/0xf8)
     [<000003ffe0a8d37e>] sclp_init+0x40e/0x450
     [<000003ffe00009f2>] do_one_initcall+0x42/0x1e0
     [<000003ffe15b77a6>] do_initcalls+0x126/0x150
     [<000003ffe15b7a0a>] kernel_init_freeable+0x1ba/0x1f8
     [<000003ffe0d6650e>] kernel_init+0x2e/0x180
     [<000003ffe000301c>] __ret_from_fork+0x3c/0x60
     [<000003ffe0d759ca>] ret_from_fork+0xa/0x30
    
    Fix this by removing sclp_state_change_event from sclp_reg_list when
    sclp_init() fails.
    
    Reviewed-by: Peter Oberparleiter <[email protected]>
    Signed-off-by: Heiko Carstens <[email protected]>
    Signed-off-by: Alexander Gordeev <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
scsi: core: alua: I/O errors for ALUA state transitions [+ + +]
Author: Martin Wilck <[email protected]>
Date:   Tue May 14 16:03:44 2024 +0200

    scsi: core: alua: I/O errors for ALUA state transitions
    
    [ Upstream commit 10157b1fc1a762293381e9145041253420dfc6ad ]
    
    When a host is configured with a few LUNs and I/O is running, injecting FC
    faults repeatedly leads to path recovery problems.  The LUNs have 4 paths
    each and 3 of them come back active after say an FC fault which makes 2 of
    the paths go down, instead of all 4. This happens after several iterations
    of continuous FC faults.
    
    Reason here is that we're returning an I/O error whenever we're
    encountering sense code 06/04/0a (LOGICAL UNIT NOT ACCESSIBLE, ASYMMETRIC
    ACCESS STATE TRANSITION) instead of retrying.
    
    [mwilck: The original patch was developed by Rajashekhar M A and Hannes
    Reinecke. I moved the code to alua_check_sense() as suggested by Mike
    Christie [1]. Evan Milne had raised the question whether pg->state should
    be set to transitioning in the UA case [2]. I believe that doing this is
    correct. SCSI_ACCESS_STATE_TRANSITIONING by itself doesn't cause I/O
    errors. Our handler schedules an RTPG, which will only result in an I/O
    error condition if the transitioning timeout expires.]
    
    [1] https://lore.kernel.org/all/[email protected]/
    [2] https://lore.kernel.org/all/CAGtn9r=kicnTDE2o7Gt5Y=yoidHYD7tG8XdMHEBJTBraVEoOCw@mail.gmail.com/
    
    Co-developed-by: Rajashekhar M A <[email protected]>
    Co-developed-by: Hannes Reinecke <[email protected]>
    Signed-off-by: Hannes Reinecke <[email protected]>
    Signed-off-by: Martin Wilck <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Damien Le Moal <[email protected]>
    Reviewed-by: Christoph Hellwig <[email protected]>
    Reviewed-by: Mike Christie <[email protected]>
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: libsas: Fix exp-attached device scan after probe failure scanned in again after probe failed [+ + +]
Author: Xingui Yang <[email protected]>
Date:   Wed Jun 19 09:17:42 2024 +0000

    scsi: libsas: Fix exp-attached device scan after probe failure scanned in again after probe failed
    
    [ Upstream commit ab2068a6fb84751836a84c26ca72b3beb349619d ]
    
    The expander phy will be treated as broadcast flutter in the next
    revalidation after the exp-attached end device probe failed, as follows:
    
    [78779.654026] sas: broadcast received: 0
    [78779.654037] sas: REVALIDATING DOMAIN on port 0, pid:10
    [78779.654680] sas: ex 500e004aaaaaaa1f phy05 change count has changed
    [78779.662977] sas: ex 500e004aaaaaaa1f phy05 originated BROADCAST(CHANGE)
    [78779.662986] sas: ex 500e004aaaaaaa1f phy05 new device attached
    [78779.663079] sas: ex 500e004aaaaaaa1f phy05:U:8 attached: 500e004aaaaaaa05 (stp)
    [78779.693542] hisi_sas_v3_hw 0000:b4:02.0: dev[16:5] found
    [78779.701155] sas: done REVALIDATING DOMAIN on port 0, pid:10, res 0x0
    [78779.707864] sas: Enter sas_scsi_recover_host busy: 0 failed: 0
    ...
    [78835.161307] sas: --- Exit sas_scsi_recover_host: busy: 0 failed: 0 tries: 1
    [78835.171344] sas: sas_probe_sata: for exp-attached device 500e004aaaaaaa05 returned -19
    [78835.180879] hisi_sas_v3_hw 0000:b4:02.0: dev[16:5] is gone
    [78835.187487] sas: broadcast received: 0
    [78835.187504] sas: REVALIDATING DOMAIN on port 0, pid:10
    [78835.188263] sas: ex 500e004aaaaaaa1f phy05 change count has changed
    [78835.195870] sas: ex 500e004aaaaaaa1f phy05 originated BROADCAST(CHANGE)
    [78835.195875] sas: ex 500e004aaaaaaa1f rediscovering phy05
    [78835.196022] sas: ex 500e004aaaaaaa1f phy05:U:A attached: 500e004aaaaaaa05 (stp)
    [78835.196026] sas: ex 500e004aaaaaaa1f phy05 broadcast flutter
    [78835.197615] sas: done REVALIDATING DOMAIN on port 0, pid:10, res 0x0
    
    The cause of the problem is that the related ex_phy's attached_sas_addr was
    not cleared after the end device probe failed, so reset it.
    
    Signed-off-by: Xingui Yang <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: John Garry <[email protected]>
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: qedf: Don't process stag work during unload and recovery [+ + +]
Author: Saurav Kashyap <[email protected]>
Date:   Wed May 15 14:40:59 2024 +0530

    scsi: qedf: Don't process stag work during unload and recovery
    
    [ Upstream commit 51071f0831ea975fc045526dd7e17efe669dc6e1 ]
    
    Stag work can cause issues during unload and recovery, hence don't process
    it.
    
    Signed-off-by: Saurav Kashyap <[email protected]>
    Signed-off-by: Nilesh Javali <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: qedf: Set qed_slowpath_params to zero before use [+ + +]
Author: Saurav Kashyap <[email protected]>
Date:   Wed May 15 14:41:01 2024 +0530

    scsi: qedf: Set qed_slowpath_params to zero before use
    
    [ Upstream commit 6c3bb589debd763dc4b94803ddf3c13b4fcca776 ]
    
    Zero qed_slowpath_params before use.
    
    Signed-off-by: Saurav Kashyap <[email protected]>
    Signed-off-by: Nilesh Javali <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: qedf: Wait for stag work during unload [+ + +]
Author: Saurav Kashyap <[email protected]>
Date:   Wed May 15 14:41:00 2024 +0530

    scsi: qedf: Wait for stag work during unload
    
    [ Upstream commit 78e88472b60936025b83eba57cffa59d3501dc07 ]
    
    If stag work is already scheduled and unload is called, it can lead to
    issues as unload cleans up the work element. Wait for stag work to get
    completed before cleanup during unload.
    
    Signed-off-by: Saurav Kashyap <[email protected]>
    Signed-off-by: Nilesh Javali <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

scsi: sr: Fix unintentional arithmetic wraparound [+ + +]
Author: Justin Stitt <[email protected]>
Date:   Wed May 8 17:22:51 2024 +0000

    scsi: sr: Fix unintentional arithmetic wraparound
    
    [ Upstream commit 9fad9d560af5c654bb38e0b07ee54a4e9acdc5cd ]
    
    Running syzkaller with the newly reintroduced signed integer overflow
    sanitizer produces this report:
    
    [   65.194362] ------------[ cut here ]------------
    [   65.197752] UBSAN: signed-integer-overflow in ../drivers/scsi/sr_ioctl.c:436:9
    [   65.203607] -2147483648 * 177 cannot be represented in type 'int'
    [   65.207911] CPU: 2 PID: 10416 Comm: syz-executor.1 Not tainted 6.8.0-rc2-00035-gb3ef86b5a957 #1
    [   65.213585] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
    [   65.219923] Call Trace:
    [   65.221556]  <TASK>
    [   65.223029]  dump_stack_lvl+0x93/0xd0
    [   65.225573]  handle_overflow+0x171/0x1b0
    [   65.228219]  sr_select_speed+0xeb/0xf0
    [   65.230786]  ? __pm_runtime_resume+0xe6/0x130
    [   65.233606]  sr_block_ioctl+0x15d/0x1d0
    ...
    
    Historically, the signed integer overflow sanitizer did not work in the
    kernel due to its interaction with `-fwrapv` but this has since been
    changed [1] in the newest version of Clang. It was re-enabled in the kernel
    with Commit 557f8c582a9b ("ubsan: Reintroduce signed overflow sanitizer").
    
    Firstly, let's change the type of "speed" to unsigned long as
    sr_select_speed()'s only caller passes in an unsigned long anyways.
    
    $ git grep '\.select_speed'
    |       drivers/scsi/sr.c:      .select_speed           = sr_select_speed,
    ...
    |       static int cdrom_ioctl_select_speed(struct cdrom_device_info *cdi,
    |                       unsigned long arg)
    |       {
    |               ...
    |               return cdi->ops->select_speed(cdi, arg);
    |       }
    
    Next, let's add an extra check to make sure we don't exceed 0xffff/177
    (350) since 0xffff is the max speed. This has two benefits: 1) we deal
    with integer overflow before it happens and 2) we properly respect the
    max speed of 0xffff. There are some "magic" numbers here but I did not
    want to change more than what was necessary.
    
    Link: https://github.com/llvm/llvm-project/pull/82432 [1]
    Closes: https://github.com/KSPP/linux/issues/357
    Cc: [email protected]
    Signed-off-by: Justin Stitt <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Reviewed-by: Kees Cook <[email protected]>
    Signed-off-by: Martin K. Petersen <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
selftest/timerns: fix clang build failures for abs() calls [+ + +]
Author: John Hubbard <[email protected]>
Date:   Wed Jul 3 19:52:47 2024 -0700

    selftest/timerns: fix clang build failures for abs() calls
    
    [ Upstream commit f76f9bc616b7320df6789241ca7d26cedcf03cf3 ]
    
    When building with clang, via:
    
        make LLVM=1 -C tools/testing/selftests
    
    ...clang warns about mismatches between the expected and required
    integer length being supplied to abs(3).
    
    Fix this by using the correct variant of abs(3): labs(3) or llabs(3), in
    these cases.
    
    Reviewed-by: Dmitry Safonov <[email protected]>
    Reviewed-by: Muhammad Usama Anjum <[email protected]>
    Signed-off-by: John Hubbard <[email protected]>
    Acked-by: Andrei Vagin <[email protected]>
    Signed-off-by: Shuah Khan <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
selftests/bpf: Extend tcx tests to cover late tcx_entry release [+ + +]
Author: Daniel Borkmann <[email protected]>
Date:   Mon Jul 8 15:31:30 2024 +0200

    selftests/bpf: Extend tcx tests to cover late tcx_entry release
    
    [ Upstream commit 5f1d18de79180deac2822c93e431bbe547f7d3ce ]
    
    Add a test case which replaces an active ingress qdisc while keeping the
    miniq in-tact during the transition period to the new clsact qdisc.
    
      # ./vmtest.sh -- ./test_progs -t tc_link
      [...]
      ./test_progs -t tc_link
      [    3.412871] bpf_testmod: loading out-of-tree module taints kernel.
      [    3.413343] bpf_testmod: module verification failed: signature and/or required key missing - tainting kernel
      #332     tc_links_after:OK
      #333     tc_links_append:OK
      #334     tc_links_basic:OK
      #335     tc_links_before:OK
      #336     tc_links_chain_classic:OK
      #337     tc_links_chain_mixed:OK
      #338     tc_links_dev_chain0:OK
      #339     tc_links_dev_cleanup:OK
      #340     tc_links_dev_mixed:OK
      #341     tc_links_ingress:OK
      #342     tc_links_invalid:OK
      #343     tc_links_prepend:OK
      #344     tc_links_replace:OK
      #345     tc_links_revision:OK
      Summary: 14/0 PASSED, 0 SKIPPED, 0 FAILED
    
    Signed-off-by: Daniel Borkmann <[email protected]>
    Cc: Martin KaFai Lau <[email protected]>
    Link: https://lore.kernel.org/r/[email protected]
    Signed-off-by: Martin KaFai Lau <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
selftests/futex: pass _GNU_SOURCE without a value to the compiler [+ + +]
Author: John Hubbard <[email protected]>
Date:   Tue May 28 19:29:38 2024 -0700

    selftests/futex: pass _GNU_SOURCE without a value to the compiler
    
    [ Upstream commit cb708ab9f584f159798b60853edcf0c8b67ce295 ]
    
    It's slightly better to set _GNU_SOURCE in the source code, but if one
    must do it via the compiler invocation, then the best way to do so is
    this:
    
        $(CC) -D_GNU_SOURCE=
    
    ...because otherwise, if this form is used:
    
        $(CC) -D_GNU_SOURCE
    
    ...then that leads the compiler to set a value, as if you had passed in:
    
        $(CC) -D_GNU_SOURCE=1
    
    That, in turn, leads to warnings under both gcc and clang, like this:
    
        futex_requeue_pi.c:20: warning: "_GNU_SOURCE" redefined
    
    Fix this by using the "-D_GNU_SOURCE=" form.
    
    Reviewed-by: Edward Liaw <[email protected]>
    Reviewed-by: Davidlohr Bueso <[email protected]>
    Signed-off-by: John Hubbard <[email protected]>
    Signed-off-by: Shuah Khan <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
selftests/openat2: Fix build warnings on ppc64 [+ + +]
Author: Michael Ellerman <[email protected]>
Date:   Tue May 21 13:03:25 2024 +1000

    selftests/openat2: Fix build warnings on ppc64
    
    [ Upstream commit 84b6df4c49a1cc2854a16937acd5fd3e6315d083 ]
    
    Fix warnings like:
    
      openat2_test.c: In function ‘test_openat2_flags’:
      openat2_test.c:303:73: warning: format ‘%llX’ expects argument of type
      ‘long long unsigned int’, but argument 5 has type ‘__u64’ {aka ‘long
      unsigned int’} [-Wformat=]
    
    By switching to unsigned long long for u64 for ppc64 builds.
    
    Signed-off-by: Michael Ellerman <[email protected]>
    Reviewed-by: Muhammad Usama Anjum <[email protected]>
    Signed-off-by: Shuah Khan <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
selftests/vDSO: fix clang build errors and warnings [+ + +]
Author: John Hubbard <[email protected]>
Date:   Fri Jul 5 09:57:34 2024 -1000

    selftests/vDSO: fix clang build errors and warnings
    
    [ Upstream commit 73810cd45b99c6c418e1c6a487b52c1e74edb20d ]
    
    When building with clang, via:
    
        make LLVM=1 -C tools/testing/selftests
    
    ...there are several warnings, and an error. This fixes all of those and
    allows these tests to run and pass.
    
    1. Fix linker error (undefined reference to memcpy) by providing a local
       version of memcpy.
    
    2. clang complains about using this form:
    
        if (g = h & 0xf0000000)
    
    ...so factor out the assignment into a separate step.
    
    3. The code is passing a signed const char* to elf_hash(), which expects
       a const unsigned char *. There are several callers, so fix this at
       the source by allowing the function to accept a signed argument, and
       then converting to unsigned operations, once inside the function.
    
    4. clang doesn't have __attribute__((externally_visible)) and generates
       a warning to that effect. Fortunately, gcc 12 and gcc 13 do not seem
       to require that attribute in order to build, run and pass tests here,
       so remove it.
    
    Reviewed-by: Carlos Llamas <[email protected]>
    Reviewed-by: Edward Liaw <[email protected]>
    Reviewed-by: Muhammad Usama Anjum <[email protected]>
    Tested-by: Muhammad Usama Anjum <[email protected]>
    Signed-off-by: John Hubbard <[email protected]>
    Signed-off-by: Shuah Khan <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
selftests: cachestat: Fix build warnings on ppc64 [+ + +]
Author: Michael Ellerman <[email protected]>
Date:   Tue May 21 13:01:11 2024 +1000

    selftests: cachestat: Fix build warnings on ppc64
    
    [ Upstream commit bc4d5f5d2debf8bb65fba188313481549ead8576 ]
    
    Fix warnings like:
      test_cachestat.c: In function ‘print_cachestat’:
      test_cachestat.c:30:38: warning: format ‘%llu’ expects argument of
      type ‘long long unsigned int’, but argument 2 has type ‘__u64’ {aka
      ‘long unsigned int’} [-Wformat=]
    
    By switching to unsigned long long for u64 for ppc64 builds.
    
    Signed-off-by: Michael Ellerman <[email protected]>
    Signed-off-by: Shuah Khan <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

selftests: openvswitch: Set value to nla flags. [+ + +]
Author: Adrian Moreno <[email protected]>
Date:   Tue Jun 18 09:29:21 2024 +0200

    selftests: openvswitch: Set value to nla flags.
    
    [ Upstream commit a8763466669d21b570b26160d0a5e0a2ee529d22 ]
    
    Netlink flags, although they don't have payload at the netlink level,
    are represented as having "True" as value in pyroute2.
    
    Without it, trying to add a flow with a flag-type action (e.g: pop_vlan)
    fails with the following traceback:
    
    Traceback (most recent call last):
      File "[...]/ovs-dpctl.py", line 2498, in <module>
        sys.exit(main(sys.argv))
                 ^^^^^^^^^^^^^^
      File "[...]/ovs-dpctl.py", line 2487, in main
        ovsflow.add_flow(rep["dpifindex"], flow)
      File "[...]/ovs-dpctl.py", line 2136, in add_flow
        reply = self.nlm_request(
                ^^^^^^^^^^^^^^^^^
      File "[...]/pyroute2/netlink/nlsocket.py", line 822, in nlm_request
        return tuple(self._genlm_request(*argv, **kwarg))
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "[...]/pyroute2/netlink/generic/__init__.py", line 126, in
    nlm_request
        return tuple(super().nlm_request(*argv, **kwarg))
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "[...]/pyroute2/netlink/nlsocket.py", line 1124, in nlm_request
        self.put(msg, msg_type, msg_flags, msg_seq=msg_seq)
      File "[...]/pyroute2/netlink/nlsocket.py", line 389, in put
        self.sendto_gate(msg, addr)
      File "[...]/pyroute2/netlink/nlsocket.py", line 1056, in sendto_gate
        msg.encode()
      File "[...]/pyroute2/netlink/__init__.py", line 1245, in encode
        offset = self.encode_nlas(offset)
                 ^^^^^^^^^^^^^^^^^^^^^^^^
      File "[...]/pyroute2/netlink/__init__.py", line 1560, in encode_nlas
        nla_instance.setvalue(cell[1])
      File "[...]/pyroute2/netlink/__init__.py", line 1265, in setvalue
        nlv.setvalue(nla_tuple[1])
                     ~~~~~~~~~^^^
    IndexError: list index out of range
    
    Signed-off-by: Adrian Moreno <[email protected]>
    Acked-by: Aaron Conole <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
spi: Fix OCTAL mode support [+ + +]
Author: Patrice Chotard <[email protected]>
Date:   Tue Jun 18 15:29:51 2024 +0200

    spi: Fix OCTAL mode support
    
    [ Upstream commit d6a711a898672dd873aab3844f754a3ca40723a5 ]
    
    Add OCTAL mode support.
    Issue detected using "--octal" spidev_test's option.
    
    Signed-off-by: Patrice Chotard <[email protected]>
    Link: https://msgid.link/r/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

spi: imx: Don't expect DMA for i.MX{25,35,50,51,53} cspi devices [+ + +]
Author: Uwe Kleine-König <[email protected]>
Date:   Wed May 8 11:56:10 2024 +0200

    spi: imx: Don't expect DMA for i.MX{25,35,50,51,53} cspi devices
    
    [ Upstream commit ce1dac560a74220f2e53845ec0723b562288aed4 ]
    
    While in commit 2dd33f9cec90 ("spi: imx: support DMA for imx35") it was
    claimed that DMA works on i.MX25, i.MX31 and i.MX35 the respective
    device trees don't add DMA channels. The Reference manuals of i.MX31 and
    i.MX25 also don't mention the CSPI core being DMA capable. (I didn't
    check the others.)
    
    Since commit e267a5b3ec59 ("spi: spi-imx: Use dev_err_probe for failed
    DMA channel requests") this results in an error message
    
            spi_imx 43fa4000.spi: error -ENODEV: can't get the TX DMA channel!
    
    during boot. However that isn't fatal and the driver gets loaded just
    fine, just without using DMA.
    
    Signed-off-by: Uwe Kleine-König <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

spi: mux: set ctlr->bits_per_word_mask [+ + +]
Author: David Lechner <[email protected]>
Date:   Mon Jul 8 20:05:30 2024 -0500

    spi: mux: set ctlr->bits_per_word_mask
    
    [ Upstream commit c8bd922d924bb4ab6c6c488310157d1a27996f31 ]
    
    Like other SPI controller flags, bits_per_word_mask may be used by a
    peripheral driver, so it needs to reflect the capabilities of the
    underlying controller.
    
    Signed-off-by: David Lechner <[email protected]>
    Link: https://patch.msgid.link/[email protected]
    Signed-off-by: Mark Brown <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
tee: optee: ffa: Fix missing-field-initializers warning [+ + +]
Author: Mark-PK Tsai <[email protected]>
Date:   Thu Jun 27 14:59:09 2024 +0800

    tee: optee: ffa: Fix missing-field-initializers warning
    
    [ Upstream commit e0556255a53d6d3d406a28362dffd972018a997c ]
    
    The 'missing-field-initializers' warning was reported
    when building with W=2.
    This patch use designated initializers for
    'struct ffa_send_direct_data' to suppress the warning
    and clarify the initialization intent.
    
    Signed-off-by: ming-jen.chang <[email protected]>
    Signed-off-by: Mark-PK Tsai <[email protected]>
    Signed-off-by: Jens Wiklander <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
tools/power/cpupower: Fix Pstate frequency reporting on AMD Family 1Ah CPUs [+ + +]
Author: Dhananjay Ugwekar <[email protected]>
Date:   Tue Apr 30 14:07:06 2024 +0530

    tools/power/cpupower: Fix Pstate frequency reporting on AMD Family 1Ah CPUs
    
    [ Upstream commit 43cad521c6d228ea0c51e248f8e5b3a6295a2849 ]
    
    Update cpupower's P-State frequency calculation and reporting with AMD
    Family 1Ah+ processors, when using the acpi-cpufreq driver. This is due
    to a change in the PStateDef MSR layout in AMD Family 1Ah+.
    
    Tested on 4th and 5th Gen AMD EPYC system
    
    Signed-off-by: Ananth Narayan <[email protected]>
    Signed-off-by: Dhananjay Ugwekar <[email protected]>
    Reviewed-by: Mario Limonciello <[email protected]>
    Signed-off-by: Shuah Khan <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

 
wifi: cfg80211: fix 6 GHz scan request building [+ + +]
Author: Johannes Berg <[email protected]>
Date:   Fri May 10 11:37:38 2024 +0200

    wifi: cfg80211: fix 6 GHz scan request building
    
    [ Upstream commit f7a8b10bfd614d7a9a16fbe80d28ead4f063cb00 ]
    
    The 6 GHz scan request struct allocated by cfg80211_scan_6ghz() is
    meant to be formed this way:
    
     [base struct][channels][ssids][6ghz_params]
    
    It is allocated with [channels] as the maximum number of channels
    supported by the driver in the 6 GHz band, since allocation is
    before knowing how many there will be.
    
    However, the inner pointers are set incorrectly: initially, the
    6 GHz scan parameters pointer is set:
    
     [base struct][channels]
                            ^ scan_6ghz_params
    
    and later the SSID pointer is set to the end of the actually
    _used_ channels.
    
     [base struct][channels]
                      ^ ssids
    
    If many APs were to be discovered, and many channels used, and
    there were many SSIDs, then the SSIDs could overlap the 6 GHz
    parameters.
    
    Additionally, the request->ssids for most of the function points
    to the original request still (given the struct copy) but is used
    normally, which is confusing.
    
    Clear this up, by actually using the allocated space for 6 GHz
    parameters _after_ the SSIDs, and set up the SSIDs initially so
    they are used more clearly. Just like in nl80211.c, set them
    only if there actually are SSIDs though.
    
    Finally, also copy the elements (ie/ie_len) so they're part of
    the same request, not pointing to the old request.
    
    Co-developed-by: Miri Korenblit <[email protected]>
    Signed-off-by: Miri Korenblit <[email protected]>
    Reviewed-by: Ilan Peer <[email protected]>
    Signed-off-by: Johannes Berg <[email protected]>
    Link: https://msgid.link/20240510113738.4190692ef4ee.I0cb19188be17a8abd029805e3373c0a7777c214c@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: cfg80211: wext: add extra SIOCSIWSCAN data check [+ + +]
Author: Dmitry Antipov <[email protected]>
Date:   Fri May 31 06:20:10 2024 +0300

    wifi: cfg80211: wext: add extra SIOCSIWSCAN data check
    
    [ Upstream commit 6ef09cdc5ba0f93826c09d810c141a8d103a80fc ]
    
    In 'cfg80211_wext_siwscan()', add extra check whether number of
    channels passed via 'ioctl(sock, SIOCSIWSCAN, ...)' doesn't exceed
    IW_MAX_FREQUENCIES and reject invalid request with -EINVAL otherwise.
    
    Reported-by: [email protected]
    Closes: https://syzkaller.appspot.com/bug?extid=253cd2d2491df77c93ac
    Signed-off-by: Dmitry Antipov <[email protected]>
    Link: https://msgid.link/[email protected]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: cfg80211: wext: set ssids=NULL for passive scans [+ + +]
Author: Johannes Berg <[email protected]>
Date:   Tue Jun 11 18:58:16 2024 +0200

    wifi: cfg80211: wext: set ssids=NULL for passive scans
    
    commit 0941772342d59e48733131ac3a202fa1a4d832e9 upstream.
    
    In nl80211, we always set the ssids of a scan request to
    NULL when n_ssids==0 (passive scan). Drivers have relied
    on this behaviour in the past, so we fixed it in 6 GHz
    scan requests as well, and added a warning so we'd have
    assurance the API would always be called that way.
    
    syzbot found that wext doesn't ensure that, so we reach
    the check and trigger the warning. Fix the wext code to
    set the ssids pointer to NULL when there are none.
    
    Reported-by: [email protected]
    Fixes: f7a8b10bfd61 ("wifi: cfg80211: fix 6 GHz scan request building")
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

wifi: iwlwifi: mvm: d3: fix WoWLAN command version lookup [+ + +]
Author: Yedidya Benshimol <[email protected]>
Date:   Fri May 10 17:06:29 2024 +0300

    wifi: iwlwifi: mvm: d3: fix WoWLAN command version lookup
    
    [ Upstream commit b7ffca99313d856f7d1cc89038d9061b128e8e97 ]
    
    After moving from commands to notificaitons in the d3 resume flow,
    removing the WOWLAN_GET_STATUSES and REPLY_OFFLOADS_QUERY_CMD causes
    the return of the default value when looking up their version.
    Returning zero here results in the driver sending the not supported
    NON_QOS_TX_COUNTER_CMD.
    
    Signed-off-by: Yedidya Benshimol <[email protected]>
    Reviewed-by: Gregory Greenman <[email protected]>
    Signed-off-by: Miri Korenblit <[email protected]>
    Link: https://msgid.link/20240510170500.8cabfd580614.If3a0db9851f56041f8f5360959354abd5379224a@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: iwlwifi: mvm: don't wake up rx_sync_waitq upon RFKILL [+ + +]
Author: Emmanuel Grumbach <[email protected]>
Date:   Wed Jul 3 06:43:16 2024 +0300

    wifi: iwlwifi: mvm: don't wake up rx_sync_waitq upon RFKILL
    
    commit e715c9302b1c6fae990b9898a80fac855549d1f0 upstream.
    
    Since we now want to sync the queues even when we're in RFKILL, we
    shouldn't wake up the wait queue since we still expect to get all the
    notifications from the firmware.
    
    Fixes: 4d08c0b3357c ("wifi: iwlwifi: mvm: handle BA session teardown in RF-kill")
    Signed-off-by: Emmanuel Grumbach <[email protected]>
    Signed-off-by: Miri Korenblit <[email protected]>
    Link: https://patch.msgid.link/20240703064027.be7a9dbeacde.I5586cb3ca8d6e44f79d819a48a0c22351ff720c9@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

wifi: iwlwifi: mvm: Fix scan abort handling with HW rfkill [+ + +]
Author: Ilan Peer <[email protected]>
Date:   Mon May 13 13:27:13 2024 +0300

    wifi: iwlwifi: mvm: Fix scan abort handling with HW rfkill
    
    [ Upstream commit e6dd2936ce7ce94a1915b799f8af8193ec628e87 ]
    
    When HW rfkill is toggled to disable the RF, the flow to stop scan is
    called. When trying to send the command to abort the scan, since
    HW rfkill is toggled, the command is not sent due to rfkill being
    asserted, and -ERFKILL is returned from iwl_trans_send_cmd(), but this
    is silently ignored in iwl_mvm_send_cmd() and thus the scan abort flow
    continues to wait for scan complete notification and fails. Since it
    fails, the UID to type mapping is not cleared, and thus a warning is
    later fired when trying to stop the interface.
    
    To fix this, modify the UMAC scan abort flow to force sending the
    scan abort command even when in rfkill, so stop the FW from accessing
    the radio etc.
    
    Signed-off-by: Ilan Peer <[email protected]>
    Signed-off-by: Miri Korenblit <[email protected]>
    Link: https://msgid.link/20240513132416.8cbe2f8c1a97.Iffe235c12a919dafec88eef399eb1f7bae2c5bdb@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: iwlwifi: mvm: handle BA session teardown in RF-kill [+ + +]
Author: Johannes Berg <[email protected]>
Date:   Mon May 13 13:27:10 2024 +0300

    wifi: iwlwifi: mvm: handle BA session teardown in RF-kill
    
    [ Upstream commit 4d08c0b3357cba0aeffaf3abc62cae0c154f2816 ]
    
    When entering RF-kill, mac80211 tears down BA sessions, but
    due to RF-kill the commands aren't sent to the device. As a
    result, there can be frames pending on the reorder buffer or
    perhaps even received while doing so, leading to warnings.
    
    Avoid the warnings by doing the BA session teardown normally
    even in RF-kill, which also requires queue sync.
    
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Miri Korenblit <[email protected]>
    Link: https://msgid.link/20240513132416.0762cd80fb3d.I43c5877f3b546159b2db4f36d6d956b333c41cf0@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: iwlwifi: mvm: Handle BIGTK cipher in kek_kck cmd [+ + +]
Author: Yedidya Benshimol <[email protected]>
Date:   Mon May 13 13:27:09 2024 +0300

    wifi: iwlwifi: mvm: Handle BIGTK cipher in kek_kck cmd
    
    [ Upstream commit 08b16d1b5997dc378533318e2a9cd73c7a898284 ]
    
    The BIGTK cipher field was added to the kek_kck_material_cmd
    but wasn't assigned. Fix that by differentiating between the
    IGTK/BIGTK keys and assign the ciphers fields accordingly.
    
    Signed-off-by: Yedidya Benshimol <[email protected]>
    Signed-off-by: Miri Korenblit <[email protected]>
    Link: https://msgid.link/20240513132416.7fd0b22b7267.Ie9b581652b74bd7806980364d59e1b2e78e682c0@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: iwlwifi: mvm: properly set 6 GHz channel direct probe option [+ + +]
Author: Ayala Beker <[email protected]>
Date:   Mon May 13 13:27:11 2024 +0300

    wifi: iwlwifi: mvm: properly set 6 GHz channel direct probe option
    
    [ Upstream commit 989830d1cf16bd149bf0690d889a9caef95fb5b1 ]
    
    Ensure that the 6 GHz channel is configured with a valid direct BSSID,
    avoiding any invalid or multicast BSSID addresses.
    
    Signed-off-by: Ayala Beker <[email protected]>
    Reviewed-by: Ilan Peer <[email protected]>
    Signed-off-by: Miri Korenblit <[email protected]>
    Link: https://msgid.link/20240513132416.91a631a0fe60.I2ea2616af9b8a2eaf959b156c69cf65a2f1204d4@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: iwlwifi: mvm: remove stale STA link data during restart [+ + +]
Author: Benjamin Berg <[email protected]>
Date:   Mon May 13 13:27:08 2024 +0300

    wifi: iwlwifi: mvm: remove stale STA link data during restart
    
    [ Upstream commit cc3ba78f202de9752aceb16342ab62bdfbffac7e ]
    
    If pre-recovery mac80211 tried to disable a link but this disablement
    failed, then there might be a mismatch between mac80211 assuming the
    link has been disabled and the driver still having the data around.
    During recover itself, that is not a problem, but should the link be
    activated again at a later point, iwlwifi will refuse the activation as
    it detects the inconsistent state.
    
    Solve this corner-case by iterating the station in the restart cleanup
    handler.
    
    Signed-off-by: Benjamin Berg <[email protected]>
    Signed-off-by: Miri Korenblit <[email protected]>
    Link: https://msgid.link/20240513132416.d2fd60338055.I840d4fdce5fd49fe69896d928b071067e3730259@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: iwlwifi: properly set WIPHY_FLAG_SUPPORTS_EXT_KEK_KCK [+ + +]
Author: Daniel Gabay <[email protected]>
Date:   Wed Jul 3 06:43:13 2024 +0300

    wifi: iwlwifi: properly set WIPHY_FLAG_SUPPORTS_EXT_KEK_KCK
    
    [ Upstream commit 4ec17ce716bdaf680288ce680b4621b52483cc96 ]
    
    The WIPHY_FLAG_SUPPORTS_EXT_KEK_KCK should be set based on the
    WOWLAN_KEK_KCK_MATERIAL command version. Currently, the command
    version in the firmware has advanced to 4, which prevents the
    flag from being set correctly, fix that.
    
    Signed-off-by: Daniel Gabay <[email protected]>
    Signed-off-by: Miri Korenblit <[email protected]>
    Link: https://patch.msgid.link/20240703064026.a0f162108575.If1a9785727d2a1b0197a396680965df1b53d4096@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mac80211: apply mcast rate only if interface is up [+ + +]
Author: Johannes Berg <[email protected]>
Date:   Wed May 15 13:34:10 2024 +0200

    wifi: mac80211: apply mcast rate only if interface is up
    
    [ Upstream commit 02c665f048a439c0d58cc45334c94634bd7c18e6 ]
    
    If the interface isn't enabled, don't apply multicast
    rate changes immediately.
    
    Reported-by: [email protected]
    Link: https://msgid.link/20240515133410.d6cffe5756cc.I47b624a317e62bdb4609ff7fa79403c0c444d32d@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mac80211: disable softirqs for queued frame handling [+ + +]
Author: Johannes Berg <[email protected]>
Date:   Wed Jun 26 09:15:59 2024 +0200

    wifi: mac80211: disable softirqs for queued frame handling
    
    commit 321028bc45f01edb9e57b0ae5c11c5c3600d00ca upstream.
    
    As noticed by syzbot, calling ieee80211_handle_queued_frames()
    (and actually handling frames there) requires softirqs to be
    disabled, since we call into the RX code. Fix that in the case
    of cleaning up frames left over during shutdown.
    
    Fixes: 177c6ae9725d ("wifi: mac80211: handle tasklet frames before stopping")
    Reported-by: [email protected]
    Link: https://patch.msgid.link/20240626091559.cd6f08105a6e.I74778610a5ff2cf8680964698131099d2960352a@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Greg Kroah-Hartman <[email protected]>

wifi: mac80211: fix UBSAN noise in ieee80211_prep_hw_scan() [+ + +]
Author: Dmitry Antipov <[email protected]>
Date:   Fri May 17 18:33:32 2024 +0300

    wifi: mac80211: fix UBSAN noise in ieee80211_prep_hw_scan()
    
    [ Upstream commit 92ecbb3ac6f3fe8ae9edf3226c76aa17b6800699 ]
    
    When testing the previous patch with CONFIG_UBSAN_BOUNDS, I've
    noticed the following:
    
    UBSAN: array-index-out-of-bounds in net/mac80211/scan.c:372:4
    index 0 is out of range for type 'struct ieee80211_channel *[]'
    CPU: 0 PID: 1435 Comm: wpa_supplicant Not tainted 6.9.0+ #1
    Hardware name: LENOVO 20UN005QRT/20UN005QRT <...BIOS details...>
    Call Trace:
     <TASK>
     dump_stack_lvl+0x2d/0x90
     __ubsan_handle_out_of_bounds+0xe7/0x140
     ? timerqueue_add+0x98/0xb0
     ieee80211_prep_hw_scan+0x2db/0x480 [mac80211]
     ? __kmalloc+0xe1/0x470
     __ieee80211_start_scan+0x541/0x760 [mac80211]
     rdev_scan+0x1f/0xe0 [cfg80211]
     nl80211_trigger_scan+0x9b6/0xae0 [cfg80211]
     ...<the rest is not too useful...>
    
    Since '__ieee80211_start_scan()' leaves 'hw_scan_req->req.n_channels'
    uninitialized, actual boundaries of 'hw_scan_req->req.channels' can't
    be checked in 'ieee80211_prep_hw_scan()'. Although an initialization
    of 'hw_scan_req->req.n_channels' introduces some confusion around
    allocated vs. used VLA members, this shouldn't be a problem since
    everything is correctly adjusted soon in 'ieee80211_prep_hw_scan()'.
    
    Cleanup 'kmalloc()' math in '__ieee80211_start_scan()' by using the
    convenient 'struct_size()' as well.
    
    Signed-off-by: Dmitry Antipov <[email protected]>
    Link: https://msgid.link/[email protected]
    [improve (imho) indentation a bit]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mac80211: handle tasklet frames before stopping [+ + +]
Author: Johannes Berg <[email protected]>
Date:   Wed May 15 13:53:19 2024 +0200

    wifi: mac80211: handle tasklet frames before stopping
    
    [ Upstream commit 177c6ae9725d783f9e96f02593ce8fb2639be22f ]
    
    The code itself doesn't want to handle frames from the driver
    if it's already stopped, but if the tasklet was queued before
    and runs after the stop, then all bets are off. Flush queues
    before actually stopping, RX should be off at this point since
    all the interfaces are removed already, etc.
    
    Reported-by: [email protected]
    Link: https://msgid.link/20240515135318.b05f11385c9a.I41c1b33a2e1814c3a7ef352cd7f2951b91785617@changeid
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>

wifi: mac80211: mesh: init nonpeer_pm to active by default in mesh sdata [+ + +]
Author: Nicolas Escande <[email protected]>
Date:   Mon May 27 16:17:59 2024 +0200

    wifi: mac80211: mesh: init nonpeer_pm to active by default in mesh sdata
    
    [ Upstream commit 6f6291f09a322c1c1578badac8072d049363f4e6 ]
    
    With a ath9k device I can see that:
            iw phy phy0 interface add mesh0 type mp
            ip link set mesh0 up
            iw dev mesh0 scan
    
    Will start a scan with the Power Management bit set in the Frame Control Field.
    This is because we set this bit depending on the nonpeer_pm variable of the mesh
    iface sdata and when there are no active links on the interface it remains to
    NL80211_MESH_POWER_UNKNOWN.
    
    As soon as links starts to be established, it wil switch to
    NL80211_MESH_POWER_ACTIVE as it is the value set by befault on the per sta
    nonpeer_pm field.
    As we want no power save by default, (as expressed with the per sta ini values),
    lets init it to the expected default value of NL80211_MESH_POWER_ACTIVE.
    
    Also please note that we cannot change the default value from userspace prior to
    establishing a link as using NL80211_CMD_SET_MESH_CONFIG will not work before
    NL80211_CMD_JOIN_MESH has been issued. So too late for our initial scan.
    
    Signed-off-by: Nicolas Escande <[email protected]>
    Link: https://msgid.link/[email protected]
    Signed-off-by: Johannes Berg <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>