Changelog in Linux kernel 6.1.128

 
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: samsung: midas_wm1811: Fix 'Headphone Switch' control creation [+ + +]
Author: Marek Szyprowski <m.szyprowski@samsung.com>
Date:   Wed Aug 9 12:04:46 2023 +0200

    ASoC: samsung: midas_wm1811: Fix 'Headphone Switch' control creation
    
    commit 48c6253fefa38556e0c5c2942edd9181529407e4 upstream.
    
    'Headphone Switch' control is already registered from
    sound/soc/codecs/wm_hubs.c:479, so duplicating it in midas_wm1811
    causes following probe failure:
    
    midas-audio sound: control 2:0:0:Headphone Switch:0 is already present
    midas-audio sound: ASoC: Failed to add Headphone Switch: -16
    midas-audio sound: Failed to register card: -16
    midas-audio: probe of sound failed with error -16
    
    Fix this by dropping duplicated control.
    
    Fixes: d27224a45e54 ("ASoC: samsung: midas_wm1811: Map missing jack kcontrols")
    Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Link: https://lore.kernel.org/r/20230809100446.2105825-1-m.szyprowski@samsung.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ASoC: samsung: midas_wm1811: Map missing jack kcontrols [+ + +]
Author: Alper Nebi Yasak <alpernebiyasak@gmail.com>
Date:   Wed Aug 2 20:57:37 2023 +0300

    ASoC: samsung: midas_wm1811: Map missing jack kcontrols
    
    [ Upstream commit d27224a45e5457ad89195d92decdd57596253428 ]
    
    This driver does not map jack pins to kcontrols that PulseAudio/PipeWire
    need to handle jack detection events. The WM1811 codec used here seems
    to support detecting Headphone and Headset Mic connections. Expose each
    to userspace as a kcontrol and add the necessary widgets.
    
    Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
    Link: https://lore.kernel.org/r/20230802175737.263412-28-alpernebiyasak@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Stable-dep-of: 704dbe97a681 ("ASoC: samsung: Add missing depends on I2C")
    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>
 
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>

 
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>

 
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 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>

 
io_uring: fix waiters missing wake ups [+ + +]
Author: Pavel Begunkov <asml.silence@gmail.com>
Date:   Mon Jan 9 14:46:10 2023 +0000

    io_uring: fix waiters missing wake ups
    
    There are reports of mariadb hangs, which is caused by a missing
    barrier in the waking code resulting in waiters losing events.
    
    The problem was introduced in a backport
    3ab9326f93ec4 ("io_uring: wake up optimisations"),
    and the change restores the barrier present in the original commit
    3ab9326f93ec4 ("io_uring: wake up optimisations")
    
    Reported by: Xan Charbonnet <xan@charbonnet.com>
    Fixes: 3ab9326f93ec4 ("io_uring: wake up optimisations")
    Link: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1093243#99
    Reviewed-by: Li Zetao <lizetao1@huawei.com>
    Signed-off-by: Pavel Begunkov <asml.silence@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>

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

    Linux 6.1.128
    
    Link: https://lore.kernel.org/r/20250130140133.825446496@linuxfoundation.org
    Tested-by: Mark Brown <broonie@kernel.org>
    Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Tested-by: Salvatore Bonaccorso <carnil@debian.org>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Pavel Machek (CIP) <pavel@denx.de>
    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: 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>

 
regmap: detach regmap from dev on regmap_exit [+ + +]
Author: Cosmin Tanislav <demonsingur@gmail.com>
Date:   Thu Nov 28 15:16:23 2024 +0200

    regmap: detach regmap from dev on regmap_exit
    
    commit 3061e170381af96d1e66799d34264e6414d428a7 upstream.
    
    At the end of __regmap_init(), if dev is not NULL, regmap_attach_dev()
    is called, which adds a devres reference to the regmap, to be able to
    retrieve a dev's regmap by name using dev_get_regmap().
    
    When calling regmap_exit, the opposite does not happen, and the
    reference is kept until the dev is detached.
    
    Add a regmap_detach_dev() function and call it in regmap_exit() to make
    sure that the devres reference is not kept.
    
    Cc: stable@vger.kernel.org
    Fixes: 72b39f6f2b5a ("regmap: Implement dev_get_regmap()")
    Signed-off-by: Cosmin Tanislav <demonsingur@gmail.com>
    Rule: add
    Link: https://lore.kernel.org/stable/20241128130554.362486-1-demonsingur%40gmail.com
    Link: https://patch.msgid.link/20241128131625.363835-1-demonsingur@gmail.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Link: https://lore.kernel.org/r/20250115033244.2540522-1-tzungbi@kernel.org
    Signed-off-by: Tzung-Bi Shih <tzungbi@kernel.org>
    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 "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>

 
