Changelog in Linux kernel 6.6.75

 
ALSA: usb-audio: Add delay quirk for USB Audio Device [+ + +]
Author: Lianqin Hu <hulianqin@vivo.com>
Date:   Wed Jan 15 09:32:35 2025 +0000

    ALSA: usb-audio: Add delay quirk for USB Audio Device
    
    commit ad5b205f9e022b407d91f952faddd05718be2866 upstream.
    
    Audio control requests that sets sampling frequency sometimes fail on
    this card. Adding delay between control messages eliminates that problem.
    
    usb 1-1: New USB device found, idVendor=0d8c, idProduct=0014
    usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
    usb 1-1: Product: USB Audio Device
    usb 1-1: Manufacturer: C-Media Electronics Inc.
    
    Signed-off-by: Lianqin Hu <hulianqin@vivo.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Link: https://patch.msgid.link/TYUPR06MB6217E94D922B9BF422A73F32D2192@TYUPR06MB6217.apcprd06.prod.outlook.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ASoC: samsung: Add missing depends on I2C [+ + +]
Author: Charles Keepax <ckeepax@opensource.cirrus.com>
Date:   Wed Jan 8 13:48:28 2025 +0000

    ASoC: samsung: Add missing depends on I2C
    
    [ Upstream commit 704dbe97a68153a84319ad63f526e12ba868b88e ]
    
    When switching to selects for MFD_WM8994 a dependency should have also
    been added for I2C, as the dependency on MFD_WM8994 will not be
    considered by the select.
    
    Fixes: fd55c6065bec ("ASoC: samsung: Add missing selects for MFD_WM8994")
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202501082020.2bpGGVTW-lkp@intel.com/
    Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Link: https://patch.msgid.link/20250108134828.246570-1-ckeepax@opensource.cirrus.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: samsung: Add missing selects for MFD_WM8994 [+ + +]
Author: Charles Keepax <ckeepax@opensource.cirrus.com>
Date:   Tue Jan 7 10:41:34 2025 +0000

    ASoC: samsung: Add missing selects for MFD_WM8994
    
    [ Upstream commit fd55c6065bec5268740e944a1800e6fad00974d9 ]
    
    Anything selecting SND_SOC_WM8994 should also select MFD_WM8994, as
    SND_SOC_WM8994 does not automatically do so. Add the missing selects.
    
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202501071530.UwIXs7OL-lkp@intel.com/
    Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Link: https://patch.msgid.link/20250107104134.12147-1-ckeepax@opensource.cirrus.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: wm8994: Add depends on MFD core [+ + +]
Author: Charles Keepax <ckeepax@opensource.cirrus.com>
Date:   Mon Jan 6 15:46:39 2025 +0000

    ASoC: wm8994: Add depends on MFD core
    
    [ Upstream commit 5ed01155cea69801f1f0c908954a56a5a3474bed ]
    
    The ASoC driver should not be used without the MFD component. This was
    causing randconfig issues with regmap IRQ which is selected by the MFD
    part of the wm8994 driver.
    
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202501061337.R0DlBUoD-lkp@intel.com/
    Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Link: https://patch.msgid.link/20250106154639.3999553-1-ckeepax@opensource.cirrus.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
 
ata: libata-core: Set ATA_QCFLAG_RTF_FILLED in fill_result_tf() [+ + +]
Author: Igor Pylypiv <ipylypiv@google.com>
Date:   Tue Jul 2 02:47:34 2024 +0000

    ata: libata-core: Set ATA_QCFLAG_RTF_FILLED in fill_result_tf()
    
    commit 18676c6aab0863618eb35443e7b8615eea3535a9 upstream.
    
    ATA_QCFLAG_RTF_FILLED is not specific to ahci and can be used generally
    to check if qc->result_tf contains valid data.
    
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
    Reviewed-by: Niklas Cassel <cassel@kernel.org>
    Signed-off-by: Igor Pylypiv <ipylypiv@google.com>
    Link: https://lore.kernel.org/r/20240702024735.1152293-7-ipylypiv@google.com
    Signed-off-by: Niklas Cassel <cassel@kernel.org>
    Cc: Christian Kühnke <christian@kuehnke.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
