Changelog in Linux kernel 6.13.1

 
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>

 
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>

 
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>

 
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>
 
HID: wacom: Initialize brightness of LED trigger [+ + +]
Author: Jason Gerecke <jason.gerecke@wacom.com>
Date:   Mon Dec 9 10:40:29 2024 -0800

    HID: wacom: Initialize brightness of LED trigger
    
    commit 88006b8eca63467cf1b28fed839f4954c578eeff upstream.
    
    If an LED has a default_trigger set prior to being registered with
    the subsystem, that trigger will be executed with a brightness value
    defined by `trigger->brightness`. Our driver was not setting this
    value, which was causing problems. It would cause the selected LED
    to be turned off, as well as corrupt the hlv/llv values assigned to
    other LEDs (since calling `wacom_led_brightness_set` will overite
    these values).
    
    This patch sets the value of `trigger->brightness` to an appropriate
    value. We use `wacom_leds_brightness_get` to transform the llv/hlv
    values into a brightness that is understood by the rest of the LED
    subsystem.
    
    Fixes: 822c91e72eac ("leds: trigger: Store brightness set by led_trigger_event()")
    Cc: stable@vger.kernel.org # v6.10+
    Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.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 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>

 
io_uring/rsrc: require cloned buffers to share accounting contexts [+ + +]
Author: Jann Horn <jannh@google.com>
Date:   Tue Jan 14 18:49:00 2025 +0100

    io_uring/rsrc: require cloned buffers to share accounting contexts
    
    commit 19d340a2988d4f3e673cded9dde405d727d7e248 upstream.
    
    When IORING_REGISTER_CLONE_BUFFERS is used to clone buffers from uring
    instance A to uring instance B, where A and B use different MMs for
    accounting, the accounting can go wrong:
    If uring instance A is closed before uring instance B, the pinned memory
    counters for uring instance B will be decremented, even though the pinned
    memory was originally accounted through uring instance A; so the MM of
    uring instance B can end up with negative locked memory.
    
    Cc: stable@vger.kernel.org
    Closes: https://lore.kernel.org/r/CAG48ez1zez4bdhmeGLEFxtbFADY4Czn3CV0u9d_TMcbvRA01bg@mail.gmail.com
    Fixes: 7cc2a6eadcd7 ("io_uring: add IORING_REGISTER_COPY_BUFFERS method")
    Signed-off-by: Jann Horn <jannh@google.com>
    Link: https://lore.kernel.org/r/20250114-uring-check-accounting-v1-1-42e4145aa743@google.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    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:   Sat Dec 28 12:55:20 2024 -0500

    libfs: Replace simple_offset end-of-directory detection
    
    commit 68a3a65003145644efcbb651e91db249ccd96281 upstream.
    
    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>
    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:   Sat Dec 28 12:55:17 2024 -0500

    libfs: Return ENOSPC when the directory offset range is exhausted
    
    commit 903dc9c43a155e0893280c7472d4a9a3a83d75a6 upstream.
    
    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>
    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:   Sat Dec 28 12:55:21 2024 -0500

    libfs: Use d_children list to iterate simple_offset directories
    
    commit b9b588f22a0c049a14885399e27625635ae6ef91 upstream.
    
    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>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Linux: Linux 6.13.1 [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sat Feb 1 17:21:26 2025 +0100

    Linux 6.13.1
    
    Link: https://lore.kernel.org/r/20250130133456.914329400@linuxfoundation.org
    Tested-by: Ronald Warsow <rwarsow@gmx.de>
    Tested-by: Luna Jernberg <droidbittin@gmail.com>
    Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Christian Heusel <christian@heusel.eu>
    Tested-by: Ron Economos <re@w6rz.net>
    Tested-by: Mark Brown <broonie@kernel.org>
    Tested-by: Justin M. Forbes <jforbes@fedoraproject.org>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: kernelci.org bot <bot@kernelci.org>
    Tested-by: Kexy Biscuit <kexybiscuit@aosc.io>
    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>

 
pm: cpupower: Makefile: Fix cross compilation [+ + +]
Author: Peng Fan <peng.fan@nxp.com>
Date:   Fri Nov 29 09:20:05 2024 +0800

    pm: cpupower: Makefile: Fix cross compilation
    
    commit 3075476a7af666de3ec10b4f35d8e62db8fd5b6d upstream.
    
    After commit f79473ed9220 ("pm: cpupower: Makefile: Allow overriding
    cross-compiling env params") we would fail to cross compile cpupower in
    buildroot which uses the recipe at [1] where only the CROSS variable is
    being set.
    
    The issue here is the use of the lazy evaluation for all variables: CC,
    LD, AR, STRIP, RANLIB, rather than just CROSS.
    
    [1]:
    https://git.buildroot.net/buildroot/tree/package/linux-tools/linux-tool-cpupower.mk.in
    
    Fixes: f79473ed9220 ("pm: cpupower: Makefile: Allow overriding cross-compiling env params")
    Reported-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Closes: https://lore.kernel.org/all/2bbabd2c-24ef-493c-a199-594e5dada3da@broadcom.com/
    Signed-off-by: Peng Fan <peng.fan@nxp.com>
    Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.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 "libfs: Add simple_offset_empty()" [+ + +]
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Sat Dec 28 12:55:18 2024 -0500

    Revert "libfs: Add simple_offset_empty()"
    
    commit d7bde4f27ceef3dc6d72010a20d4da23db835a32 upstream.
    
    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>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Revert "libfs: fix infinite directory reads for offset dir" [+ + +]
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Sat Dec 28 12:55:19 2024 -0500

    Revert "libfs: fix infinite directory reads for offset dir"
    
    commit b662d858131da9a8a14e68661656989b14dbf113 upstream.
    
    The current directory offset allocator (based on mtree_alloc_cyclic)
    stores the next offset value to return in octx->next_offset. This
    mechanism typically returns values that increase monotonically over
    time. Eventually, though, the newly allocated offset value wraps
    back to a low number (say, 2) which is smaller than other already-
    allocated offset values.
    
    Yu Kuai <yukuai3@huawei.com> reports that, after commit 64a7ce76fb90
    ("libfs: fix infinite directory reads for offset dir"), if a
    directory's offset allocator wraps, existing entries are no longer
    visible via readdir/getdents because offset_readdir() stops listing
    entries once an entry's offset is larger than octx->next_offset.
    These entries vanish persistently -- they can be looked up, but will
    never again appear in readdir(3) output.
    
    The reason for this is that the commit treats directory offsets as
    monotonically increasing integer values rather than opaque cookies,
    and introduces this comparison:
    
            if (dentry2offset(dentry) >= last_index) {
    
    On 64-bit platforms, the directory offset value upper bound is
    2^63 - 1. Directory offsets will monotonically increase for millions
    of years without wrapping.
    
    On 32-bit platforms, however, LONG_MAX is 2^31 - 1. The allocator
    can wrap after only a few weeks (at worst).
    
    Revert commit 64a7ce76fb90 ("libfs: fix infinite directory reads for
    offset dir") to prepare for a fix that can work properly on 32-bit
    systems and might apply to recent LTS kernels where shmem employs
    the simple_offset mechanism.
    
    Reported-by: Yu Kuai <yukuai3@huawei.com>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Link: https://lore.kernel.org/r/20241228175522.1854234-4-cel@kernel.org
    Reviewed-by: Yang Erkun <yangerkun@huawei.com>
    Signed-off-by: Christian Brauner <brauner@kernel.org>
    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: 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>

 
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>

 
wifi: rtl8xxxu: add more missing rtl8192cu USB IDs [+ + +]
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Thu Nov 7 15:08:33 2024 +0100

    wifi: rtl8xxxu: add more missing rtl8192cu USB IDs
    
    commit 31be3175bd7be89e39c82b3973c9d4ff55a17583 upstream.
    
    The rtl8xxxu has all the rtl8192cu USB IDs from rtlwifi/rtl8192cu/sw.c
    except for the following 10, add these to the untested section so they
    can be used with the rtl8xxxu as the rtl8192cu are well supported.
    
    This fixes these wifi modules not working on distributions which have
    disabled CONFIG_RTL8192CU replacing it with CONFIG_RTL8XXXU_UNTESTED,
    like Fedora.
    
    Closes: https://bugzilla.redhat.com/show_bug.cgi?id=2321540
    Cc: stable@vger.kernel.org
    Cc: Peter Robinson <pbrobinson@gmail.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Reviewed-by: Peter Robinson <pbrobinson@gmail.com>
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Link: https://patch.msgid.link/20241107140833.274986-1-hdegoede@redhat.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>