smb: client: fix NULL ptr deref in crypto_aead_setkey() [+ + +]
Author: Paulo Alcantara <pc@manguebit.com>
Date:   Mon Nov 25 17:17:23 2024 -0300

    smb: client: fix NULL ptr deref in crypto_aead_setkey()
    
    commit 4bdec0d1f658f7c98749bd2c5a486e6cfa8565d2 upstream.
    
    Neither SMB3.0 or SMB3.02 supports encryption negotiate context, so
    when SMB2_GLOBAL_CAP_ENCRYPTION flag is set in the negotiate response,
    the client uses AES-128-CCM as the default cipher.  See MS-SMB2
    3.3.5.4.
    
    Commit b0abcd65ec54 ("smb: client: fix UAF in async decryption") added
    a @server->cipher_type check to conditionally call
    smb3_crypto_aead_allocate(), but that check would always be false as
    @server->cipher_type is unset for SMB3.02.
    
    Fix the following KASAN splat by setting @server->cipher_type for
    SMB3.02 as well.
    
    mount.cifs //srv/share /mnt -o vers=3.02,seal,...
    
    BUG: KASAN: null-ptr-deref in crypto_aead_setkey+0x2c/0x130
    Read of size 8 at addr 0000000000000020 by task mount.cifs/1095
    CPU: 1 UID: 0 PID: 1095 Comm: mount.cifs Not tainted 6.12.0 #1
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-3.fc41
    04/01/2014
    Call Trace:
     <TASK>
     dump_stack_lvl+0x5d/0x80
     ? crypto_aead_setkey+0x2c/0x130
     kasan_report+0xda/0x110
     ? crypto_aead_setkey+0x2c/0x130
     crypto_aead_setkey+0x2c/0x130
     crypt_message+0x258/0xec0 [cifs]
     ? __asan_memset+0x23/0x50
     ? __pfx_crypt_message+0x10/0x10 [cifs]
     ? mark_lock+0xb0/0x6a0
     ? hlock_class+0x32/0xb0
     ? mark_lock+0xb0/0x6a0
     smb3_init_transform_rq+0x352/0x3f0 [cifs]
     ? lock_acquire.part.0+0xf4/0x2a0
     smb_send_rqst+0x144/0x230 [cifs]
     ? __pfx_smb_send_rqst+0x10/0x10 [cifs]
     ? hlock_class+0x32/0xb0
     ? smb2_setup_request+0x225/0x3a0 [cifs]
     ? __pfx_cifs_compound_last_callback+0x10/0x10 [cifs]
     compound_send_recv+0x59b/0x1140 [cifs]
     ? __pfx_compound_send_recv+0x10/0x10 [cifs]
     ? __create_object+0x5e/0x90
     ? hlock_class+0x32/0xb0
     ? do_raw_spin_unlock+0x9a/0xf0
     cifs_send_recv+0x23/0x30 [cifs]
     SMB2_tcon+0x3ec/0xb30 [cifs]
     ? __pfx_SMB2_tcon+0x10/0x10 [cifs]
     ? lock_acquire.part.0+0xf4/0x2a0
     ? __pfx_lock_release+0x10/0x10
     ? do_raw_spin_trylock+0xc6/0x120
     ? lock_acquire+0x3f/0x90
     ? _get_xid+0x16/0xd0 [cifs]
     ? __pfx_SMB2_tcon+0x10/0x10 [cifs]
     ? cifs_get_smb_ses+0xcdd/0x10a0 [cifs]
     cifs_get_smb_ses+0xcdd/0x10a0 [cifs]
     ? __pfx_cifs_get_smb_ses+0x10/0x10 [cifs]
     ? cifs_get_tcp_session+0xaa0/0xca0 [cifs]
     cifs_mount_get_session+0x8a/0x210 [cifs]
     dfs_mount_share+0x1b0/0x11d0 [cifs]
     ? __pfx___lock_acquire+0x10/0x10
     ? __pfx_dfs_mount_share+0x10/0x10 [cifs]
     ? lock_acquire.part.0+0xf4/0x2a0
     ? find_held_lock+0x8a/0xa0
     ? hlock_class+0x32/0xb0
     ? lock_release+0x203/0x5d0
     cifs_mount+0xb3/0x3d0 [cifs]
     ? do_raw_spin_trylock+0xc6/0x120
     ? __pfx_cifs_mount+0x10/0x10 [cifs]
     ? lock_acquire+0x3f/0x90
     ? find_nls+0x16/0xa0
     ? smb3_update_mnt_flags+0x372/0x3b0 [cifs]
     cifs_smb3_do_mount+0x1e2/0xc80 [cifs]
     ? __pfx_vfs_parse_fs_string+0x10/0x10
     ? __pfx_cifs_smb3_do_mount+0x10/0x10 [cifs]
     smb3_get_tree+0x1bf/0x330 [cifs]
     vfs_get_tree+0x4a/0x160
     path_mount+0x3c1/0xfb0
     ? kasan_quarantine_put+0xc7/0x1d0
     ? __pfx_path_mount+0x10/0x10
     ? kmem_cache_free+0x118/0x3e0
     ? user_path_at+0x74/0xa0
     __x64_sys_mount+0x1a6/0x1e0
     ? __pfx___x64_sys_mount+0x10/0x10
     ? mark_held_locks+0x1a/0x90
     do_syscall_64+0xbb/0x1d0
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Cc: Tom Talpey <tom@talpey.com>
    Reported-by: Jianhong Yin <jiyin@redhat.com>
    Cc: stable@vger.kernel.org # v6.12
    Fixes: b0abcd65ec54 ("smb: client: fix UAF in async decryption")
    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>