block: fix integer overflow in BLKSECDISCARD [+ + +]
Author: Alexey Dobriyan <adobriyan@gmail.com>
Date:   Tue Sep 3 22:48:19 2024 +0300

    block: fix integer overflow in BLKSECDISCARD
    
    commit 697ba0b6ec4ae04afb67d3911799b5e2043b4455 upstream.
    
    I independently rediscovered
    
            commit 22d24a544b0d49bbcbd61c8c0eaf77d3c9297155
            block: fix overflow in blk_ioctl_discard()
    
    but for secure erase.
    
    Same problem:
    
            uint64_t r[2] = {512, 18446744073709551104ULL};
            ioctl(fd, BLKSECDISCARD, r);
    
    will enter near infinite loop inside blkdev_issue_secure_erase():
    
            a.out: attempt to access beyond end of device
            loop0: rw=5, sector=3399043073, nr_sectors = 1024 limit=2048
            bio_check_eod: 3286214 callbacks suppressed
    
    Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
    Link: https://lore.kernel.org/r/9e64057f-650a-46d1-b9f7-34af391536ef@p183
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Rajani Kantha <rajanikantha@engineer.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
cachestat: fix page cache statistics permission checking [+ + +]
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Tue Jan 21 09:27:22 2025 -0800

    cachestat: fix page cache statistics permission checking
    
    commit 5f537664e705b0bf8b7e329861f20128534f6a83 upstream.
    
    When the 'cachestat()' system call was added in commit cf264e1329fb
    ("cachestat: implement cachestat syscall"), it was meant to be a much
    more convenient (and performant) version of mincore() that didn't need
    mapping things into the user virtual address space in order to work.
    
    But it ended up missing the "check for writability or ownership" fix for
    mincore(), done in commit 134fca9063ad ("mm/mincore.c: make mincore()
    more conservative").
    
    This just adds equivalent logic to 'cachestat()', modified for the file
    context (rather than vma).
    
    Reported-by: Sudheendra Raghav Neela <sneela@tugraz.at>
    Fixes: cf264e1329fb ("cachestat: implement cachestat syscall")
    Tested-by: Johannes Weiner <hannes@cmpxchg.org>
    Acked-by: Johannes Weiner <hannes@cmpxchg.org>
    Acked-by: Nhat Pham <nphamcs@gmail.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
cpufreq: amd-pstate: add check for cpufreq_cpu_get's return value [+ + +]
Author: Anastasia Belova <abelova@astralinux.ru>
Date:   Mon Aug 26 16:38:41 2024 +0300

    cpufreq: amd-pstate: add check for cpufreq_cpu_get's return value
    
    commit 5493f9714e4cdaf0ee7cec15899a231400cb1a9f upstream.
    
    cpufreq_cpu_get may return NULL. To avoid NULL-dereference check it
    and return in case of error.
    
    Found by Linux Verification Center (linuxtesting.org) with SVACE.
    
    Signed-off-by: Anastasia Belova <abelova@astralinux.ru>
    Reviewed-by: Perry Yuan <perry.yuan@amd.com>
    Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
    [ Raj: on 6.6, there don't have function amd_pstate_update_limits()
      so applied the NULL checking in amd_pstate_adjust_perf() only ]
    Signed-off-by: Rajani Kantha <rajanikantha@engineer.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
drm/amd/display: Use HW lock mgr for PSR1 [+ + +]
Author: Tom Chung <chiahsuan.chung@amd.com>
Date:   Tue Oct 1 17:13:07 2024 +0800

    drm/amd/display: Use HW lock mgr for PSR1
    
    [ Upstream commit b5c764d6ed556c4e81fbe3fd976da77ec450c08e ]
    
    [Why]
    Without the dmub hw lock, it may cause the lock timeout issue
    while do modeset on PSR1 eDP panel.
    
    [How]
    Allow dmub hw lock for PSR1.
    
    Reviewed-by: Sun peng Li <sunpeng.li@amd.com>
    Signed-off-by: Tom Chung <chiahsuan.chung@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    (cherry picked from commit a2b5a9956269f4c1a09537177f18ab0229fe79f7)
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
drm/v3d: Assign job pointer to NULL before signaling the fence [+ + +]
Author: Maíra Canal <mcanal@igalia.com>
Date:   Wed Jan 22 22:24:03 2025 -0300

    drm/v3d: Assign job pointer to NULL before signaling the fence
    
    commit 6e64d6b3a3c39655de56682ec83e894978d23412 upstream.
    
    In commit e4b5ccd392b9 ("drm/v3d: Ensure job pointer is set to NULL
    after job completion"), we introduced a change to assign the job pointer
    to NULL after completing a job, indicating job completion.
    
    However, this approach created a race condition between the DRM
    scheduler workqueue and the IRQ execution thread. As soon as the fence is
    signaled in the IRQ execution thread, a new job starts to be executed.
    This results in a race condition where the IRQ execution thread sets the
    job pointer to NULL simultaneously as the `run_job()` function assigns
    a new job to the pointer.
    
    This race condition can lead to a NULL pointer dereference if the IRQ
    execution thread sets the job pointer to NULL after `run_job()` assigns
    it to the new job. When the new job completes and the GPU emits an
    interrupt, `v3d_irq()` is triggered, potentially causing a crash.
    
    [  466.310099] Unable to handle kernel NULL pointer dereference at virtual address 00000000000000c0
    [  466.318928] Mem abort info:
    [  466.321723]   ESR = 0x0000000096000005
    [  466.325479]   EC = 0x25: DABT (current EL), IL = 32 bits
    [  466.330807]   SET = 0, FnV = 0
    [  466.333864]   EA = 0, S1PTW = 0
    [  466.337010]   FSC = 0x05: level 1 translation fault
    [  466.341900] Data abort info:
    [  466.344783]   ISV = 0, ISS = 0x00000005, ISS2 = 0x00000000
    [  466.350285]   CM = 0, WnR = 0, TnD = 0, TagAccess = 0
    [  466.355350]   GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
    [  466.360677] user pgtable: 4k pages, 39-bit VAs, pgdp=0000000089772000
    [  466.367140] [00000000000000c0] pgd=0000000000000000, p4d=0000000000000000, pud=0000000000000000
    [  466.375875] Internal error: Oops: 0000000096000005 [#1] PREEMPT SMP
    [  466.382163] Modules linked in: rfcomm snd_seq_dummy snd_hrtimer snd_seq snd_seq_device algif_hash algif_skcipher af_alg bnep binfmt_misc vc4 snd_soc_hdmi_codec drm_display_helper cec brcmfmac_wcc spidev rpivid_hevc(C) drm_client_lib brcmfmac hci_uart drm_dma_helper pisp_be btbcm brcmutil snd_soc_core aes_ce_blk v4l2_mem2mem bluetooth aes_ce_cipher snd_compress videobuf2_dma_contig ghash_ce cfg80211 gf128mul snd_pcm_dmaengine videobuf2_memops ecdh_generic sha2_ce ecc videobuf2_v4l2 snd_pcm v3d sha256_arm64 rfkill videodev snd_timer sha1_ce libaes gpu_sched snd videobuf2_common sha1_generic drm_shmem_helper mc rp1_pio drm_kms_helper raspberrypi_hwmon spi_bcm2835 gpio_keys i2c_brcmstb rp1 raspberrypi_gpiomem rp1_mailbox rp1_adc nvmem_rmem uio_pdrv_genirq uio i2c_dev drm ledtrig_pattern drm_panel_orientation_quirks backlight fuse dm_mod ip_tables x_tables ipv6
    [  466.458429] CPU: 0 UID: 1000 PID: 2008 Comm: chromium Tainted: G         C         6.13.0-v8+ #18
    [  466.467336] Tainted: [C]=CRAP
    [  466.470306] Hardware name: Raspberry Pi 5 Model B Rev 1.0 (DT)
    [  466.476157] pstate: 404000c9 (nZcv daIF +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    [  466.483143] pc : v3d_irq+0x118/0x2e0 [v3d]
    [  466.487258] lr : __handle_irq_event_percpu+0x60/0x228
    [  466.492327] sp : ffffffc080003ea0
    [  466.495646] x29: ffffffc080003ea0 x28: ffffff80c0c94200 x27: 0000000000000000
    [  466.502807] x26: ffffffd08dd81d7b x25: ffffff80c0c94200 x24: ffffff8003bdc200
    [  466.509969] x23: 0000000000000001 x22: 00000000000000a7 x21: 0000000000000000
    [  466.517130] x20: ffffff8041bb0000 x19: 0000000000000001 x18: 0000000000000000
    [  466.524291] x17: ffffffafadfb0000 x16: ffffffc080000000 x15: 0000000000000000
    [  466.531452] x14: 0000000000000000 x13: 0000000000000000 x12: 0000000000000000
    [  466.538613] x11: 0000000000000000 x10: 0000000000000000 x9 : ffffffd08c527eb0
    [  466.545777] x8 : 0000000000000000 x7 : 0000000000000000 x6 : 0000000000000000
    [  466.552941] x5 : ffffffd08c4100d0 x4 : ffffffafadfb0000 x3 : ffffffc080003f70
    [  466.560102] x2 : ffffffc0829e8058 x1 : 0000000000000001 x0 : 0000000000000000
    [  466.567263] Call trace:
    [  466.569711]  v3d_irq+0x118/0x2e0 [v3d] (P)
    [  466.573826]  __handle_irq_event_percpu+0x60/0x228
    [  466.578546]  handle_irq_event+0x54/0xb8
    [  466.582391]  handle_fasteoi_irq+0xac/0x240
    [  466.586498]  generic_handle_domain_irq+0x34/0x58
    [  466.591128]  gic_handle_irq+0x48/0xd8
    [  466.594798]  call_on_irq_stack+0x24/0x58
    [  466.598730]  do_interrupt_handler+0x88/0x98
    [  466.602923]  el0_interrupt+0x44/0xc0
    [  466.606508]  __el0_irq_handler_common+0x18/0x28
    [  466.611050]  el0t_64_irq_handler+0x10/0x20
    [  466.615156]  el0t_64_irq+0x198/0x1a0
    [  466.618740] Code: 52800035 3607faf3 f9442e80 52800021 (f9406018)
    [  466.624853] ---[ end trace 0000000000000000 ]---
    [  466.629483] Kernel panic - not syncing: Oops: Fatal exception in interrupt
    [  466.636384] SMP: stopping secondary CPUs
    [  466.640320] Kernel Offset: 0x100c400000 from 0xffffffc080000000
    [  466.646259] PHYS_OFFSET: 0x0
    [  466.649141] CPU features: 0x100,00000170,00901250,0200720b
    [  466.654644] Memory Limit: none
    [  466.657706] ---[ end Kernel panic - not syncing: Oops: Fatal exception in interrupt ]---
    
    Fix the crash by assigning the job pointer to NULL before signaling the
    fence. This ensures that the job pointer is cleared before any new job
    starts execution, preventing the race condition and the NULL pointer
    dereference crash.
    
    Cc: stable@vger.kernel.org
    Fixes: e4b5ccd392b9 ("drm/v3d: Ensure job pointer is set to NULL after job completion")
    Signed-off-by: Maíra Canal <mcanal@igalia.com>
    Reviewed-by: Jose Maria Casanova Crespo <jmcasanova@igalia.com>
    Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
    Tested-by: Phil Elwell <phil@raspberrypi.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20250123012403.20447-1-mcanal@igalia.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ext4: fix access to uninitialised lock in fc replay path [+ + +]
Author: Luis Henriques (SUSE) <luis.henriques@linux.dev>
Date:   Thu Jul 18 10:43:56 2024 +0100

    ext4: fix access to uninitialised lock in fc replay path
    
    commit 23dfdb56581ad92a9967bcd720c8c23356af74c1 upstream.
    
    The following kernel trace can be triggered with fstest generic/629 when
    executed against a filesystem with fast-commit feature enabled:
    
    INFO: trying to register non-static key.
    The code is fine but needs lockdep annotation, or maybe
    you didn't initialize this object before use?
    turning off the locking correctness validator.
    CPU: 0 PID: 866 Comm: mount Not tainted 6.10.0+ #11
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.2-3-gd478f380-prebuilt.qemu.org 04/01/2014
    Call Trace:
     <TASK>
     dump_stack_lvl+0x66/0x90
     register_lock_class+0x759/0x7d0
     __lock_acquire+0x85/0x2630
     ? __find_get_block+0xb4/0x380
     lock_acquire+0xd1/0x2d0
     ? __ext4_journal_get_write_access+0xd5/0x160
     _raw_spin_lock+0x33/0x40
     ? __ext4_journal_get_write_access+0xd5/0x160
     __ext4_journal_get_write_access+0xd5/0x160
     ext4_reserve_inode_write+0x61/0xb0
     __ext4_mark_inode_dirty+0x79/0x270
     ? ext4_ext_replay_set_iblocks+0x2f8/0x450
     ext4_ext_replay_set_iblocks+0x330/0x450
     ext4_fc_replay+0x14c8/0x1540
     ? jread+0x88/0x2e0
     ? rcu_is_watching+0x11/0x40
     do_one_pass+0x447/0xd00
     jbd2_journal_recover+0x139/0x1b0
     jbd2_journal_load+0x96/0x390
     ext4_load_and_init_journal+0x253/0xd40
     ext4_fill_super+0x2cc6/0x3180
    ...
    
    In the replay path there's an attempt to lock sbi->s_bdev_wb_lock in
    function ext4_check_bdev_write_error().  Unfortunately, at this point this
    spinlock has not been initialized yet.  Moving it's initialization to an
    earlier point in __ext4_fill_super() fixes this splat.
    
    Signed-off-by: Luis Henriques (SUSE) <luis.henriques@linux.dev>
    Link: https://patch.msgid.link/20240718094356.7863-1-luis.henriques@linux.dev
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org
    Signed-off-by: Bruno VERNAY <bruno.vernay@se.com>
    Signed-off-by: Victor Giraud <vgiraud.opensource@witekio.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
gfs2: Truncate address space when flipping GFS2_DIF_JDATA flag [+ + +]
Author: Andreas Gruenbacher <agruenba@redhat.com>
Date:   Mon Jan 13 19:31:28 2025 +0100

    gfs2: Truncate address space when flipping GFS2_DIF_JDATA flag
    
    commit 7c9d9223802fbed4dee1ae301661bf346964c9d2 upstream.
    
    Truncate an inode's address space when flipping the GFS2_DIF_JDATA flag:
    depending on that flag, the pages in the address space will either use
    buffer heads or iomap_folio_state structs, and we cannot mix the two.
    
    Reported-by: Kun Hu <huk23@m.fudan.edu.cn>, Jiaji Qin <jjtan24@m.fudan.edu.cn>
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
hwmon: (drivetemp) Set scsi command timeout to 10s [+ + +]
Author: Russell Harmon <russ@har.mn>
Date:   Wed Jan 15 05:13:41 2025 -0800

    hwmon: (drivetemp) Set scsi command timeout to 10s
    
    [ Upstream commit b46ba47d7bb461a0969317be1f2e165c0571d6c5 ]
    
    There's at least one drive (MaxDigitalData OOS14000G) such that if it
    receives a large amount of I/O while entering an idle power state will
    first exit idle before responding, including causing SMART temperature
    requests to be delayed.
    
    This causes the drivetemp request to exceed its timeout of 1 second.
    
    Signed-off-by: Russell Harmon <russ@har.mn>
    Link: https://lore.kernel.org/r/20250115131340.3178988-1-russ@har.mn
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
Input: atkbd - map F23 key to support default copilot shortcut [+ + +]
Author: Mark Pearson <mpearson-lenovo@squebb.ca>
Date:   Mon Jan 20 20:24:08 2025 -0800

    Input: atkbd - map F23 key to support default copilot shortcut
    
    commit 907bc9268a5a9f823ffa751957a5c1dd59f83f42 upstream.
    
    Microsoft defined Meta+Shift+F23 as the Copilot shortcut instead of a
    dedicated keycode, and multiple vendors have their keyboards emit this
    sequence in response to users pressing a dedicated "Copilot" key.
    Unfortunately the default keymap table in atkbd does not map scancode
    0x6e (F23) and so the key combination does not work even if userspace
    is ready to handle it.
    
    Because this behavior is common between multiple vendors and the
    scancode is currently unused map 0x6e to keycode 193 (KEY_F23) so that
    key sequence is generated properly.
    
    MS documentation for the scan code:
    https://learn.microsoft.com/en-us/windows/win32/inputdev/about-keyboard-input#scan-codes
    Confirmed on Lenovo, HP and Dell machines by Canonical.
    Tested on Lenovo T14s G6 AMD.
    
    Signed-off-by: Mark Pearson <mpearson-lenovo@squebb.ca>
    Link: https://lore.kernel.org/r/20250107034554.25843-1-mpearson-lenovo@squebb.ca
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Input: xpad - add QH Electronics VID/PID [+ + +]
Author: Pierre-Loup A. Griffais <pgriffais@valvesoftware.com>
Date:   Thu Jan 16 10:29:53 2025 -0800

    Input: xpad - add QH Electronics VID/PID
    
    commit 92600f3295ff571890c981d886c6544030cc05f3 upstream.
    
    Add support for QH Electronics Xbox 360-compatible controller
    
    Signed-off-by: Pierre-Loup A. Griffais <pgriffais@valvesoftware.com>
    Signed-off-by: Vicki Pfau <vi@endrift.com>
    Link: https://lore.kernel.org/r/20250116012518.3476735-1-vi@endrift.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Input: xpad - add support for Nacon Evol-X Xbox One Controller [+ + +]
Author: Matheos Mattsson <matheos.mattsson@gmail.com>
Date:   Fri Jan 17 17:00:48 2025 -0800

    Input: xpad - add support for Nacon Evol-X Xbox One Controller
    
    commit 3a6e5ed2372bcb2a3c554fda32419efd91ff9b0c upstream.
    
    Add Nacon Evol-X Xbox One to the list of supported devices.
    
    Signed-off-by: Matheos Mattsson <matheos.mattsson@gmail.com>
    Signed-off-by: Pavel Rojtberg <rojtberg@gmail.com>
    Link: https://lore.kernel.org/r/20250107192830.414709-9-rojtberg@gmail.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Input: xpad - add support for Nacon Pro Compact [+ + +]
Author: Nicolas Nobelis <nicolas@nobelis.eu>
Date:   Sat Nov 16 19:24:19 2024 +0100

    Input: xpad - add support for Nacon Pro Compact
    
    commit 1bba29603a2812e7b3dbb4ec1558ecb626ee933e upstream.
    
    Add Nacon Pro Compact to the list of supported devices. These are the
    ids of the "Colorlight" variant. The buttons, sticks and vibrations
    work. The decorative LEDs on the other hand do not (they stay turned
    off).
    
    Signed-off-by: Nicolas Nobelis <nicolas@nobelis.eu>
    Link: https://lore.kernel.org/r/20241116182419.33833-1-nicolas@nobelis.eu
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Input: xpad - add support for wooting two he (arm) [+ + +]
Author: Jack Greiner <jack@emoss.org>
Date:   Fri Jan 17 16:51:58 2025 -0800

    Input: xpad - add support for wooting two he (arm)
    
    commit 222f3390c15c4452a9f7e26f5b7d9138e75d00d5 upstream.
    
    Add Wooting Two HE (ARM) to the list of supported devices.
    
    Signed-off-by: Jack Greiner <jack@emoss.org>
    Signed-off-by: Pavel Rojtberg <rojtberg@gmail.com>
    Link: https://lore.kernel.org/r/20250107192830.414709-3-rojtberg@gmail.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Input: xpad - add unofficial Xbox 360 wireless receiver clone [+ + +]
Author: Nilton Perim Neto <niltonperimneto@gmail.com>
Date:   Fri Jan 17 09:34:18 2025 -0800

    Input: xpad - add unofficial Xbox 360 wireless receiver clone
    
    commit e4940fe6322c851659c17852b671c6e7b1aa9f56 upstream.
    
    Although it mimics the Microsoft's VendorID, it is in fact a clone.
    Taking into account that the original Microsoft Receiver is not being
    manufactured anymore, this drive can solve dpad issues encontered by
    those who still use the original 360 Wireless controller
    but are using a receiver clone.
    
    Signed-off-by: Nilton Perim Neto <niltonperimneto@gmail.com>
    Signed-off-by: Pavel Rojtberg <rojtberg@gmail.com>
    Link: https://lore.kernel.org/r/20250107192830.414709-12-rojtberg@gmail.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Input: xpad - improve name of 8BitDo controller 2dc8:3106 [+ + +]
Author: Leonardo Brondani Schenkel <leonardo@schenkel.net>
Date:   Fri Jan 17 16:46:11 2025 -0800

    Input: xpad - improve name of 8BitDo controller 2dc8:3106
    
    commit 66372fa9936088bf29c4f47907efeff03c51a2c8 upstream.
    
    8BitDo Pro 2 Wired Controller shares the same USB identifier
    (2dc8:3106) as a different device, so amend name to reflect that and
    reduce confusion as the user might think the controller was misdetected.
    
    Because Pro 2 Wired will not work in XTYPE_XBOXONE mode (button presses
    won't register), tagging it as XTYPE_XBOX360 remains appropriate.
    
    Signed-off-by: Leonardo Brondani Schenkel <leonardo@schenkel.net>
    Signed-off-by: Pavel Rojtberg <rojtberg@gmail.com>
    Link: https://lore.kernel.org/r/20250107192830.414709-2-rojtberg@gmail.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ipv4: ip_tunnel: Fix suspicious RCU usage warning in ip_tunnel_find() [+ + +]
Author: Ido Schimmel <idosch@nvidia.com>
Date:   Wed Oct 23 15:30:09 2024 +0300

    ipv4: ip_tunnel: Fix suspicious RCU usage warning in ip_tunnel_find()
    
    commit 90e0569dd3d32f4f4d2ca691d3fa5a8a14a13c12 upstream.
    
    The per-netns IP tunnel hash table is protected by the RTNL mutex and
    ip_tunnel_find() is only called from the control path where the mutex is
    taken.
    
    Add a lockdep expression to hlist_for_each_entry_rcu() in
    ip_tunnel_find() in order to validate that the mutex is held and to
    silence the suspicious RCU usage warning [1].
    
    [1]
    WARNING: suspicious RCU usage
    6.12.0-rc3-custom-gd95d9a31aceb #139 Not tainted
    -----------------------------
    net/ipv4/ip_tunnel.c:221 RCU-list traversed in non-reader section!!
    
    other info that might help us debug this:
    
    rcu_scheduler_active = 2, debug_locks = 1
    1 lock held by ip/362:
     #0: ffffffff86fc7cb0 (rtnl_mutex){+.+.}-{3:3}, at: rtnetlink_rcv_msg+0x377/0xf60
    
    stack backtrace:
    CPU: 12 UID: 0 PID: 362 Comm: ip Not tainted 6.12.0-rc3-custom-gd95d9a31aceb #139
    Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
    Call Trace:
     <TASK>
     dump_stack_lvl+0xba/0x110
     lockdep_rcu_suspicious.cold+0x4f/0xd6
     ip_tunnel_find+0x435/0x4d0
     ip_tunnel_newlink+0x517/0x7a0
     ipgre_newlink+0x14c/0x170
     __rtnl_newlink+0x1173/0x19c0
     rtnl_newlink+0x6c/0xa0
     rtnetlink_rcv_msg+0x3cc/0xf60
     netlink_rcv_skb+0x171/0x450
     netlink_unicast+0x539/0x7f0
     netlink_sendmsg+0x8c1/0xd80
     ____sys_sendmsg+0x8f9/0xc20
     ___sys_sendmsg+0x197/0x1e0
     __sys_sendmsg+0x122/0x1f0
     do_syscall_64+0xbb/0x1d0
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Fixes: c54419321455 ("GRE: Refactor GRE tunneling code.")
    Suggested-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Ido Schimmel <idosch@nvidia.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Link: https://patch.msgid.link/20241023123009.749764-1-idosch@nvidia.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Alva Lan <alvalan9@foxmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ipv6: Fix soft lockups in fib6_select_path under high next hop churn [+ + +]
Author: Omid Ehtemam-Haghighi <omid.ehtemamhaghighi@menlosecurity.com>
Date:   Tue Nov 5 17:02:36 2024 -0800

    ipv6: Fix soft lockups in fib6_select_path under high next hop churn
    
    commit d9ccb18f83ea2bb654289b6ecf014fd267cc988b upstream.
    
    Soft lockups have been observed on a cluster of Linux-based edge routers
    located in a highly dynamic environment. Using the `bird` service, these
    routers continuously update BGP-advertised routes due to frequently
    changing nexthop destinations, while also managing significant IPv6
    traffic. The lockups occur during the traversal of the multipath
    circular linked-list in the `fib6_select_path` function, particularly
    while iterating through the siblings in the list. The issue typically
    arises when the nodes of the linked list are unexpectedly deleted
    concurrently on a different core—indicated by their 'next' and
    'previous' elements pointing back to the node itself and their reference
    count dropping to zero. This results in an infinite loop, leading to a
    soft lockup that triggers a system panic via the watchdog timer.
    
    Apply RCU primitives in the problematic code sections to resolve the
    issue. Where necessary, update the references to fib6_siblings to
    annotate or use the RCU APIs.
    
    Include a test script that reproduces the issue. The script
    periodically updates the routing table while generating a heavy load
    of outgoing IPv6 traffic through multiple iperf3 clients. It
    consistently induces infinite soft lockups within a couple of minutes.
    
    Kernel log:
    
     0 [ffffbd13003e8d30] machine_kexec at ffffffff8ceaf3eb
     1 [ffffbd13003e8d90] __crash_kexec at ffffffff8d0120e3
     2 [ffffbd13003e8e58] panic at ffffffff8cef65d4
     3 [ffffbd13003e8ed8] watchdog_timer_fn at ffffffff8d05cb03
     4 [ffffbd13003e8f08] __hrtimer_run_queues at ffffffff8cfec62f
     5 [ffffbd13003e8f70] hrtimer_interrupt at ffffffff8cfed756
     6 [ffffbd13003e8fd0] __sysvec_apic_timer_interrupt at ffffffff8cea01af
     7 [ffffbd13003e8ff0] sysvec_apic_timer_interrupt at ffffffff8df1b83d
    -- <IRQ stack> --
     8 [ffffbd13003d3708] asm_sysvec_apic_timer_interrupt at ffffffff8e000ecb
        [exception RIP: fib6_select_path+299]
        RIP: ffffffff8ddafe7b  RSP: ffffbd13003d37b8  RFLAGS: 00000287
        RAX: ffff975850b43600  RBX: ffff975850b40200  RCX: 0000000000000000
        RDX: 000000003fffffff  RSI: 0000000051d383e4  RDI: ffff975850b43618
        RBP: ffffbd13003d3800   R8: 0000000000000000   R9: ffff975850b40200
        R10: 0000000000000000  R11: 0000000000000000  R12: ffffbd13003d3830
        R13: ffff975850b436a8  R14: ffff975850b43600  R15: 0000000000000007
        ORIG_RAX: ffffffffffffffff  CS: 0010  SS: 0018
     9 [ffffbd13003d3808] ip6_pol_route at ffffffff8ddb030c
    10 [ffffbd13003d3888] ip6_pol_route_input at ffffffff8ddb068c
    11 [ffffbd13003d3898] fib6_rule_lookup at ffffffff8ddf02b5
    12 [ffffbd13003d3928] ip6_route_input at ffffffff8ddb0f47
    13 [ffffbd13003d3a18] ip6_rcv_finish_core.constprop.0 at ffffffff8dd950d0
    14 [ffffbd13003d3a30] ip6_list_rcv_finish.constprop.0 at ffffffff8dd96274
    15 [ffffbd13003d3a98] ip6_sublist_rcv at ffffffff8dd96474
    16 [ffffbd13003d3af8] ipv6_list_rcv at ffffffff8dd96615
    17 [ffffbd13003d3b60] __netif_receive_skb_list_core at ffffffff8dc16fec
    18 [ffffbd13003d3be0] netif_receive_skb_list_internal at ffffffff8dc176b3
    19 [ffffbd13003d3c50] napi_gro_receive at ffffffff8dc565b9
    20 [ffffbd13003d3c80] ice_receive_skb at ffffffffc087e4f5 [ice]
    21 [ffffbd13003d3c90] ice_clean_rx_irq at ffffffffc0881b80 [ice]
    22 [ffffbd13003d3d20] ice_napi_poll at ffffffffc088232f [ice]
    23 [ffffbd13003d3d80] __napi_poll at ffffffff8dc18000
    24 [ffffbd13003d3db8] net_rx_action at ffffffff8dc18581
    25 [ffffbd13003d3e40] __do_softirq at ffffffff8df352e9
    26 [ffffbd13003d3eb0] run_ksoftirqd at ffffffff8ceffe47
    27 [ffffbd13003d3ec0] smpboot_thread_fn at ffffffff8cf36a30
    28 [ffffbd13003d3ee8] kthread at ffffffff8cf2b39f
    29 [ffffbd13003d3f28] ret_from_fork at ffffffff8ce5fa64
    30 [ffffbd13003d3f50] ret_from_fork_asm at ffffffff8ce03cbb
    
    Fixes: 66f5d6ce53e6 ("ipv6: replace rwlock with rcu and spinlock in fib6_table")
    Reported-by: Adrian Oliver <kernel@aoliver.ca>
    Signed-off-by: Omid Ehtemam-Haghighi <omid.ehtemamhaghighi@menlosecurity.com>
    Cc: Shuah Khan <shuah@kernel.org>
    Cc: Ido Schimmel <idosch@idosch.org>
    Cc: Kuniyuki Iwashima <kuniyu@amazon.com>
    Cc: Simon Horman <horms@kernel.org>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Link: https://patch.msgid.link/20241106010236.1239299-1-omid.ehtemamhaghighi@menlosecurity.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Rajani Kantha <rajanikantha@engineer.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
irqchip/sunxi-nmi: Add missing SKIP_WAKE flag [+ + +]
Author: Philippe Simons <simons.philippe@gmail.com>
Date:   Sun Jan 12 13:34:02 2025 +0100

    irqchip/sunxi-nmi: Add missing SKIP_WAKE flag
    
    [ Upstream commit 3a748d483d80f066ca4b26abe45cdc0c367d13e9 ]
    
    Some boards with Allwinner SoCs connect the PMIC's IRQ pin to the SoC's NMI
    pin instead of a normal GPIO. Since the power key is connected to the PMIC,
    and people expect to wake up a suspended system via this key, the NMI IRQ
    controller must stay alive when the system goes into suspend.
    
    Add the SKIP_WAKE flag to prevent the sunxi NMI controller from going to
    sleep, so that the power key can wake up those systems.
    
    [ tglx: Fixed up coding style ]
    
    Signed-off-by: Philippe Simons <simons.philippe@gmail.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Link: https://lore.kernel.org/all/20250112123402.388520-1-simons.philippe@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
libfs: Add simple_offset_empty() [+ + +]
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Fri Jan 24 14:19:38 2025 -0500

    libfs: Add simple_offset_empty()
    
    [ Upstream commit ecba88a3b32d733d41e27973e25b2bc580f64281 ]
    
    For simple filesystems that use directory offset mapping, rely
    strictly on the directory offset map to tell when a directory has
    no children.
    
    After this patch is applied, the emptiness test holds only the RCU
    read lock when the directory being tested has no children.
    
    In addition, this adds another layer of confirmation that
    simple_offset_add/remove() are working as expected.
    
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Link: https://lore.kernel.org/r/170820143463.6328.7872919188371286951.stgit@91.116.238.104.host.secureserver.net
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Stable-dep-of: 5a1a25be995e ("libfs: Add simple_offset_rename() API")
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

libfs: Add simple_offset_rename() API [+ + +]
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Fri Jan 24 14:19:40 2025 -0500

    libfs: Add simple_offset_rename() API
    
    [ Upstream commit 5a1a25be995e1014abd01600479915683e356f5c ]
    
    I'm about to fix a tmpfs rename bug that requires the use of
    internal simple_offset helpers that are not available in mm/shmem.c
    
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Link: https://lore.kernel.org/r/20240415152057.4605-3-cel@kernel.org
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

libfs: Define a minimum directory offset [+ + +]
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Fri Jan 24 14:19:37 2025 -0500

    libfs: Define a minimum directory offset
    
    [ Upstream commit 7beea725a8ca412c6190090ce7c3a13b169592a1 ]
    
    This value is used in several places, so make it a symbolic
    constant.
    
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Link: https://lore.kernel.org/r/170820142741.6328.12428356024575347885.stgit@91.116.238.104.host.secureserver.net
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Stable-dep-of: ecba88a3b32d ("libfs: Add simple_offset_empty()")
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

libfs: Fix simple_offset_rename_exchange() [+ + +]
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Fri Jan 24 14:19:39 2025 -0500

    libfs: Fix simple_offset_rename_exchange()
    
    [ Upstream commit 23cdd0eed3f1fff3af323092b0b88945a7950d8e ]
    
    User space expects the replacement (old) directory entry to have
    the same directory offset after the rename.
    
    Suggested-by: Christian Brauner <brauner@kernel.org>
    Fixes: a2e459555c5f ("shmem: stable directory offsets")
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Link: https://lore.kernel.org/r/20240415152057.4605-2-cel@kernel.org
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    [ cel: adjusted to apply to origin/linux-6.6.y ]
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

libfs: Re-arrange locking in offset_iterate_dir() [+ + +]
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Fri Jan 24 14:19:36 2025 -0500

    libfs: Re-arrange locking in offset_iterate_dir()
    
    [ Upstream commit 3f6d810665dfde0d33785420618ceb03fba0619d ]
    
    Liam and Matthew say that once the RCU read lock is released,
    xa_state is not safe to re-use for the next xas_find() call. But the
    RCU read lock must be released on each loop iteration so that
    dput(), which might_sleep(), can be called safely.
    
    Thus we are forced to walk the offset tree with fresh state for each
    directory entry. xa_find() can do this for us, though it might be a
    little less efficient than maintaining xa_state locally.
    
    We believe that in the current code base, inode->i_rwsem provides
    protection for the xa_state maintained in
    offset_iterate_dir(). However, there is no guarantee that will
    continue to be the case in the future.
    
    Since offset_iterate_dir() doesn't build xa_state locally any more,
    there's no longer a strong need for offset_find_next(). Clean up by
    rolling these two helpers together.
    
    Suggested-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
    Message-ID: <170785993027.11135.8830043889278631735.stgit@91.116.238.104.host.secureserver.net>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Link: https://lore.kernel.org/r/170820142021.6328.15047865406275957018.stgit@91.116.238.104.host.secureserver.net
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

libfs: Replace simple_offset end-of-directory detection [+ + +]
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Fri Jan 24 14:19:44 2025 -0500

    libfs: Replace simple_offset end-of-directory detection
    
    [ Upstream commit 68a3a65003145644efcbb651e91db249ccd96281 ]
    
    According to getdents(3), the d_off field in each returned directory
    entry points to the next entry in the directory. The d_off field in
    the last returned entry in the readdir buffer must contain a valid
    offset value, but if it points to an actual directory entry, then
    readdir/getdents can loop.
    
    This patch introduces a specific fixed offset value that is placed
    in the d_off field of the last entry in a directory. Some user space
    applications assume that the EOD offset value is larger than the
    offsets of real directory entries, so the largest valid offset value
    is reserved for this purpose. This new value is never allocated by
    simple_offset_add().
    
    When ->iterate_dir() returns, getdents{64} inserts the ctx->pos
    value into the d_off field of the last valid entry in the readdir
    buffer. When it hits EOD, offset_readdir() sets ctx->pos to the EOD
    offset value so the last entry is updated to point to the EOD marker.
    
    When trying to read the entry at the EOD offset, offset_readdir()
    terminates immediately.
    
    It is worth noting that using a Maple tree for directory offset
    value allocation does not guarantee a 63-bit range of values --
    on platforms where "long" is a 32-bit type, the directory offset
    value range is still 0..(2^31 - 1). For broad compatibility with
    32-bit user space, the largest tmpfs directory cookie value is now
    S32_MAX.
    
    Fixes: 796432efab1e ("libfs: getdents() should return 0 after reaching EOD")
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Link: https://lore.kernel.org/r/20241228175522.1854234-5-cel@kernel.org
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    [ cel: adjusted to apply to origin/linux-6.6.y ]
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

libfs: Return ENOSPC when the directory offset range is exhausted [+ + +]
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Fri Jan 24 14:19:42 2025 -0500

    libfs: Return ENOSPC when the directory offset range is exhausted
    
    [ Upstream commit 903dc9c43a155e0893280c7472d4a9a3a83d75a6 ]
    
    Testing shows that the EBUSY error return from mtree_alloc_cyclic()
    leaks into user space. The ERRORS section of "man creat(2)" says:
    
    >       EBUSY   O_EXCL was specified in flags and pathname refers
    >               to a block device that is in use by the system
    >               (e.g., it is mounted).
    
    ENOSPC is closer to what applications expect in this situation.
    
    Note that the normal range of simple directory offset values is
    2..2^63, so hitting this error is going to be rare to impossible.
    
    Fixes: 6faddda69f62 ("libfs: Add directory operations for stable offsets")
    Cc: stable@vger.kernel.org # v6.9+
    Reviewed-by: Jeff Layton <jlayton@kernel.org>
    Reviewed-by: Yang Erkun <yangerkun@huawei.com>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Link: https://lore.kernel.org/r/20241228175522.1854234-2-cel@kernel.org
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    [ cel: adjusted to apply to origin/linux-6.6.y ]
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

libfs: Use d_children list to iterate simple_offset directories [+ + +]
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Fri Jan 24 14:19:45 2025 -0500

    libfs: Use d_children list to iterate simple_offset directories
    
    [ Upstream commit b9b588f22a0c049a14885399e27625635ae6ef91 ]
    
    The mtree mechanism has been effective at creating directory offsets
    that are stable over multiple opendir instances. However, it has not
    been able to handle the subtleties of renames that are concurrent
    with readdir.
    
    Instead of using the mtree to emit entries in the order of their
    offset values, use it only to map incoming ctx->pos to a starting
    entry. Then use the directory's d_children list, which is already
    maintained properly by the dcache, to find the next child to emit.
    
    One of the sneaky things about this is that when the mtree-allocated
    offset value wraps (which is very rare), looking up ctx->pos++ is
    not going to find the next entry; it will return NULL. Instead, by
    following the d_children list, the offset values can appear in any
    order but all of the entries in the directory will be visited
    eventually.
    
    Note also that the readdir() is guaranteed to reach the tail of this
    list. Entries are added only at the head of d_children, and readdir
    walks from its current position in that list towards its tail.
    
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Link: https://lore.kernel.org/r/20241228175522.1854234-6-cel@kernel.org
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    [ cel: adjusted to apply to origin/linux-6.6.y ]
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Linux: Linux 6.6.75 [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sat Feb 1 18:37:57 2025 +0100

    Linux 6.6.75
    
    Link: https://lore.kernel.org/r/20250130133458.903274626@linuxfoundation.org
    Tested-by: Mark Brown <broonie@kernel.org>
    Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Ron Economos <re@w6rz.net>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: kernelci.org bot <bot@kernelci.org>
    Tested-by: Hardik Garg <hargar@linux.microsoft.com>
    Tested-by: Peter Schneider <pschneider1968@googlemail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
net: sched: fix ets qdisc OOB Indexing [+ + +]
Author: Jamal Hadi Salim <jhs@mojatatu.com>
Date:   Sat Jan 11 09:57:39 2025 -0500

    net: sched: fix ets qdisc OOB Indexing
    
    commit d62b04fca4340a0d468d7853bd66e511935a18cb upstream.
    
    Haowei Yan <g1042620637@gmail.com> found that ets_class_from_arg() can
    index an Out-Of-Bound class in ets_class_from_arg() when passed clid of
    0. The overflow may cause local privilege escalation.
    
     [   18.852298] ------------[ cut here ]------------
     [   18.853271] UBSAN: array-index-out-of-bounds in net/sched/sch_ets.c:93:20
     [   18.853743] index 18446744073709551615 is out of range for type 'ets_class [16]'
     [   18.854254] CPU: 0 UID: 0 PID: 1275 Comm: poc Not tainted 6.12.6-dirty #17
     [   18.854821] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014
     [   18.856532] Call Trace:
     [   18.857441]  <TASK>
     [   18.858227]  dump_stack_lvl+0xc2/0xf0
     [   18.859607]  dump_stack+0x10/0x20
     [   18.860908]  __ubsan_handle_out_of_bounds+0xa7/0xf0
     [   18.864022]  ets_class_change+0x3d6/0x3f0
     [   18.864322]  tc_ctl_tclass+0x251/0x910
     [   18.864587]  ? lock_acquire+0x5e/0x140
     [   18.865113]  ? __mutex_lock+0x9c/0xe70
     [   18.866009]  ? __mutex_lock+0xa34/0xe70
     [   18.866401]  rtnetlink_rcv_msg+0x170/0x6f0
     [   18.866806]  ? __lock_acquire+0x578/0xc10
     [   18.867184]  ? __pfx_rtnetlink_rcv_msg+0x10/0x10
     [   18.867503]  netlink_rcv_skb+0x59/0x110
     [   18.867776]  rtnetlink_rcv+0x15/0x30
     [   18.868159]  netlink_unicast+0x1c3/0x2b0
     [   18.868440]  netlink_sendmsg+0x239/0x4b0
     [   18.868721]  ____sys_sendmsg+0x3e2/0x410
     [   18.869012]  ___sys_sendmsg+0x88/0xe0
     [   18.869276]  ? rseq_ip_fixup+0x198/0x260
     [   18.869563]  ? rseq_update_cpu_node_id+0x10a/0x190
     [   18.869900]  ? trace_hardirqs_off+0x5a/0xd0
     [   18.870196]  ? syscall_exit_to_user_mode+0xcc/0x220
     [   18.870547]  ? do_syscall_64+0x93/0x150
     [   18.870821]  ? __memcg_slab_free_hook+0x69/0x290
     [   18.871157]  __sys_sendmsg+0x69/0xd0
     [   18.871416]  __x64_sys_sendmsg+0x1d/0x30
     [   18.871699]  x64_sys_call+0x9e2/0x2670
     [   18.871979]  do_syscall_64+0x87/0x150
     [   18.873280]  ? do_syscall_64+0x93/0x150
     [   18.874742]  ? lock_release+0x7b/0x160
     [   18.876157]  ? do_user_addr_fault+0x5ce/0x8f0
     [   18.877833]  ? irqentry_exit_to_user_mode+0xc2/0x210
     [   18.879608]  ? irqentry_exit+0x77/0xb0
     [   18.879808]  ? clear_bhb_loop+0x15/0x70
     [   18.880023]  ? clear_bhb_loop+0x15/0x70
     [   18.880223]  ? clear_bhb_loop+0x15/0x70
     [   18.880426]  entry_SYSCALL_64_after_hwframe+0x76/0x7e
     [   18.880683] RIP: 0033:0x44a957
     [   18.880851] Code: ff ff e8 fc 00 00 00 66 2e 0f 1f 84 00 00 00 00 00 66 90 f3 0f 1e fa 64 8b 04 25 18 00 00 00 85 c0 75 10 b8 2e 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 51 c3 48 83 ec 28 89 54 24 1c 48 8974 24 10
     [   18.881766] RSP: 002b:00007ffcdd00fad8 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
     [   18.882149] RAX: ffffffffffffffda RBX: 00007ffcdd010db8 RCX: 000000000044a957
     [   18.882507] RDX: 0000000000000000 RSI: 00007ffcdd00fb70 RDI: 0000000000000003
     [   18.885037] RBP: 00007ffcdd010bc0 R08: 000000000703c770 R09: 000000000703c7c0
     [   18.887203] R10: 0000000000000080 R11: 0000000000000246 R12: 0000000000000001
     [   18.888026] R13: 00007ffcdd010da8 R14: 00000000004ca7d0 R15: 0000000000000001
     [   18.888395]  </TASK>
     [   18.888610] ---[ end trace ]---
    
    Fixes: dcc68b4d8084 ("net: sch_ets: Add a new Qdisc")
    Reported-by: Haowei Yan <g1042620637@gmail.com>
    Suggested-by: Haowei Yan <g1042620637@gmail.com>
    Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Reviewed-by: Petr Machata <petrm@nvidia.com>
    Link: https://patch.msgid.link/20250111145740.74755-1-jhs@mojatatu.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
of/unittest: Add test that of_address_to_resource() fails on non-translatable address [+ + +]
Author: Rob Herring (Arm) <robh@kernel.org>
Date:   Fri Jan 10 15:50:28 2025 -0600

    of/unittest: Add test that of_address_to_resource() fails on non-translatable address
    
    [ Upstream commit 44748065ed321041db6e18cdcaa8c2a9554768ac ]
    
    of_address_to_resource() on a non-translatable address should return an
    error. Additionally, this case also triggers a spurious WARN for
    missing #address-cells/#size-cells.
    
    Link: https://lore.kernel.org/r/20250110215030.3637845-1-robh@kernel.org
    Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
RDMA/bnxt_re: Avoid CPU lockups due fifo occupancy check loop [+ + +]
Author: Selvin Xavier <selvin.xavier@broadcom.com>
Date:   Tue Oct 8 00:41:38 2024 -0700

    RDMA/bnxt_re: Avoid CPU lockups due fifo occupancy check loop
    
    commit 8be3e5b0c96beeefe9d5486b96575d104d3e7d17 upstream.
    
    Driver waits indefinitely for the fifo occupancy to go below a threshold
    as soon as the pacing interrupt is received. This can cause soft lockup on
    one of the processors, if the rate of DB is very high.
    
    Add a loop count for FPGA and exit the __wait_for_fifo_occupancy_below_th
    if the loop is taking more time. Pacing will be continuing until the
    occupancy is below the threshold. This is ensured by the checks in
    bnxt_re_pacing_timer_exp and further scheduling the work for pacing based
    on the fifo occupancy.
    
    Fixes: 2ad4e6303a6d ("RDMA/bnxt_re: Implement doorbell pacing algorithm")
    Link: https://patch.msgid.link/r/1728373302-19530-7-git-send-email-selvin.xavier@broadcom.com
    Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
    Reviewed-by: Chandramohan Akula <chandramohan.akula@broadcom.com>
    Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    [ Add the declaration of variable pacing_data to make it work on 6.6.y ]
    Signed-off-by: Alva Lan <alvalan9@foxmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Revert "HID: multitouch: Add support for lenovo Y9000P Touchpad" [+ + +]
Author: Jiri Kosina <jikos@kernel.org>
Date:   Thu Dec 12 09:53:10 2024 +0100

    Revert "HID: multitouch: Add support for lenovo Y9000P Touchpad"
    
    commit 3d88ba86ba6f35a0467f25a88c38aa5639190d04 upstream.
    
    This reverts commit 251efae73bd46b097deec4f9986d926813aed744.
    
    Quoting Wang Yuli:
    
            "The 27C6:01E0 touchpad doesn't require the workaround and applying it
            would actually break functionality.
    
            The initial report came from a BBS forum, but we suspect the
            information provided by the forum user may be incorrect which could
            happen sometimes. [1]
    
            Further investigation showed that the Lenovo Y9000P 2024 doesn't even
            use a Goodix touchpad. [2]
    
            For the broader issue of 27c6:01e0 being unusable on some devices, it
            just need to address it with a libinput quirk.
    
            In conclusion, we should revert this commit, which is the best
            solution."
    
    Reported-by: Ulrich Müller <ulm@gentoo.org>
    Reported-by: WangYuli <wangyuli@uniontech.com>
    Link: https://lore.kernel.org/all/uikt4wwpw@gentoo.org/
    Signed-off-by: Jiri Kosina <jkosina@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Revert "libfs: Add simple_offset_empty()" [+ + +]
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Fri Jan 24 14:19:43 2025 -0500

    Revert "libfs: Add simple_offset_empty()"
    
    [ Upstream commit d7bde4f27ceef3dc6d72010a20d4da23db835a32 ]
    
    simple_empty() and simple_offset_empty() perform the same task.
    The latter's use as a canary to find bugs has not found any new
    issues. A subsequent patch will remove the use of the mtree for
    iterating directory contents, so revert back to using a similar
    mechanism for determining whether a directory is indeed empty.
    
    Only one such mechanism is ever needed.
    
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Link: https://lore.kernel.org/r/20241228175522.1854234-3-cel@kernel.org
    Reviewed-by: Yang Erkun <yangerkun@huawei.com>
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    [ cel: adjusted to apply to origin/linux-6.6.y ]
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Revert "usb: gadget: u_serial: Disable ep before setting port to null to fix the crash caused by port being null" [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Jan 17 09:17:12 2025 +0100

    Revert "usb: gadget: u_serial: Disable ep before setting port to null to fix the crash caused by port being null"
    
    commit 086fd062bc3883ae1ce4166cff5355db315ad879 upstream.
    
    This reverts commit 13014969cbf07f18d62ceea40bd8ca8ec9d36cec.
    
    It is reported to cause crashes on Tegra systems, so revert it for now.
    
    Link: https://lore.kernel.org/r/1037c1ad-9230-4181-b9c3-167dbaa47644@nvidia.com
    Reported-by: Jon Hunter <jonathanh@nvidia.com>
    Cc: stable <stable@kernel.org>
    Cc: Lianqin Hu <hulianqin@vivo.com>
    Link: https://lore.kernel.org/r/2025011711-yippee-fever-a737@gregkh
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
scsi: iscsi: Fix redundant response for ISCSI_UEVENT_GET_HOST_STATS request [+ + +]
Author: Xiang Zhang <hawkxiang.cpp@gmail.com>
Date:   Tue Jan 7 10:24:31 2025 +0800

    scsi: iscsi: Fix redundant response for ISCSI_UEVENT_GET_HOST_STATS request
    
    [ Upstream commit 63ca02221cc5aa0731fe2b0cc28158aaa4b84982 ]
    
    The ISCSI_UEVENT_GET_HOST_STATS request is already handled in
    iscsi_get_host_stats(). This fix ensures that redundant responses are
    skipped in iscsi_if_rx().
    
     - On success: send reply and stats from iscsi_get_host_stats()
       within if_recv_msg().
    
     - On error: fall through.
    
    Signed-off-by: Xiang Zhang <hawkxiang.cpp@gmail.com>
    Link: https://lore.kernel.org/r/20250107022432.65390-1-hawkxiang.cpp@gmail.com
    Reviewed-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

scsi: storvsc: Ratelimit warning logs to prevent VM denial of service [+ + +]
Author: Easwar Hariharan <eahariha@linux.microsoft.com>
Date:   Tue Jan 7 17:28:40 2025 +0000

    scsi: storvsc: Ratelimit warning logs to prevent VM denial of service
    
    commit d2138eab8cde61e0e6f62d0713e45202e8457d6d upstream.
    
    If there's a persistent error in the hypervisor, the SCSI warning for
    failed I/O can flood the kernel log and max out CPU utilization,
    preventing troubleshooting from the VM side. Ratelimit the warning so
    it doesn't DoS the VM.
    
    Closes: https://github.com/microsoft/WSL/issues/9173
    Signed-off-by: Easwar Hariharan <eahariha@linux.microsoft.com>
    Link: https://lore.kernel.org/r/20250107-eahariha-ratelimit-storvsc-v1-1-7fc193d1f2b0@linux.microsoft.com
    Reviewed-by: Michael Kelley <mhklinux@outlook.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
seccomp: Stub for !CONFIG_SECCOMP [+ + +]
Author: Linus Walleij <linus.walleij@linaro.org>
Date:   Wed Jan 8 23:44:45 2025 +0100

    seccomp: Stub for !CONFIG_SECCOMP
    
    [ Upstream commit f90877dd7fb5085dd9abd6399daf63dd2969fc90 ]
    
    When using !CONFIG_SECCOMP with CONFIG_GENERIC_ENTRY, the
    randconfig bots found the following snag:
    
       kernel/entry/common.c: In function 'syscall_trace_enter':
    >> kernel/entry/common.c:52:23: error: implicit declaration
       of function '__secure_computing' [-Wimplicit-function-declaration]
          52 |                 ret = __secure_computing(NULL);
             |                       ^~~~~~~~~~~~~~~~~~
    
    Since generic entry calls __secure_computing() unconditionally,
    fix this by moving the stub out of the ifdef clause for
    CONFIG_HAVE_ARCH_SECCOMP_FILTER so it's always available.
    
    Link: https://lore.kernel.org/oe-kbuild-all/202501061240.Fzk9qiFZ-lkp@intel.com/
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Link: https://lore.kernel.org/r/20250108-seccomp-stub-2-v2-1-74523d49420f@linaro.org
    Signed-off-by: Kees Cook <kees@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
shmem: Fix shmem_rename2() [+ + +]
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Fri Jan 24 14:19:41 2025 -0500

    shmem: Fix shmem_rename2()
    
    [ Upstream commit ad191eb6d6942bb835a0b20b647f7c53c1d99ca4 ]
    
    When renaming onto an existing directory entry, user space expects
    the replacement entry to have the same directory offset as the
    original one.
    
    Link: https://gitlab.alpinelinux.org/alpine/aports/-/issues/15966
    Fixes: a2e459555c5f ("shmem: stable directory offsets")
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Link: https://lore.kernel.org/r/20240415152057.4605-4-cel@kernel.org
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
smb: client: handle lack of EA support in smb2_query_path_info() [+ + +]
Author: Paulo Alcantara <pc@manguebit.com>
Date:   Tue Jan 21 15:25:36 2025 -0300

    smb: client: handle lack of EA support in smb2_query_path_info()
    
    commit 3681c74d342db75b0d641ba60de27bf73e16e66b upstream.
    
    If the server doesn't support both EAs and reparse point in a file,
    the SMB2_QUERY_INFO request will fail with either
    STATUS_NO_EAS_ON_FILE or STATUS_EAS_NOT_SUPPORT in the compound chain,
    so ignore it as long as reparse point isn't
    IO_REPARSE_TAG_LX_(CHR|BLK), which would require the EAs to know about
    major/minor numbers.
    
    Reported-by: Pali Rohár <pali@kernel.org>
    Signed-off-by: Paulo Alcantara (Red Hat) <pc@manguebit.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
USB: serial: quatech2: fix null-ptr-deref in qt2_process_read_urb() [+ + +]
Author: Qasim Ijaz <qasdev00@gmail.com>
Date:   Mon Jan 13 18:00:34 2025 +0000

    USB: serial: quatech2: fix null-ptr-deref in qt2_process_read_urb()
    
    commit 575a5adf48b06a2980c9eeffedf699ed5534fade upstream.
    
    This patch addresses a null-ptr-deref in qt2_process_read_urb() due to
    an incorrect bounds check in the following:
    
           if (newport > serial->num_ports) {
                   dev_err(&port->dev,
                           "%s - port change to invalid port: %i\n",
                           __func__, newport);
                   break;
           }
    
    The condition doesn't account for the valid range of the serial->port
    buffer, which is from 0 to serial->num_ports - 1. When newport is equal
    to serial->num_ports, the assignment of "port" in the
    following code is out-of-bounds and NULL:
    
           serial_priv->current_port = newport;
           port = serial->port[serial_priv->current_port];
    
    The fix checks if newport is greater than or equal to serial->num_ports
    indicating it is out-of-bounds.
    
    Reported-by: syzbot <syzbot+506479ebf12fe435d01a@syzkaller.appspotmail.com>
    Closes: https://syzkaller.appspot.com/bug?extid=506479ebf12fe435d01a
    Fixes: f7a33e608d9a ("USB: serial: add quatech2 usb to serial driver")
    Cc: <stable@vger.kernel.org>      # 3.5
    Signed-off-by: Qasim Ijaz <qasdev00@gmail.com>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
vfio/platform: check the bounds of read/write syscalls [+ + +]
Author: Alex Williamson <alex.williamson@redhat.com>
Date:   Wed Jan 22 10:38:30 2025 -0700

    vfio/platform: check the bounds of read/write syscalls
    
    commit ce9ff21ea89d191e477a02ad7eabf4f996b80a69 upstream.
    
    count and offset are passed from user space and not checked, only
    offset is capped to 40 bits, which can be used to read/write out of
    bounds of the device.
    
    Fixes: 6e3f26456009 (“vfio/platform: read and write support for the device fd”)
    Cc: stable@vger.kernel.org
    Reported-by: Mostafa Saleh <smostafa@google.com>
    Reviewed-by: Eric Auger <eric.auger@redhat.com>
    Reviewed-by: Mostafa Saleh <smostafa@google.com>
    Tested-by: Mostafa Saleh <smostafa@google.com>
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>