Changelog in Linux kernel 6.6.111

 
ALSA: usb-audio: fix race condition to UAF in snd_usbmidi_free [+ + +]
Author: Jeongjun Park <aha310510@gmail.com>
Date:   Sun Sep 28 02:39:24 2025 +0900

    ALSA: usb-audio: fix race condition to UAF in snd_usbmidi_free
    
    commit 9f2c0ac1423d5f267e7f1d1940780fc764b0fee3 upstream.
    
    The previous commit 0718a78f6a9f ("ALSA: usb-audio: Kill timer properly at
    removal") patched a UAF issue caused by the error timer.
    
    However, because the error timer kill added in this patch occurs after the
    endpoint delete, a race condition to UAF still occurs, albeit rarely.
    
    Additionally, since kill-cleanup for urb is also missing, freed memory can
    be accessed in interrupt context related to urb, which can cause UAF.
    
    Therefore, to prevent this, error timer and urb must be killed before
    freeing the heap memory.
    
    Cc: <stable@vger.kernel.org>
    Reported-by: syzbot+f02665daa2abeef4a947@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=f02665daa2abeef4a947
    Fixes: 0718a78f6a9f ("ALSA: usb-audio: Kill timer properly at removal")
    Signed-off-by: Jeongjun Park <aha310510@gmail.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

ALSA: usb-audio: Kill timer properly at removal [+ + +]
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon May 19 23:20:30 2025 +0200

    ALSA: usb-audio: Kill timer properly at removal
    
    commit 0718a78f6a9f04b88d0dc9616cc216b31c5f3cf1 upstream.
    
    The USB-audio MIDI code initializes the timer, but in a rare case, the
    driver might be freed without the disconnect call.  This leaves the
    timer in an active state while the assigned object is released via
    snd_usbmidi_free(), which ends up with a kernel warning when the debug
    configuration is enabled, as spotted by fuzzer.
    
    For avoiding the problem, put timer_shutdown_sync() at
    snd_usbmidi_free(), so that the timer can be killed properly.
    While we're at it, replace the existing timer_delete_sync() at the
    disconnect callback with timer_shutdown_sync(), too.
    
    Reported-by: syzbot+d8f72178ab6783a7daea@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/681c70d7.050a0220.a19a9.00c6.GAE@google.com
    Cc: <stable@vger.kernel.org>
    Link: https://patch.msgid.link/20250519212031.14436-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    [ del_timer vs timer_delete differences ]
    Signed-off-by: Jeongjun Park <aha310510@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
ASoC: amd: acp: Adjust pdm gain value [+ + +]
Author: Venkata Prasad Potturu <venkataprasad.potturu@amd.com>
Date:   Thu Aug 21 11:15:47 2025 +0530

    ASoC: amd: acp: Adjust pdm gain value
    
    [ Upstream commit f1d0260362d72f9f454dc1f9db2eeb80cb801f28 ]
    
    Set pdm gain value by setting PDM_MISC_CTRL_MASK value.
    To avoid low pdm gain value.
    
    Signed-off-by: Venkata Prasad Potturu <venkataprasad.potturu@amd.com>
    Reviewed-by: Mario Limonciello (AMD) <superm1@kernel.org>
    Link: https://patch.msgid.link/20250821054606.1279178-1-venkataprasad.potturu@amd.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

ASoC: rt5682s: Adjust SAR ADC button mode to fix noise issue [+ + +]
Author: Jack Yu <jack.yu@realtek.com>
Date:   Wed Sep 17 08:11:43 2025 +0000

    ASoC: rt5682s: Adjust SAR ADC button mode to fix noise issue
    
    [ Upstream commit 1dd28fd86c3fa4e395031dd6f2ba920242107010 ]
    
    Adjust register settings for SAR adc button detection mode
    to fix noise issue in headset.
    
    Signed-off-by: Jack Yu <jack.yu@realtek.com>
    Link: https://patch.msgid.link/766cd1d2dd7a403ba65bb4cc44845f71@realtek.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
btrfs: ref-verify: handle damaged extent root tree [+ + +]
Author: David Sterba <dsterba@suse.com>
Date:   Mon Sep 15 08:37:47 2025 +0200

    btrfs: ref-verify: handle damaged extent root tree
    
    [ Upstream commit ed4e6b5d644c4dd2bc2872ffec036b7da0ec2e27 ]
    
    Syzbot hits a problem with enabled ref-verify, ignorebadroots and a
    fuzzed/damaged extent tree. There's no fallback option like in other
    places that can deal with it so disable the whole ref-verify as it is
    just a debugging feature.
    
    Reported-by: syzbot+9c3e0cdfbfe351b0bc0e@syzkaller.appspotmail.com
    Link: https://lore.kernel.org/all/0000000000001b6052062139be1c@google.com/
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
can: hi311x: fix null pointer dereference when resuming from sleep before interface was enabled [+ + +]
Author: Chen Yufeng <chenyufeng@iie.ac.cn>
Date:   Thu Sep 11 23:08:20 2025 +0800

    can: hi311x: fix null pointer dereference when resuming from sleep before interface was enabled
    
    [ Upstream commit 6b696808472197b77b888f50bc789a3bae077743 ]
    
    This issue is similar to the vulnerability in the `mcp251x` driver,
    which was fixed in commit 03c427147b2d ("can: mcp251x: fix resume from
    sleep before interface was brought up").
    
    In the `hi311x` driver, when the device resumes from sleep, the driver
    schedules `priv->restart_work`. However, if the network interface was
    not previously enabled, the `priv->wq` (workqueue) is not allocated and
    initialized, leading to a null pointer dereference.
    
    To fix this, we move the allocation and initialization of the workqueue
    from the `hi3110_open` function to the `hi3110_can_probe` function.
    This ensures that the workqueue is properly initialized before it is
    used during device resume. And added logic to destroy the workqueue
    in the error handling paths of `hi3110_can_probe` and in the
    `hi3110_can_remove` function to prevent resource leaks.
    
    Signed-off-by: Chen Yufeng <chenyufeng@iie.ac.cn>
    Link: https://patch.msgid.link/20250911150820.250-1-chenyufeng@iie.ac.cn
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

can: rcar_canfd: Fix controller mode setting [+ + +]
Author: Duy Nguyen <duy.nguyen.rh@renesas.com>
Date:   Thu Sep 18 07:03:45 2025 +0000

    can: rcar_canfd: Fix controller mode setting
    
    [ Upstream commit 5cff263606a10102a0ea19ff579eaa18fd5577ad ]
    
    Driver configures register to choose controller mode before
    setting all channels to reset mode leading to failure.
    The patch corrects operation of mode setting.
    
    Signed-off-by: Duy Nguyen <duy.nguyen.rh@renesas.com>
    Signed-off-by: Tranh Ha <tranh.ha.xb@renesas.com>
    Link: https://patch.msgid.link/TYWPR01MB87434739F83E27EDCD23DF44B416A@TYWPR01MB8743.jpnprd01.prod.outlook.com
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
crypto: rng - Ensure set_ent is always present [+ + +]
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date:   Thu Oct 2 17:45:39 2025 +0800

    crypto: rng - Ensure set_ent is always present
    
    commit c0d36727bf39bb16ef0a67ed608e279535ebf0da upstream.
    
    Ensure that set_ent is always set since only drbg provides it.
    
    Fixes: 77ebdabe8de7 ("crypto: af_alg - add extra parameters for DRBG interface")
    Reported-by: Yiqi Sun <sunyiqixm@gmail.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
dm-integrity: limit MAX_TAG_SIZE to 255 [+ + +]
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Mon Sep 8 15:52:02 2025 +0200

    dm-integrity: limit MAX_TAG_SIZE to 255
    
    [ Upstream commit 77b8e6fbf9848d651f5cb7508f18ad0971f3ffdb ]
    
    MAX_TAG_SIZE was 0x1a8 and it may be truncated in the "bi->metadata_size
    = ic->tag_size" assignment. We need to limit it to 255.
    
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
driver core/PM: Set power.no_callbacks along with power.no_pm [+ + +]
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Thu Aug 28 12:59:24 2025 +0200

    driver core/PM: Set power.no_callbacks along with power.no_pm
    
    commit c2ce2453413d429e302659abc5ace634e873f6f5 upstream.
    
    Devices with power.no_pm set are not expected to need any power
    management at all, so modify device_set_pm_not_required() to set
    power.no_callbacks for them too in case runtime PM will be enabled
    for any of them (which in principle may be done for convenience if
    such a device participates in a dependency chain).
    
    Since device_set_pm_not_required() must be called before device_add()
    or it would not have any effect, it can update power.no_callbacks
    without locking, unlike pm_runtime_no_callbacks() that can be called
    after registering the target device.
    
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Cc: stable <stable@kernel.org>
    Reviewed-by: Sudeep Holla <sudeep.holla@arm.com>
    Link: https://lore.kernel.org/r/1950054.tdWV9SEqCh@rafael.j.wysocki
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
hid: fix I2C read buffer overflow in raw_event() for mcp2221 [+ + +]
Author: Arnaud Lecomte <contact@arnaud-lcm.com>
Date:   Sat Jul 26 23:09:31 2025 +0100

    hid: fix I2C read buffer overflow in raw_event() for mcp2221
    
    commit b56cc41a3ae7323aa3c6165f93c32e020538b6d2 upstream.
    
    As reported by syzbot, mcp2221_raw_event lacked
    validation of incoming I2C read data sizes, risking buffer
    overflows in mcp->rxbuf during multi-part transfers.
    As highlighted in the DS20005565B spec, p44, we have:
    "The number of read-back data bytes to follow in this packet:
    from 0 to a maximum of 60 bytes of read-back bytes."
    This patch enforces we don't exceed this limit.
    
    Reported-by: syzbot+52c1a7d3e5b361ccd346@syzkaller.appspotmail.com
    Closes: https://syzkaller.appspot.com/bug?extid=52c1a7d3e5b361ccd346
    Tested-by: syzbot+52c1a7d3e5b361ccd346@syzkaller.appspotmail.com
    Signed-off-by: Arnaud Lecomte <contact@arnaud-lcm.com>
    Link: https://patch.msgid.link/20250726220931.7126-1-contact@arnaud-lcm.com
    Signed-off-by: Benjamin Tissoires <bentiss@kernel.org>
    Signed-off-by: Romain Sioen <romain.sioen@microchip.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
KVM: arm64: Fix softirq masking in FPSIMD register saving sequence [+ + +]
Author: Will Deacon <will@kernel.org>
Date:   Fri Oct 3 19:40:54 2025 +0100

    KVM: arm64: Fix softirq masking in FPSIMD register saving sequence
    
    Stable commit 28b82be094e2 ("KVM: arm64: Fix kernel BUG() due to bad
    backport of FPSIMD/SVE/SME fix") fixed a kernel BUG() caused by a bad
    backport of upstream commit fbc7e61195e2 ("KVM: arm64: Unconditionally
    save+flush host FPSIMD/SVE/SME state") by ensuring that softirqs are
    disabled/enabled across the fpsimd register save operation.
    
    Unfortunately, although this fixes the original issue, it can now lead
    to deadlock when re-enabling softirqs causes pending softirqs to be
    handled with locks already held:
    
     | BUG: spinlock recursion on CPU#7, CPU 3/KVM/57616
     |  lock: 0xffff3045ef850240, .magic: dead4ead, .owner: CPU 3/KVM/57616, .owner_cpu: 7
     | CPU: 7 PID: 57616 Comm: CPU 3/KVM Tainted: G           O       6.1.152 #1
     | Hardware name: SoftIron SoftIron Platform Mainboard/SoftIron Platform Mainboard, BIOS 1.31 May 11 2023
     | Call trace:
     |  dump_backtrace+0xe4/0x110
     |  show_stack+0x20/0x30
     |  dump_stack_lvl+0x6c/0x88
     |  dump_stack+0x18/0x34
     |  spin_dump+0x98/0xac
     |  do_raw_spin_lock+0x70/0x128
     |  _raw_spin_lock+0x18/0x28
     |  raw_spin_rq_lock_nested+0x18/0x28
     |  update_blocked_averages+0x70/0x550
     |  run_rebalance_domains+0x50/0x70
     |  handle_softirqs+0x198/0x328
     |  __do_softirq+0x1c/0x28
     |  ____do_softirq+0x18/0x28
     |  call_on_irq_stack+0x30/0x48
     |  do_softirq_own_stack+0x24/0x30
     |  do_softirq+0x74/0x90
     |  __local_bh_enable_ip+0x64/0x80
     |  fpsimd_save_and_flush_cpu_state+0x5c/0x68
     |  kvm_arch_vcpu_put_fp+0x4c/0x88
     |  kvm_arch_vcpu_put+0x28/0x88
     |  kvm_sched_out+0x38/0x58
     |  __schedule+0x55c/0x6c8
     |  schedule+0x60/0xa8
    
    Take a tiny step towards the upstream fix in 9b19700e623f ("arm64:
    fpsimd: Drop unneeded 'busy' flag") by additionally disabling hardirqs
    while saving the fpsimd registers.
    
    Cc: Ard Biesheuvel <ardb@kernel.org>
    Cc: Lee Jones <lee@kernel.org>
    Cc: Sasha Levin <sashal@kernel.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: <stable@vger.kernel.org> # 6.6.y
    Fixes: 28b82be094e2 ("KVM: arm64: Fix kernel BUG() due to bad backport of FPSIMD/SVE/SME fix")
    Reported-by: Kenneth Van Alstyne <kvanals@kvanals.org>
    Link: https://lore.kernel.org/r/010001999bae0958-4d80d25d-8dda-4006-a6b9-798f3e774f6c-000000@email.amazonses.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Acked-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
KVM: x86: Don't (re)check L1 intercepts when completing userspace I/O [+ + +]
Author: Sean Christopherson <seanjc@google.com>
Date:   Tue Jul 15 12:06:38 2025 -0700

    KVM: x86: Don't (re)check L1 intercepts when completing userspace I/O
    
    commit e750f85391286a4c8100275516973324b621a269 upstream.
    
    When completing emulation of instruction that generated a userspace exit
    for I/O, don't recheck L1 intercepts as KVM has already finished that
    phase of instruction execution, i.e. has already committed to allowing L2
    to perform I/O.  If L1 (or host userspace) modifies the I/O permission
    bitmaps during the exit to userspace,  KVM will treat the access as being
    intercepted despite already having emulated the I/O access.
    
    Pivot on EMULTYPE_NO_DECODE to detect that KVM is completing emulation.
    Of the three users of EMULTYPE_NO_DECODE, only complete_emulated_io() (the
    intended "recipient") can reach the code in question.  gp_interception()'s
    use is mutually exclusive with is_guest_mode(), and
    complete_emulated_insn_gp() unconditionally pairs EMULTYPE_NO_DECODE with
    EMULTYPE_SKIP.
    
    The bad behavior was detected by a syzkaller program that toggles port I/O
    interception during the userspace I/O exit, ultimately resulting in a WARN
    on vcpu->arch.pio.count being non-zero due to KVM no completing emulation
    of the I/O instruction.
    
      WARNING: CPU: 23 PID: 1083 at arch/x86/kvm/x86.c:8039 emulator_pio_in_out+0x154/0x170 [kvm]
      Modules linked in: kvm_intel kvm irqbypass
      CPU: 23 UID: 1000 PID: 1083 Comm: repro Not tainted 6.16.0-rc5-c1610d2d66b1-next-vm #74 NONE
      Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015
      RIP: 0010:emulator_pio_in_out+0x154/0x170 [kvm]
      PKRU: 55555554
      Call Trace:
       <TASK>
       kvm_fast_pio+0xd6/0x1d0 [kvm]
       vmx_handle_exit+0x149/0x610 [kvm_intel]
       kvm_arch_vcpu_ioctl_run+0xda8/0x1ac0 [kvm]
       kvm_vcpu_ioctl+0x244/0x8c0 [kvm]
       __x64_sys_ioctl+0x8a/0xd0
       do_syscall_64+0x5d/0xc60
       entry_SYSCALL_64_after_hwframe+0x4b/0x53
       </TASK>
    
    Reported-by: syzbot+cc2032ba16cc2018ca25@syzkaller.appspotmail.com
    Closes: https://lore.kernel.org/all/68790db4.a00a0220.3af5df.0020.GAE@google.com
    Fixes: 8a76d7f25f8f ("KVM: x86: Add x86 callback for intercept check")
    Cc: stable@vger.kernel.org
    Cc: Jim Mattson <jmattson@google.com>
    Link: https://lore.kernel.org/r/20250715190638.1899116-1-seanjc@google.com
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
Linux: Linux 6.6.111 [+ + +]
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sun Oct 12 12:56:23 2025 +0200

    Linux 6.6.111
    
    Link: https://lore.kernel.org/r/20251010131330.355311487@linuxfoundation.org
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Mark Brown <broonie@kernel.org>
    Tested-by: Ron Economos <re@w6rz.net>
    Tested-by: Brett A C Sheffield <bacs@librecast.net>
    Tested-by: Peter Schneider <pschneider1968@googlemail.com>
    Tested-by: Miguel Ojeda <ojeda@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
media: i2c: tc358743: Fix use-after-free bugs caused by orphan timer in probe [+ + +]
Author: Duoming Zhou <duoming@zju.edu.cn>
Date:   Fri Oct 3 14:29:42 2025 -0400

    media: i2c: tc358743: Fix use-after-free bugs caused by orphan timer in probe
    
    [ Upstream commit 79d10f4f21a92e459b2276a77be62c59c1502c9d ]
    
    The state->timer is a cyclic timer that schedules work_i2c_poll and
    delayed_work_enable_hotplug, while rearming itself. Using timer_delete()
    fails to guarantee the timer isn't still running when destroyed, similarly
    cancel_delayed_work() cannot ensure delayed_work_enable_hotplug has
    terminated if already executing. During probe failure after timer
    initialization, these may continue running as orphans and reference the
    already-freed tc358743_state object through tc358743_irq_poll_timer.
    
    The following is the trace captured by KASAN.
    
    BUG: KASAN: slab-use-after-free in __run_timer_base.part.0+0x7d7/0x8c0
    Write of size 8 at addr ffff88800ded83c8 by task swapper/1/0
    ...
    Call Trace:
     <IRQ>
     dump_stack_lvl+0x55/0x70
     print_report+0xcf/0x610
     ? __pfx_sched_balance_find_src_group+0x10/0x10
     ? __run_timer_base.part.0+0x7d7/0x8c0
     kasan_report+0xb8/0xf0
     ? __run_timer_base.part.0+0x7d7/0x8c0
     __run_timer_base.part.0+0x7d7/0x8c0
     ? rcu_sched_clock_irq+0xb06/0x27d0
     ? __pfx___run_timer_base.part.0+0x10/0x10
     ? try_to_wake_up+0xb15/0x1960
     ? tmigr_update_events+0x280/0x740
     ? _raw_spin_lock_irq+0x80/0xe0
     ? __pfx__raw_spin_lock_irq+0x10/0x10
     tmigr_handle_remote_up+0x603/0x7e0
     ? __pfx_tmigr_handle_remote_up+0x10/0x10
     ? sched_balance_trigger+0x98/0x9f0
     ? sched_tick+0x221/0x5a0
     ? _raw_spin_lock_irq+0x80/0xe0
     ? __pfx__raw_spin_lock_irq+0x10/0x10
     ? tick_nohz_handler+0x339/0x440
     ? __pfx_tmigr_handle_remote_up+0x10/0x10
     __walk_groups.isra.0+0x42/0x150
     tmigr_handle_remote+0x1f4/0x2e0
     ? __pfx_tmigr_handle_remote+0x10/0x10
     ? ktime_get+0x60/0x140
     ? lapic_next_event+0x11/0x20
     ? clockevents_program_event+0x1d4/0x2a0
     ? hrtimer_interrupt+0x322/0x780
     handle_softirqs+0x16a/0x550
     irq_exit_rcu+0xaf/0xe0
     sysvec_apic_timer_interrupt+0x70/0x80
     </IRQ>
    ...
    
    Allocated by task 141:
     kasan_save_stack+0x24/0x50
     kasan_save_track+0x14/0x30
     __kasan_kmalloc+0x7f/0x90
     __kmalloc_node_track_caller_noprof+0x198/0x430
     devm_kmalloc+0x7b/0x1e0
     tc358743_probe+0xb7/0x610  i2c_device_probe+0x51d/0x880
     really_probe+0x1ca/0x5c0
     __driver_probe_device+0x248/0x310
     driver_probe_device+0x44/0x120
     __device_attach_driver+0x174/0x220
     bus_for_each_drv+0x100/0x190
     __device_attach+0x206/0x370
     bus_probe_device+0x123/0x170
     device_add+0xd25/0x1470
     i2c_new_client_device+0x7a0/0xcd0
     do_one_initcall+0x89/0x300
     do_init_module+0x29d/0x7f0
     load_module+0x4f48/0x69e0
     init_module_from_file+0xe4/0x150
     idempotent_init_module+0x320/0x670
     __x64_sys_finit_module+0xbd/0x120
     do_syscall_64+0xac/0x280
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    
    Freed by task 141:
     kasan_save_stack+0x24/0x50
     kasan_save_track+0x14/0x30
     kasan_save_free_info+0x3a/0x60
     __kasan_slab_free+0x3f/0x50
     kfree+0x137/0x370
     release_nodes+0xa4/0x100
     devres_release_group+0x1b2/0x380
     i2c_device_probe+0x694/0x880
     really_probe+0x1ca/0x5c0
     __driver_probe_device+0x248/0x310
     driver_probe_device+0x44/0x120
     __device_attach_driver+0x174/0x220
     bus_for_each_drv+0x100/0x190
     __device_attach+0x206/0x370
     bus_probe_device+0x123/0x170
     device_add+0xd25/0x1470
     i2c_new_client_device+0x7a0/0xcd0
     do_one_initcall+0x89/0x300
     do_init_module+0x29d/0x7f0
     load_module+0x4f48/0x69e0
     init_module_from_file+0xe4/0x150
     idempotent_init_module+0x320/0x670
     __x64_sys_finit_module+0xbd/0x120
     do_syscall_64+0xac/0x280
     entry_SYSCALL_64_after_hwframe+0x77/0x7f
    ...
    
    Replace timer_delete() with timer_delete_sync() and cancel_delayed_work()
    with cancel_delayed_work_sync() to ensure proper termination of timer and
    work items before resource cleanup.
    
    This bug was initially identified through static analysis. For reproduction
    and testing, I created a functional emulation of the tc358743 device via a
    kernel module and introduced faults through the debugfs interface.
    
    Fixes: 869f38ae07f7 ("media: i2c: tc358743: Fix crash in the probe error path when using polling")
    Fixes: d32d98642de6 ("[media] Driver for Toshiba TC358743 HDMI to CSI-2 bridge")
    Cc: stable@vger.kernel.org
    Signed-off-by: Duoming Zhou <duoming@zju.edu.cn>
    Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
    [ replaced del_timer() instead of timer_delete() ]
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: tuner: xc5000: Fix use-after-free in xc5000_release [+ + +]
Author: Duoming Zhou <duoming@zju.edu.cn>
Date:   Fri Oct 3 15:32:28 2025 -0400

    media: tuner: xc5000: Fix use-after-free in xc5000_release
    
    [ Upstream commit 40b7a19f321e65789612ebaca966472055dab48c ]
    
    The original code uses cancel_delayed_work() in xc5000_release(), which
    does not guarantee that the delayed work item timer_sleep has fully
    completed if it was already running. This leads to use-after-free scenarios
    where xc5000_release() may free the xc5000_priv while timer_sleep is still
    active and attempts to dereference the xc5000_priv.
    
    A typical race condition is illustrated below:
    
    CPU 0 (release thread)                 | CPU 1 (delayed work callback)
    xc5000_release()                       | xc5000_do_timer_sleep()
      cancel_delayed_work()                |
      hybrid_tuner_release_state(priv)     |
        kfree(priv)                        |
                                           |   priv = container_of() // UAF
    
    Replace cancel_delayed_work() with cancel_delayed_work_sync() to ensure
    that the timer_sleep is properly canceled before the xc5000_priv memory
    is deallocated.
    
    A deadlock concern was considered: xc5000_release() is called in a process
    context and is not holding any locks that the timer_sleep work item might
    also need. Therefore, the use of the _sync() variant is safe here.
    
    This bug was initially identified through static analysis.
    
    Fixes: f7a27ff1fb77 ("[media] xc5000: delay tuner sleep to 5 seconds")
    Cc: stable@vger.kernel.org
    Signed-off-by: Duoming Zhou <duoming@zju.edu.cn>
    Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
    [hverkuil: fix typo in Subject: tunner -> tuner]
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

media: tunner: xc5000: Refactor firmware load [+ + +]
Author: Ricardo Ribalda <ribalda@chromium.org>
Date:   Fri Oct 3 15:32:27 2025 -0400

    media: tunner: xc5000: Refactor firmware load
    
    [ Upstream commit 8e1f5da59dd4a1966f859639860b803a7e8b8bfb ]
    
    Make sure the firmware is released when we leave
    xc_load_fw_and_init_tuner()
    
    This change makes smatch happy:
    drivers/media/tuners/xc5000.c:1213 xc_load_fw_and_init_tuner() warn: 'fw' from request_firmware() not released on lines: 1213.
    
    Cc: Shuah Khan <shuah.kh@samsung.com>
    Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Stable-dep-of: 40b7a19f321e ("media: tuner: xc5000: Fix use-after-free in xc5000_release")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
net/9p: fix double req put in p9_fd_cancelled [+ + +]
Author: Nalivayko Sergey <Sergey.Nalivayko@kaspersky.com>
Date:   Tue Jul 15 18:48:15 2025 +0300

    net/9p: fix double req put in p9_fd_cancelled
    
    commit 674b56aa57f9379854cb6798c3bbcef7e7b51ab7 upstream.
    
    Syzkaller reports a KASAN issue as below:
    
    general protection fault, probably for non-canonical address 0xfbd59c0000000021: 0000 [#1] PREEMPT SMP KASAN NOPTI
    KASAN: maybe wild-memory-access in range [0xdead000000000108-0xdead00000000010f]
    CPU: 0 PID: 5083 Comm: syz-executor.2 Not tainted 6.1.134-syzkaller-00037-g855bd1d7d838 #0
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.12.0-1 04/01/2014
    RIP: 0010:__list_del include/linux/list.h:114 [inline]
    RIP: 0010:__list_del_entry include/linux/list.h:137 [inline]
    RIP: 0010:list_del include/linux/list.h:148 [inline]
    RIP: 0010:p9_fd_cancelled+0xe9/0x200 net/9p/trans_fd.c:734
    
    Call Trace:
     <TASK>
     p9_client_flush+0x351/0x440 net/9p/client.c:614
     p9_client_rpc+0xb6b/0xc70 net/9p/client.c:734
     p9_client_version net/9p/client.c:920 [inline]
     p9_client_create+0xb51/0x1240 net/9p/client.c:1027
     v9fs_session_init+0x1f0/0x18f0 fs/9p/v9fs.c:408
     v9fs_mount+0xba/0xcb0 fs/9p/vfs_super.c:126
     legacy_get_tree+0x108/0x220 fs/fs_context.c:632
     vfs_get_tree+0x8e/0x300 fs/super.c:1573
     do_new_mount fs/namespace.c:3056 [inline]
     path_mount+0x6a6/0x1e90 fs/namespace.c:3386
     do_mount fs/namespace.c:3399 [inline]
     __do_sys_mount fs/namespace.c:3607 [inline]
     __se_sys_mount fs/namespace.c:3584 [inline]
     __x64_sys_mount+0x283/0x300 fs/namespace.c:3584
     do_syscall_x64 arch/x86/entry/common.c:51 [inline]
     do_syscall_64+0x35/0x80 arch/x86/entry/common.c:81
     entry_SYSCALL_64_after_hwframe+0x6e/0xd8
    
    This happens because of a race condition between:
    
    - The 9p client sending an invalid flush request and later cleaning it up;
    - The 9p client in p9_read_work() canceled all pending requests.
    
          Thread 1                              Thread 2
        ...
        p9_client_create()
        ...
        p9_fd_create()
        ...
        p9_conn_create()
        ...
        // start Thread 2
        INIT_WORK(&m->rq, p9_read_work);
                                            p9_read_work()
        ...
        p9_client_rpc()
        ...
                                            ...
                                            p9_conn_cancel()
                                            ...
                                            spin_lock(&m->req_lock);
        ...
        p9_fd_cancelled()
        ...
                                            ...
                                            spin_unlock(&m->req_lock);
                                            // status rewrite
                                            p9_client_cb(m->client, req, REQ_STATUS_ERROR)
                                            // first remove
                                            list_del(&req->req_list);
                                            ...
    
        spin_lock(&m->req_lock)
        ...
        // second remove
        list_del(&req->req_list);
        spin_unlock(&m->req_lock)
      ...
    
    Commit 74d6a5d56629 ("9p/trans_fd: Fix concurrency del of req_list in
    p9_fd_cancelled/p9_read_work") fixes a concurrency issue in the 9p filesystem
    client where the req_list could be deleted simultaneously by both
    p9_read_work and p9_fd_cancelled functions, but for the case where req->status
    equals REQ_STATUS_RCVD.
    
    Update the check for req->status in p9_fd_cancelled to skip processing not
    just received requests, but anything that is not SENT, as whatever
    changed the state from SENT also removed the request from its list.
    
    Found by Linux Verification Center (linuxtesting.org) with Syzkaller.
    
    Fixes: afd8d6541155 ("9P: Add cancelled() to the transport functions.")
    Cc: stable@vger.kernel.org
    Signed-off-by: Nalivayko Sergey <Sergey.Nalivayko@kaspersky.com>
    Message-ID: <20250715154815.3501030-1-Sergey.Nalivayko@kaspersky.com>
    [updated the check from status == RECV || status == ERROR to status != SENT]
    Signed-off-by: Dominique Martinet <asmadeus@codewreck.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
perf subcmd: avoid crash in exclude_cmds when excludes is empty [+ + +]
Author: hupu <hupu.gm@gmail.com>
Date:   Wed Sep 10 16:16:55 2025 +0800

    perf subcmd: avoid crash in exclude_cmds when excludes is empty
    
    [ Upstream commit a5edf3550f4260504b7e0ab3d40d13ffe924b773 ]
    
    When cross-compiling the perf tool for ARM64, `perf help` may crash
    with the following assertion failure:
    
      help.c:122: exclude_cmds: Assertion `cmds->names[ci] == NULL' failed.
    
    This happens when the perf binary is not named exactly "perf" or when
    multiple "perf-*" binaries exist in the same directory. In such cases,
    the `excludes` command list can be empty, which leads to the final
    assertion in exclude_cmds() being triggered.
    
    Add a simple guard at the beginning of exclude_cmds() to return early
    if excludes->cnt is zero, preventing the crash.
    
    Signed-off-by: hupu <hupu.gm@gmail.com>
    Reported-by: Guilherme Amadio <amadio@gentoo.org>
    Reviewed-by: Namhyung Kim <namhyung@kernel.org>
    Link: https://lore.kernel.org/r/20250909094953.106706-1-amadio@gentoo.org
    Signed-off-by: Namhyung Kim <namhyung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
platform/x86/amd/pmc: Add MECHREVO Yilong15Pro to spurious_8042 list [+ + +]
Author: aprilgrimoire <aprilgrimoire@proton.me>
Date:   Sun Sep 7 09:06:11 2025 +0000

    platform/x86/amd/pmc: Add MECHREVO Yilong15Pro to spurious_8042 list
    
    [ Upstream commit 8822e8be86d40410ddd2ac8ff44f3050c9ecf9c6 ]
    
    The firmware of Mechrevo Yilong15Pro emits a spurious keyboard interrupt on
    events including closing the lid. When a user closes the lid on an already
    suspended system this causes the system to wake up.
    Add Mechrevo Yilong15Pro Series (GM5HG7A) to the list of quirk
    spurious_8042 to work around this issue.
    
    Link: https://lore.kernel.org/linux-pm/6ww4uu6Gl4F5n6VY5dl1ufASfKzs4DhMxAN8BuqUpCoqU3PQukVSVSBCl_lKIzkQ-S8kt1acPd58eyolhkWN32lMLFj4ViI0Tdu2jwhnYZ8=@proton.me/
    Signed-off-by: April Grimoire <aprilgrimoire@proton.me>
    Reviewed-by: Mario Limonciello (AMD) <superm1@kernel.org>
    Link: https://patch.msgid.link/IvSc_IN5Pa0wRXElTk_fEl-cTpMZxg6TCQk_7aRUkTd9vJUp_ZeC0NdXZ0z6Tn7B-XiqqqQvCH65lq6FqhuECBMEYWcHQmWm1Jo7Br8kpeg=@proton.me
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

platform/x86/amd/pmc: Add Stellaris Slim Gen6 AMD to spurious 8042 quirks list [+ + +]
Author: Christoffer Sandberg <cs@tuxedo.de>
Date:   Tue Sep 16 18:46:49 2025 +0200

    platform/x86/amd/pmc: Add Stellaris Slim Gen6 AMD to spurious 8042 quirks list
    
    [ Upstream commit 12a3dd4d2cd9232d4e4df3b9a5b3d745db559941 ]
    
    Prevents instant wakeup ~1s after suspend
    
    Signed-off-by: Christoffer Sandberg <cs@tuxedo.de>
    Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
    Link: https://patch.msgid.link/20250916164700.32896-1-wse@tuxedocomputers.com
    Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 
riscv: mm: Do not restrict mmap address based on hint [+ + +]
Author: Charlie Jenkins <charlie@rivosinc.com>
Date:   Mon Aug 26 09:36:47 2024 -0700

    riscv: mm: Do not restrict mmap address based on hint
    
    commit 2116988d5372aec51f8c4fb85bf8e305ecda47a0 upstream.
    
    The hint address should not forcefully restrict the addresses returned
    by mmap as this causes mmap to report ENOMEM when there is memory still
    available.
    
    Signed-off-by: Charlie Jenkins <charlie@rivosinc.com>
    Fixes: b5b4287accd7 ("riscv: mm: Use hint address in mmap if available")
    Fixes: add2cc6b6515 ("RISC-V: mm: Restrict address space for sv39,sv48,sv57")
    Closes: https://lore.kernel.org/linux-kernel/ZbxTNjQPFKBatMq+@ghost/T/#mccb1890466bf5a488c9ce7441e57e42271895765
    Link: https://lore.kernel.org/r/20240826-riscv_mmap-v1-3-cd8962afe47f@rivosinc.com
    Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
    [ Adjust removed lines ]
    Signed-off-by: Vivian Wang <wangruikang@iscas.ac.cn>
    Tested-by: Han Gao <rabenda.cn@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

riscv: mm: Use hint address in mmap if available [+ + +]
Author: Charlie Jenkins <charlie@rivosinc.com>
Date:   Tue Jan 30 17:07:00 2024 -0800

    riscv: mm: Use hint address in mmap if available
    
    commit b5b4287accd702f562a49a60b10dbfaf7d40270f upstream.
    
    On riscv it is guaranteed that the address returned by mmap is less than
    the hint address. Allow mmap to return an address all the way up to
    addr, if provided, rather than just up to the lower address space.
    
    This provides a performance benefit as well, allowing mmap to exit after
    checking that the address is in range rather than searching for a valid
    address.
    
    It is possible to provide an address that uses at most the same number
    of bits, however it is significantly more computationally expensive to
    provide that number rather than setting the max to be the hint address.
    There is the instruction clz/clzw in Zbb that returns the highest set bit
    which could be used to performantly implement this, but it would still
    be slower than the current implementation. At worst case, half of the
    address would not be able to be allocated when a hint address is
    provided.
    
    Signed-off-by: Charlie Jenkins <charlie@rivosinc.com>
    Link: https://lore.kernel.org/r/20240130-use_mmap_hint_address-v3-1-8a655cfa8bcb@rivosinc.com
    Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
    [ Adjust TASK_SIZE64 -> TASK_SIZE in moved lines ]
    Signed-off-by: Vivian Wang <wangruikang@iscas.ac.cn>
    Tested-by: Han Gao <rabenda.cn@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
serial: stm32: allow selecting console when the driver is module [+ + +]
Author: Raphael Gallais-Pou <raphael.gallais-pou@foss.st.com>
Date:   Fri Aug 22 16:19:23 2025 +0200

    serial: stm32: allow selecting console when the driver is module
    
    commit cc4d900d0d6d8dd5c41832a93ff3cfa629a78f9a upstream.
    
    Console can be enabled on the UART compile as module.
    Change dependency to allow console mode when the driver is built as module.
    
    Fixes: 48a6092fb41fa ("serial: stm32-usart: Add STM32 USART Driver")
    Cc: stable@vger.kernel.org
    Signed-off-by: Raphael Gallais-Pou <raphael.gallais-pou@foss.st.com>
    Link: https://lore.kernel.org/r/20250822141923.61133-1-raphael.gallais-pou@foss.st.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
staging: axis-fifo: fix maximum TX packet length check [+ + +]
Author: Ovidiu Panait <ovidiu.panait.oss@gmail.com>
Date:   Sun Aug 17 20:13:50 2025 +0300

    staging: axis-fifo: fix maximum TX packet length check
    
    commit 52ff2b840bc723f3be1f096f8017c78e0515858c upstream.
    
    Since commit 2ca34b508774 ("staging: axis-fifo: Correct handling of
    tx_fifo_depth for size validation"), write() operations with packets
    larger than 'tx_fifo_depth - 4' words are no longer rejected with -EINVAL.
    
    Fortunately, the packets are not actually getting transmitted to hardware,
    otherwise they would be raising a 'Transmit Packet Overrun Error'
    interrupt, which requires a reset of the TX circuit to recover from.
    
    Instead, the request times out inside wait_event_interruptible_timeout()
    and always returns -EAGAIN, since the wake up condition can never be true
    for these packets. But still, they unnecessarily block other tasks from
    writing to the FIFO and the EAGAIN return code signals userspace to retry
    the write() call, even though it will always fail and time out.
    
    According to the AXI4-Stream FIFO reference manual (PG080), the maximum
    valid packet length is 'tx_fifo_depth - 4' words, so attempting to send
    larger packets is invalid and should not be happening in the first place:
    
    > The maximum packet that can be transmitted is limited by the size of
    > the FIFO, which is (C_TX_FIFO_DEPTH–4)*(data interface width/8) bytes.
    
    Therefore, bring back the old behavior and outright reject packets larger
    than 'tx_fifo_depth - 4' with -EINVAL. Add a comment to explain why the
    check is necessary. The dev_err() message was removed to avoid cluttering
    the dmesg log if an invalid packet is received from userspace.
    
    Fixes: 2ca34b508774 ("staging: axis-fifo: Correct handling of tx_fifo_depth for size validation")
    Cc: stable@vger.kernel.org
    Signed-off-by: Ovidiu Panait <ovidiu.panait.oss@gmail.com>
    Link: https://lore.kernel.org/r/20250817171350.872105-1-ovidiu.panait.oss@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

staging: axis-fifo: fix TX handling on copy_from_user() failure [+ + +]
Author: Ovidiu Panait <ovidiu.panait.oss@gmail.com>
Date:   Fri Sep 12 13:13:21 2025 +0300

    staging: axis-fifo: fix TX handling on copy_from_user() failure
    
    commit 6d07bee10e4bdd043ec7152cbbb9deb27033c9e2 upstream.
    
    If copy_from_user() fails, write() currently returns -EFAULT, but any
    partially written data leaves the TX FIFO in an inconsistent state.
    Subsequent write() calls then fail with "transmit length mismatch"
    errors.
    
    Once partial data is written to the hardware FIFO, it cannot be removed
    without a TX reset. Commit c6e8d85fafa7 ("staging: axis-fifo: Remove
    hardware resets for user errors") removed a full FIFO reset for this case,
    which fixed a potential RX data loss, but introduced this TX issue.
    
    Fix this by introducing a bounce buffer: copy the full packet from
    userspace first, and write to the hardware FIFO only if the copy
    was successful.
    
    Fixes: c6e8d85fafa7 ("staging: axis-fifo: Remove hardware resets for user errors")
    Cc: stable@vger.kernel.org
    Signed-off-by: Ovidiu Panait <ovidiu.panait.oss@gmail.com>
    Link: https://lore.kernel.org/r/20250912101322.1282507-1-ovidiu.panait.oss@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

staging: axis-fifo: flush RX FIFO on read errors [+ + +]
Author: Ovidiu Panait <ovidiu.panait.oss@gmail.com>
Date:   Fri Sep 12 13:13:22 2025 +0300

    staging: axis-fifo: flush RX FIFO on read errors
    
    commit 82a051e2553b9e297cba82a975d9c538b882c79e upstream.
    
    Flush stale data from the RX FIFO in case of errors, to avoid reading
    old data when new packets arrive.
    
    Commit c6e8d85fafa7 ("staging: axis-fifo: Remove hardware resets for
    user errors") removed full FIFO resets from the read error paths, which
    fixed potential TX data losses, but introduced this RX issue.
    
    Fixes: c6e8d85fafa7 ("staging: axis-fifo: Remove hardware resets for user errors")
    Cc: stable@vger.kernel.org
    Signed-off-by: Ovidiu Panait <ovidiu.panait.oss@gmail.com>
    Link: https://lore.kernel.org/r/20250912101322.1282507-2-ovidiu.panait.oss@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
USB: serial: option: add SIMCom 8230C compositions [+ + +]
Author: Xiaowei Li <xiaowei.li@simcom.com>
Date:   Wed Sep 24 11:16:50 2025 +0800

    USB: serial: option: add SIMCom 8230C compositions
    
    commit 0e0ba0ecec3d6e819e0c2348331ff99afe2eb5d5 upstream.
    
    Add support for SIMCom 8230C which is based on Qualcomm SDX35 chip.
    
    USB Device Listings:
    
    0x9071: tty (DM) + tty (NMEA) + tty (AT) + rmnet (QMI mode) + adb
    T:  Bus=01 Lev=01 Prnt=01 Port=05 Cnt=02 Dev#= 10 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1e0e ProdID=9071 Rev= 5.15
    S:  Manufacturer=SIMCOM
    S:  Product=SDXBAAGHA-IDP _SN:D744C4C5
    S:  SerialNumber=0123456789ABCDEF
    C:* #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=500mA
    I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=84(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=50 Driver=qmi_wwan
    E:  Ad=86(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)
    E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    0x9078: tty (DM) + tty (NMEA) + tty (AT) + ECM + adb
    T:  Bus=01 Lev=01 Prnt=01 Port=05 Cnt=02 Dev#=  9 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=1e0e ProdID=9078 Rev= 5.15
    S:  Manufacturer=SIMCOM
    S:  Product=SDXBAAGHA-IDP _SN:D744C4C5
    S:  SerialNumber=0123456789ABCDEF
    C:* #Ifs= 6 Cfg#= 1 Atr=a0 MxPwr=500mA
    I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=84(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 3 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=06 Prot=00 Driver=cdc_ether
    E:  Ad=86(I) Atr=03(Int.) MxPS=  16 Ivl=32ms
    I:  If#= 4 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
    I:* If#= 4 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)
    E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    0x907b: RNDIS + tty (DM) + tty (NMEA) + tty (AT) + adb
    T:  Bus=01 Lev=01 Prnt=01 Port=05 Cnt=02 Dev#=  8 Spd=480  MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=1e0e ProdID=907b Rev= 5.15
    S:  Manufacturer=SIMCOM
    S:  Product=SDXBAAGHA-IDP _SN:D744C4C5
    S:  SerialNumber=0123456789ABCDEF
    C:* #Ifs= 6 Cfg#= 1 Atr=a0 MxPwr=500mA
    A:  FirstIf#= 0 IfCount= 2 Cls=ef(misc ) Sub=04 Prot=01
    I:* If#= 0 Alt= 0 #EPs= 1 Cls=ef(misc ) Sub=04 Prot=01 Driver=rndis_host
    E:  Ad=82(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=rndis_host
    E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
    E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
    E:  Ad=86(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
    E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    I:* If#= 5 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)
    E:  Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
    
    Signed-off-by: Xiaowei Li <xiaowei.li@simcom.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 
wifi: rtlwifi: rtl8192cu: Don't claim USB ID 07b8:8188 [+ + +]
Author: Bitterblue Smith <rtl8821cerfe2@gmail.com>
Date:   Mon Aug 11 18:32:55 2025 +0300

    wifi: rtlwifi: rtl8192cu: Don't claim USB ID 07b8:8188
    
    commit e798f2ac6040f46a04795d7de977341fa9aeabae upstream.
    
    This ID appears to be RTL8188SU, not RTL8188CU. This is the wrong driver
    for RTL8188SU. The r8712u driver from staging used to handle this ID.
    
    Closes: https://lore.kernel.org/linux-wireless/ee0acfef-a753-4f90-87df-15f8eaa9c3a8@gmx.de/
    Cc: stable@vger.kernel.org
    Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
    Acked-by: Ping-Ke Shih <pkshih@realtek.com>
    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Link: https://patch.msgid.link/2e5e2348-bdb3-44b2-92b2-0231dbf464b0@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>