smb: client: fix UAF in async decryption [+ + +]
Author: Enzo Matsumiya <ematsumiya@suse.de>
Date:   Thu Sep 26 14:46:13 2024 -0300

    smb: client: fix UAF in async decryption
    
    commit b0abcd65ec545701b8793e12bc27dc98042b151a upstream.
    
    Doing an async decryption (large read) crashes with a
    slab-use-after-free way down in the crypto API.
    
    Reproducer:
        # mount.cifs -o ...,seal,esize=1 //srv/share /mnt
        # dd if=/mnt/largefile of=/dev/null
        ...
        [  194.196391] ==================================================================
        [  194.196844] BUG: KASAN: slab-use-after-free in gf128mul_4k_lle+0xc1/0x110
        [  194.197269] Read of size 8 at addr ffff888112bd0448 by task kworker/u77:2/899
        [  194.197707]
        [  194.197818] CPU: 12 UID: 0 PID: 899 Comm: kworker/u77:2 Not tainted 6.11.0-lku-00028-gfca3ca14a17a-dirty #43
        [  194.198400] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.16.2-3-gd478f380-prebuilt.qemu.org 04/01/2014
        [  194.199046] Workqueue: smb3decryptd smb2_decrypt_offload [cifs]
        [  194.200032] Call Trace:
        [  194.200191]  <TASK>
        [  194.200327]  dump_stack_lvl+0x4e/0x70
        [  194.200558]  ? gf128mul_4k_lle+0xc1/0x110
        [  194.200809]  print_report+0x174/0x505
        [  194.201040]  ? __pfx__raw_spin_lock_irqsave+0x10/0x10
        [  194.201352]  ? srso_return_thunk+0x5/0x5f
        [  194.201604]  ? __virt_addr_valid+0xdf/0x1c0
        [  194.201868]  ? gf128mul_4k_lle+0xc1/0x110
        [  194.202128]  kasan_report+0xc8/0x150
        [  194.202361]  ? gf128mul_4k_lle+0xc1/0x110
        [  194.202616]  gf128mul_4k_lle+0xc1/0x110
        [  194.202863]  ghash_update+0x184/0x210
        [  194.203103]  shash_ahash_update+0x184/0x2a0
        [  194.203377]  ? __pfx_shash_ahash_update+0x10/0x10
        [  194.203651]  ? srso_return_thunk+0x5/0x5f
        [  194.203877]  ? crypto_gcm_init_common+0x1ba/0x340
        [  194.204142]  gcm_hash_assoc_remain_continue+0x10a/0x140
        [  194.204434]  crypt_message+0xec1/0x10a0 [cifs]
        [  194.206489]  ? __pfx_crypt_message+0x10/0x10 [cifs]
        [  194.208507]  ? srso_return_thunk+0x5/0x5f
        [  194.209205]  ? srso_return_thunk+0x5/0x5f
        [  194.209925]  ? srso_return_thunk+0x5/0x5f
        [  194.210443]  ? srso_return_thunk+0x5/0x5f
        [  194.211037]  decrypt_raw_data+0x15f/0x250 [cifs]
        [  194.212906]  ? __pfx_decrypt_raw_data+0x10/0x10 [cifs]
        [  194.214670]  ? srso_return_thunk+0x5/0x5f
        [  194.215193]  smb2_decrypt_offload+0x12a/0x6c0 [cifs]
    
    This is because TFM is being used in parallel.
    
    Fix this by allocating a new AEAD TFM for async decryption, but keep
    the existing one for synchronous READ cases (similar to what is done
    in smb3_calc_signature()).
    
    Also remove the calls to aead_request_set_callback() and
    crypto_wait_req() since it's always going to be a synchronous operation.
    
    Signed-off-by: Enzo Matsumiya <ematsumiya@suse.de>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
softirq: Allow raising SCHED_SOFTIRQ from SMP-call-function on RT kernel [+ + +]
Author: K Prateek Nayak <kprateek.nayak@amd.com>
Date:   Tue Nov 19 05:44:29 2024 +0000

    softirq: Allow raising SCHED_SOFTIRQ from SMP-call-function on RT kernel
    
    commit 6675ce20046d149e1e1ffe7e9577947dee17aad5 upstream.
    
    do_softirq_post_smp_call_flush() on PREEMPT_RT kernels carries a
    WARN_ON_ONCE() for any SOFTIRQ being raised from an SMP-call-function.
    Since do_softirq_post_smp_call_flush() is called with preempt disabled,
    raising a SOFTIRQ during flush_smp_call_function_queue() can lead to
    longer preempt disabled sections.
    
    Since commit b2a02fc43a1f ("smp: Optimize
    send_call_function_single_ipi()") IPIs to an idle CPU in
    TIF_POLLING_NRFLAG mode can be optimized out by instead setting
    TIF_NEED_RESCHED bit in idle task's thread_info and relying on the
    flush_smp_call_function_queue() in the idle-exit path to run the
    SMP-call-function.
    
    To trigger an idle load balancing, the scheduler queues
    nohz_csd_function() responsible for triggering an idle load balancing on
    a target nohz idle CPU and sends an IPI. Only now, this IPI is optimized
    out and the SMP-call-function is executed from
    flush_smp_call_function_queue() in do_idle() which can raise a
    SCHED_SOFTIRQ to trigger the balancing.
    
    So far, this went undetected since, the need_resched() check in
    nohz_csd_function() would make it bail out of idle load balancing early
    as the idle thread does not clear TIF_POLLING_NRFLAG before calling
    flush_smp_call_function_queue(). The need_resched() check was added with
    the intent to catch a new task wakeup, however, it has recently
    discovered to be unnecessary and will be removed in the subsequent
    commit after which nohz_csd_function() can raise a SCHED_SOFTIRQ from
    flush_smp_call_function_queue() to trigger an idle load balance on an
    idle target in TIF_POLLING_NRFLAG mode.
    
    nohz_csd_function() bails out early if "idle_cpu()" check for the
    target CPU, and does not lock the target CPU's rq until the very end,
    once it has found tasks to run on the CPU and will not inhibit the
    wakeup of, or running of a newly woken up higher priority task. Account
    for this and prevent a WARN_ON_ONCE() when SCHED_SOFTIRQ is raised from
    flush_smp_call_function_queue().
    
    Signed-off-by: K Prateek Nayak <kprateek.nayak@amd.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lore.kernel.org/r/20241119054432.6405-2-kprateek.nayak@amd.com
    Tested-by: Felix Moessbauer <felix.moessbauer@siemens.com>
    Signed-off-by: Florian Bezdeka <florian.bezdeka@siemens.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>

 
wifi: iwlwifi: add a few rate index validity checks [+ + +]
Author: Anjaneyulu <pagadala.yesu.anjaneyulu@intel.com>
Date:   Wed Jun 14 12:41:37 2023 +0300

    wifi: iwlwifi: add a few rate index validity checks
    
    commit efbe8f81952fe469d38655744627d860879dcde8 upstream.
    
    Validate index before access iwl_rate_mcs to keep rate->index
    inside the valid boundaries. Use MCS_0_INDEX if index is less
    than MCS_0_INDEX and MCS_9_INDEX if index is greater then
    MCS_9_INDEX.
    
    Signed-off-by: Anjaneyulu <pagadala.yesu.anjaneyulu@intel.com>
    Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
    Link: https://lore.kernel.org/r/20230614123447.79f16b3aef32.If1137f894775d6d07b78cbf3a6163ffce6399507@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
xfs: abort intent items when recovery intents fail [+ + +]
Author: Long Li <leo.lilong@huawei.com>
Date:   Wed Jan 29 10:47:09 2025 -0800

    xfs: abort intent items when recovery intents fail
    
    [ Upstream commit f8f9d952e42dd49ae534f61f2fa7ca0876cb9848 ]
    
    When recovering intents, we capture newly created intent items as part of
    committing recovered intent items.  If intent recovery fails at a later
    point, we forget to remove those newly created intent items from the AIL
    and hang:
    
        [root@localhost ~]# cat /proc/539/stack
        [<0>] xfs_ail_push_all_sync+0x174/0x230
        [<0>] xfs_unmount_flush_inodes+0x8d/0xd0
        [<0>] xfs_mountfs+0x15f7/0x1e70
        [<0>] xfs_fs_fill_super+0x10ec/0x1b20
        [<0>] get_tree_bdev+0x3c8/0x730
        [<0>] vfs_get_tree+0x89/0x2c0
        [<0>] path_mount+0xecf/0x1800
        [<0>] do_mount+0xf3/0x110
        [<0>] __x64_sys_mount+0x154/0x1f0
        [<0>] do_syscall_64+0x39/0x80
        [<0>] entry_SYSCALL_64_after_hwframe+0x63/0xcd
    
    When newly created intent items fail to commit via transaction, intent
    recovery hasn't created done items for these newly created intent items,
    so the capture structure is the sole owner of the captured intent items.
    We must release them explicitly or else they leak:
    
    unreferenced object 0xffff888016719108 (size 432):
      comm "mount", pid 529, jiffies 4294706839 (age 144.463s)
      hex dump (first 32 bytes):
        08 91 71 16 80 88 ff ff 08 91 71 16 80 88 ff ff  ..q.......q.....
        18 91 71 16 80 88 ff ff 18 91 71 16 80 88 ff ff  ..q.......q.....
      backtrace:
        [<ffffffff8230c68f>] xfs_efi_init+0x18f/0x1d0
        [<ffffffff8230c720>] xfs_extent_free_create_intent+0x50/0x150
        [<ffffffff821b671a>] xfs_defer_create_intents+0x16a/0x340
        [<ffffffff821bac3e>] xfs_defer_ops_capture_and_commit+0x8e/0xad0
        [<ffffffff82322bb9>] xfs_cui_item_recover+0x819/0x980
        [<ffffffff823289b6>] xlog_recover_process_intents+0x246/0xb70
        [<ffffffff8233249a>] xlog_recover_finish+0x8a/0x9a0
        [<ffffffff822eeafb>] xfs_log_mount_finish+0x2bb/0x4a0
        [<ffffffff822c0f4f>] xfs_mountfs+0x14bf/0x1e70
        [<ffffffff822d1f80>] xfs_fs_fill_super+0x10d0/0x1b20
        [<ffffffff81a21fa2>] get_tree_bdev+0x3d2/0x6d0
        [<ffffffff81a1ee09>] vfs_get_tree+0x89/0x2c0
        [<ffffffff81a9f35f>] path_mount+0xecf/0x1800
        [<ffffffff81a9fd83>] do_mount+0xf3/0x110
        [<ffffffff81aa00e4>] __x64_sys_mount+0x154/0x1f0
        [<ffffffff83968739>] do_syscall_64+0x39/0x80
    
    Fix the problem above by abort intent items that don't have a done item
    when recovery intents fail.
    
    Fixes: e6fff81e4870 ("xfs: proper replay of deferred ops queued during log recovery")
    Signed-off-by: Long Li <leo.lilong@huawei.com>
    Reviewed-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>
    Signed-off-by: Leah Rumancik <leah.rumancik@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

xfs: allow read IO and FICLONE to run concurrently [+ + +]
Author: Catherine Hoang <catherine.hoang@oracle.com>
Date:   Wed Jan 29 10:47:07 2025 -0800

    xfs: allow read IO and FICLONE to run concurrently
    
    [ Upstream commit 14a537983b228cb050ceca3a5b743d01315dc4aa ]
    
    One of our VM cluster management products needs to snapshot KVM image
    files so that they can be restored in case of failure. Snapshotting is
    done by redirecting VM disk writes to a sidecar file and using reflink
    on the disk image, specifically the FICLONE ioctl as used by
    "cp --reflink". Reflink locks the source and destination files while it
    operates, which means that reads from the main vm disk image are blocked,
    causing the vm to stall. When an image file is heavily fragmented, the
    copy process could take several minutes. Some of the vm image files have
    50-100 million extent records, and duplicating that much metadata locks
    the file for 30 minutes or more. Having activities suspended for such
    a long time in a cluster node could result in node eviction.
    
    Clone operations and read IO do not change any data in the source file,
    so they should be able to run concurrently. Demote the exclusive locks
    taken by FICLONE to shared locks to allow reads while cloning. While a
    clone is in progress, writes will take the IOLOCK_EXCL, so they block
    until the clone completes.
    
    Link: https://lore.kernel.org/linux-xfs/8911B94D-DD29-4D6E-B5BC-32EAF1866245@oracle.com/
    Signed-off-by: Catherine Hoang <catherine.hoang@oracle.com>
    Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
    Reviewed-by: Dave Chinner <dchinner@redhat.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>
    Signed-off-by: Leah Rumancik <leah.rumancik@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

xfs: bump max fsgeom struct version [+ + +]
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Wed Jan 29 10:46:59 2025 -0800

    xfs: bump max fsgeom struct version
    
    [ Upstream commit 9488062805943c2d63350d3ef9e4dc093799789a ]
    
    The latest version of the fs geometry structure is v5.  Bump this
    constant so that xfs_db and mkfs calls to libxfs_fs_geometry will fill
    out all the fields.
    
    IOWs, this commit is a no-op for the kernel, but will be useful for
    userspace reporting in later changes.
    
    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Leah Rumancik <leah.rumancik@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

xfs: clean up dqblk extraction [+ + +]
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Wed Jan 29 10:47:14 2025 -0800

    xfs: clean up dqblk extraction
    
    [ Upstream commit ed17f7da5f0c8b65b7b5f7c98beb0aadbc0546ee ]
    
    Since the introduction of xfs_dqblk in V5, xfs really ought to find the
    dqblk pointer from the dquot buffer, then compute the xfs_disk_dquot
    pointer from the dqblk pointer.  Fix the open-coded xfs_buf_offset calls
    and do the type checking in the correct order.
    
    Note that this has made no practical difference since the start of the
    xfs_disk_dquot is coincident with the start of the xfs_dqblk.
    
    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>
    Signed-off-by: Leah Rumancik <leah.rumancik@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

xfs: clean up FS_XFLAG_REALTIME handling in xfs_ioctl_setattr_xflags [+ + +]
Author: Christoph Hellwig <hch@lst.de>
Date:   Wed Jan 29 10:47:16 2025 -0800

    xfs: clean up FS_XFLAG_REALTIME handling in xfs_ioctl_setattr_xflags
    
    [ Upstream commit c421df0b19430417a04f68919fc3d1943d20ac04 ]
    
    Introduce a local boolean variable if FS_XFLAG_REALTIME to make the
    checks for it more obvious, and de-densify a few of the conditionals
    using it to make them more readable while at it.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/20231025141020.192413-4-hch@lst.de
    Reviewed-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Leah Rumancik <leah.rumancik@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

xfs: dquot recovery does not validate the recovered dquot [+ + +]
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Wed Jan 29 10:47:15 2025 -0800

    xfs: dquot recovery does not validate the recovered dquot
    
    [ Upstream commit 9c235dfc3d3f901fe22acb20f2ab37ff39f2ce02 ]
    
    When we're recovering ondisk quota records from the log, we need to
    validate the recovered buffer contents before writing them to disk.
    
    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>
    Signed-off-by: Leah Rumancik <leah.rumancik@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

xfs: factor out xfs_defer_pending_abort [+ + +]
Author: Long Li <leo.lilong@huawei.com>
Date:   Wed Jan 29 10:47:08 2025 -0800

    xfs: factor out xfs_defer_pending_abort
    
    [ Upstream commit 2a5db859c6825b5d50377dda9c3cc729c20cad43 ]
    
    Factor out xfs_defer_pending_abort() from xfs_defer_trans_abort(), which
    not use transaction parameter, so it can be used after the transaction
    life cycle.
    
    Signed-off-by: Long Li <leo.lilong@huawei.com>
    Reviewed-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>
    Signed-off-by: Leah Rumancik <leah.rumancik@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

xfs: fix internal error from AGFL exhaustion [+ + +]
Author: Omar Sandoval <osandov@fb.com>
Date:   Wed Jan 29 10:47:12 2025 -0800

    xfs: fix internal error from AGFL exhaustion
    
    [ Upstream commit f63a5b3769ad7659da4c0420751d78958ab97675 ]
    
    We've been seeing XFS errors like the following:
    
    XFS: Internal error i != 1 at line 3526 of file fs/xfs/libxfs/xfs_btree.c.  Caller xfs_btree_insert+0x1ec/0x280
    ...
    Call Trace:
     xfs_corruption_error+0x94/0xa0
     xfs_btree_insert+0x221/0x280
     xfs_alloc_fixup_trees+0x104/0x3e0
     xfs_alloc_ag_vextent_size+0x667/0x820
     xfs_alloc_fix_freelist+0x5d9/0x750
     xfs_free_extent_fix_freelist+0x65/0xa0
     __xfs_free_extent+0x57/0x180
    ...
    
    This is the XFS_IS_CORRUPT() check in xfs_btree_insert() when
    xfs_btree_insrec() fails.
    
    After converting this into a panic and dissecting the core dump, I found
    that xfs_btree_insrec() is failing because it's trying to split a leaf
    node in the cntbt when the AG free list is empty. In particular, it's
    failing to get a block from the AGFL _while trying to refill the AGFL_.
    
    If a single operation splits every level of the bnobt and the cntbt (and
    the rmapbt if it is enabled) at once, the free list will be empty. Then,
    when the next operation tries to refill the free list, it allocates
    space. If the allocation does not use a full extent, it will need to
    insert records for the remaining space in the bnobt and cntbt. And if
    those new records go in full leaves, the leaves (and potentially more
    nodes up to the old root) need to be split.
    
    Fix it by accounting for the additional splits that may be required to
    refill the free list in the calculation for the minimum free list size.
    
    P.S. As far as I can tell, this bug has existed for a long time -- maybe
    back to xfs-history commit afdf80ae7405 ("Add XFS_AG_MAXLEVELS macros
    ...") in April 1994! It requires a very unlucky sequence of events, and
    in fact we didn't hit it until a particular sparse mmap workload updated
    from 5.12 to 5.19. But this bug existed in 5.12, so it must've been
    exposed by some other change in allocation or writeback patterns. It's
    also much less likely to be hit with the rmapbt enabled, since that
    increases the minimum free list size and is unlikely to split at the
    same time as the bnobt and cntbt.
    
    Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
    Reviewed-by: Dave Chinner <dchinner@redhat.com>
    Signed-off-by: Omar Sandoval <osandov@fb.com>
    Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>
    Signed-off-by: Leah Rumancik <leah.rumancik@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

xfs: fix units conversion error in xfs_bmap_del_extent_delay [+ + +]
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Wed Jan 29 10:47:03 2025 -0800

    xfs: fix units conversion error in xfs_bmap_del_extent_delay
    
    [ Upstream commit ddd98076d5c075c8a6c49d9e6e8ee12844137f23 ]
    
    The unit conversions in this function do not make sense.  First we
    convert a block count to bytes, then divide that bytes value by
    rextsize, which is in blocks, to get an rt extent count.  You can't
    divide bytes by blocks to get a (possibly multiblock) extent value.
    
    Fortunately nobody uses delalloc on the rt volume so this hasn't
    mattered.
    
    Fixes: fa5c836ca8eb5 ("xfs: refactor xfs_bunmapi_cow")
    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Leah Rumancik <leah.rumancik@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

xfs: handle nimaps=0 from xfs_bmapi_write in xfs_alloc_file_space [+ + +]
Author: Christoph Hellwig <hch@lst.de>
Date:   Wed Jan 29 10:47:06 2025 -0800

    xfs: handle nimaps=0 from xfs_bmapi_write in xfs_alloc_file_space
    
    [ Upstream commit 35dc55b9e80cb9ec4bcb969302000b002b2ed850 ]
    
    If xfs_bmapi_write finds a delalloc extent at the requested range, it
    tries to convert the entire delalloc extent to a real allocation.
    
    But if the allocator cannot find a single free extent large enough to
    cover the start block of the requested range, xfs_bmapi_write will
    return 0 but leave *nimaps set to 0.
    
    In that case we simply need to keep looping with the same startoffset_fsb
    so that one of the following allocations will eventually reach the
    requested range.
    
    Note that this could affect any caller of xfs_bmapi_write that covers
    an existing delayed allocation.  As far as I can tell we do not have
    any other such caller, though - the regular writeback path uses
    xfs_bmapi_convert_delalloc to convert delayed allocations to real ones,
    and direct I/O invalidates the page cache first.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
    Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>
    Signed-off-by: Leah Rumancik <leah.rumancik@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

xfs: hoist freeing of rt data fork extent mappings [+ + +]
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Wed Jan 29 10:47:00 2025 -0800

    xfs: hoist freeing of rt data fork extent mappings
    
    [ Upstream commit 6c664484337b37fa0cf6e958f4019623e30d40f7 ]
    
    Currently, xfs_bmap_del_extent_real contains a bunch of code to convert
    the physical extent of a data fork mapping for a realtime file into rt
    extents and pass that to the rt extent freeing function.  Since the
    details of this aren't needed when CONFIG_XFS_REALTIME=n, move it to
    xfs_rtbitmap.c to reduce code size when realtime isn't enabled.
    
    This will (one day) enable realtime EFIs to reuse the same
    unit-converting call with less code duplication.
    
    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Leah Rumancik <leah.rumancik@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

xfs: inode recovery does not validate the recovered inode [+ + +]
Author: Dave Chinner <dchinner@redhat.com>
Date:   Wed Jan 29 10:47:13 2025 -0800

    xfs: inode recovery does not validate the recovered inode
    
    [ Upstream commit 038ca189c0d2c1570b4d922f25b524007c85cf94 ]
    
    Discovered when trying to track down a weird recovery corruption
    issue that wasn't detected at recovery time.
    
    The specific corruption was a zero extent count field when big
    extent counts are in use, and it turns out the dinode verifier
    doesn't detect that specific corruption case, either. So fix it too.
    
    Signed-off-by: Dave Chinner <dchinner@redhat.com>
    Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
    Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>
    Signed-off-by: Leah Rumancik <leah.rumancik@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

xfs: introduce protection for drop nlink [+ + +]
Author: Cheng Lin <cheng.lin130@zte.com.cn>
Date:   Wed Jan 29 10:47:05 2025 -0800

    xfs: introduce protection for drop nlink
    
    [ Upstream commit 2b99e410b28f5a75ae417e6389e767c7745d6fce ]
    
    When abnormal drop_nlink are detected on the inode,
    return error, to avoid corruption propagation.
    
    Signed-off-by: Cheng Lin <cheng.lin130@zte.com.cn>
    Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
    Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>
    Signed-off-by: Leah Rumancik <leah.rumancik@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

xfs: make sure maxlen is still congruent with prod when rounding down [+ + +]
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Wed Jan 29 10:47:04 2025 -0800

    xfs: make sure maxlen is still congruent with prod when rounding down
    
    [ Upstream commit f6a2dae2a1f52ea23f649c02615d073beba4cc35 ]
    
    In commit 2a6ca4baed62, we tried to fix an overflow problem in the
    realtime allocator that was caused by an overly large maxlen value
    causing xfs_rtcheck_range to run off the end of the realtime bitmap.
    Unfortunately, there is a subtle bug here -- maxlen (and minlen) both
    have to be aligned with @prod, but @prod can be larger than 1 if the
    user has set an extent size hint on the file, and that extent size hint
    is larger than the realtime extent size.
    
    If the rt free space extents are not aligned to this file's extszhint
    because other files without extent size hints allocated space (or the
    number of rt extents is similarly not aligned), then it's possible that
    maxlen after clamping to sb_rextents will no longer be aligned to prod.
    The allocation will succeed just fine, but we still trip the assertion.
    
    Fix the problem by reducing maxlen by any misalignment with prod.  While
    we're at it, split the assertions into two so that we can tell which
    value had the bad alignment.
    
    Fixes: 2a6ca4baed62 ("xfs: make sure the rt allocator doesn't run off the end")
    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Leah Rumancik <leah.rumancik@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

xfs: only remap the written blocks in xfs_reflink_end_cow_extent [+ + +]
Author: Christoph Hellwig <hch@lst.de>
Date:   Wed Jan 29 10:47:10 2025 -0800

    xfs: only remap the written blocks in xfs_reflink_end_cow_extent
    
    [ Upstream commit 55f669f34184ecb25b8353f29c7f6f1ae5b313d1 ]
    
    xfs_reflink_end_cow_extent looks up the COW extent and the data fork
    extent at offset_fsb, and then proceeds to remap the common subset
    between the two.
    
    It does however not limit the remapped extent to the passed in
    [*offset_fsbm end_fsb] range and thus potentially remaps more blocks than
    the one handled by the current I/O completion.  This means that with
    sufficiently large data and COW extents we could be remapping COW fork
    mappings that have not been written to, leading to a stale data exposure
    on a powerfail event.
    
    We use to have a xfs_trim_range to make the remap fit the I/O completion
    range, but that got (apparently accidentally) removed in commit
    df2fd88f8ac7 ("xfs: rewrite xfs_reflink_end_cow to use intents").
    
    Note that I've only found this by code inspection, and a test case would
    probably require very specific delay and error injection.
    
    Fixes: df2fd88f8ac7 ("xfs: rewrite xfs_reflink_end_cow to use intents")
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
    Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>
    Signed-off-by: Leah Rumancik <leah.rumancik@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

xfs: prevent rt growfs when quota is enabled [+ + +]
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Wed Jan 29 10:47:01 2025 -0800

    xfs: prevent rt growfs when quota is enabled
    
    [ Upstream commit b73494fa9a304ab95b59f07845e8d7d36e4d23e0 ]
    
    Quotas aren't (yet) supported with realtime, so we shouldn't allow
    userspace to set up a realtime section when quotas are enabled, even if
    they attached one via mount options.  IOWS, you shouldn't be able to do:
    
    # mkfs.xfs -f /dev/sda
    # mount /dev/sda /mnt -o rtdev=/dev/sdb,usrquota
    # xfs_growfs -r /mnt
    
    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Leah Rumancik <leah.rumancik@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

xfs: respect the stable writes flag on the RT device [+ + +]
Author: Christoph Hellwig <hch@lst.de>
Date:   Wed Jan 29 10:47:17 2025 -0800

    xfs: respect the stable writes flag on the RT device
    
    [ Upstream commit 9c04138414c00ae61421f36ada002712c4bac94a ]
    
    Update the per-folio stable writes flag dependening on which device an
    inode resides on.
    
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/20231025141020.192413-5-hch@lst.de
    Reviewed-by: Darrick J. Wong <djwong@kernel.org>
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    Signed-off-by: Leah Rumancik <leah.rumancik@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

xfs: rt stubs should return negative errnos when rt disabled [+ + +]
Author: Darrick J. Wong <djwong@kernel.org>
Date:   Wed Jan 29 10:47:02 2025 -0800

    xfs: rt stubs should return negative errnos when rt disabled
    
    [ Upstream commit c2988eb5cff75c02bc57e02c323154aa08f55b78 ]
    
    When realtime support is not compiled into the kernel, these functions
    should return negative errnos, not positive errnos.  While we're at it,
    fix a broken macro declaration.
    
    Signed-off-by: Darrick J. Wong <djwong@kernel.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Leah Rumancik <leah.rumancik@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

xfs: up(ic_sema) if flushing data device fails [+ + +]
Author: Leah Rumancik <leah.rumancik@gmail.com>
Date:   Wed Jan 29 10:47:11 2025 -0800

    xfs: up(ic_sema) if flushing data device fails
    
    [ Upstream commit 471de20303dda0b67981e06d59cc6c4a83fd2a3c ]
    
    We flush the data device cache before we issue external log IO. If
    the flush fails, we shut down the log immediately and return. However,
    the iclog->ic_sema is left in a decremented state so let's add an up().
    Prior to this patch, xfs/438 would fail consistently when running with
    an external log device:
    
    sync
      -> xfs_log_force
      -> xlog_write_iclog
          -> down(&iclog->ic_sema)
          -> blkdev_issue_flush (fail causes us to intiate shutdown)
              -> xlog_force_shutdown
              -> return
    
    unmount
      -> xfs_log_umount
          -> xlog_wait_iclog_completion
              -> down(&iclog->ic_sema) --------> HANG
    
    There is a second early return / shutdown. Make sure the up() happens
    for it as well. Also make sure we cleanup the iclog state,
    xlog_state_done_syncing, before dropping the iclog lock.
    
    Fixes: b5d721eaae47 ("xfs: external logs need to flush data device")
    Fixes: 842a42d126b4 ("xfs: shutdown on failure to add page to log bio")
    Fixes: 7d839e325af2 ("xfs: check return codes when flushing block devices")
    Signed-off-by: Leah Rumancik <leah.rumancik@gmail.com>
    Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
    Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>
    Signed-off-by: Leah Rumancik <leah.rumancik@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>