Nixpkgs security tracker

Login with GitHub

Dismissed suggestions

These automatic suggestions were dismissed after initial triaging.

to select a suggestion for revision.

View:
Compact
Detailed
Dismissed
(max. allowed matches exceeded)
created 22 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
usb: misc: usbio: fix disconnect UAF in client teardown

In the Linux kernel, the following vulnerability has been resolved: usb: misc: usbio: fix disconnect UAF in client teardown usbio_disconnect() walks usbio->cli_list in reverse and uninitializes each auxiliary device. auxiliary_device_uninit() drops the device reference, and for an unbound child that can run usbio_auxdev_release() and free the containing struct usbio_client. list_for_each_entry_reverse() advances after the loop body by reading client->link.prev. If the current client is freed by auxiliary_device_uninit(), the iterator dereferences freed memory. Use list_for_each_entry_safe_reverse() so the previous client is cached before the body can drop the final reference. This preserves reverse teardown order while keeping the next iterator cursor independent of the current client's lifetime. Validation reproduced this kernel report: BUG: KASAN: slab-use-after-free in usbio_disconnect+0x12e/0x150 Call Trace: <TASK> dump_stack_lvl+0x66/0xa0 print_report+0xce/0x630 ? usbio_disconnect+0x12e/0x150 ? srso_alias_return_thunk+0x5/0xfbef5 ? __virt_addr_valid+0x188/0x320 ? usbio_disconnect+0x12e/0x150 kasan_report+0xe0/0x110 ? usbio_disconnect+0x12e/0x150 usbio_disconnect+0x12e/0x150 usb_unbind_interface+0xf3/0x400 really_probe+0x316/0x660 __driver_probe_device+0x106/0x240 driver_probe_device+0x4a/0x110 __device_attach_driver+0xf1/0x1a0 ? __pfx___device_attach_driver+0x10/0x10 bus_for_each_drv+0xf9/0x160 ? __pfx_bus_for_each_drv+0x10/0x10 ? srso_alias_return_thunk+0x5/0xfbef5 ? trace_hardirqs_on+0x18/0x130 ? srso_alias_return_thunk+0x5/0xfbef5 ? _raw_spin_unlock_irqrestore+0x44/0x60 __device_attach+0x133/0x2a0 ? __pfx___device_attach+0x10/0x10 ? srso_alias_return_thunk+0x5/0xfbef5 ? do_raw_spin_unlock+0x9a/0x100 ? srso_alias_return_thunk+0x5/0xfbef5 device_initial_probe+0x55/0x70 bus_probe_device+0x4a/0xd0 device_add+0x9b9/0xc10 ? __pfx_device_add+0x10/0x10 ? _raw_spin_unlock_irqrestore+0x44/0x60 ? srso_alias_return_thunk+0x5/0xfbef5 ? lockdep_hardirqs_on_prepare+0xea/0x1a0 ? srso_alias_return_thunk+0x5/0xfbef5 ? usb_enable_lpm+0x3c/0x260 usb_set_configuration+0xb64/0xf20 usb_generic_driver_probe+0x5f/0x90 usb_probe_device+0x71/0x1b0 really_probe+0x46b/0x660 __driver_probe_device+0x106/0x240 driver_probe_device+0x4a/0x110 __device_attach_driver+0xf1/0x1a0 ? __pfx___device_attach_driver+0x10/0x10 bus_for_each_drv+0xf9/0x160 ? __pfx_bus_for_each_drv+0x10/0x10 ? srso_alias_return_thunk+0x5/0xfbef5 ? trace_hardirqs_on+0x18/0x130 ? srso_alias_return_thunk+0x5/0xfbef5 ? _raw_spin_unlock_irqrestore+0x44/0x60 __device_attach+0x133/0x2a0 ? __pfx___device_attach+0x10/0x10 ? srso_alias_return_thunk+0x5/0xfbef5 ? do_raw_spin_unlock+0x9a/0x100 ? srso_alias_return_thunk+0x5/0xfbef5 device_initial_probe+0x55/0x70 bus_probe_device+0x4a/0xd0 device_add+0x9b9/0xc10 ? __pfx_device_add+0x10/0x10 ? srso_alias_return_thunk+0x5/0xfbef5 ? add_device_randomness+0xb7/0xf0 usb_new_device+0x492/0x870 hub_event+0x1b10/0x29c0 ? __pfx_hub_event+0x10/0x10 ? srso_alias_return_thunk+0x5/0xfbef5 ? lock_acquire+0x187/0x300 ? process_one_work+0x475/0xb90 ? srso_alias_return_thunk+0x5/0xfbef5 ? lock_release+0xc8/0x290 ? srso_alias_return_thunk+0x5/0xfbef5 process_one_work+0x4d7/0xb90 ? __pfx_process_one_work+0x10/0x10 ? srso_alias_return_thunk+0x5/0xfbef5 ? srso_alias_return_thunk+0x5/0xfbef5 ? __list_add_valid_or_report+0x37/0xf0 ? __pfx_hub_event+0x10/0x10 ? srso_alias_return_thunk+0x5/0xfbef5 worker_thread+0x2d8/0x570 ? __pfx_worker_thread+0x10/0x10 kthread+0x1ad/0x1f0 ? __pfx_kthread+0x10/0x10 ret_from_fork+0x3c9/0x540 ? __pfx_ret_from_fork+0x10/0x10 ? srso_alias_return_thunk+0x5/0xfbef5 ? __switch_to+0x2e9/0x730 ? __pfx_kthread+0x10/0x10 ret_from_fork_asm+0x1a/0x30 </TASK>

Affected products

Linux
  • <6.18
  • <0bfeec21984fedd32987f4e4c0cde34b445af404
  • <c40090f8d19b415e2925b22be964b5d1f695666f
  • =<6.18.*
  • ==6.18
  • =<7.1.*
  • =<*
  • <1947b6411460d68b54b13c536961933166937d05
Dismissed
(max. allowed matches exceeded)
created 22 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
media: mtk-jpeg: cancel workqueue on release for supported platforms only

In the Linux kernel, the following vulnerability has been resolved: media: mtk-jpeg: cancel workqueue on release for supported platforms only Since a recent fix the mtk_jpeg_release function cancels any pending or running work present in the driver workqueue using cancel_work_sync function. Currently, only the multicore based variants use this workqueue and they have the jpeg_worker platform data field initialized with a workqueue callback function. For the others, this field value remain NULL by default. The cancel_work_sync function is unconditionally called in mtk_jpeg_release function, even for the variants that do not use the workqueue. This call generates a WARN_ON print in __flush_work because the workqueue callback function presence check fails in __flush_work function (used by cancel_work_sync). So, to avoid these warnings, call cancel_work_sync only if a workqueue callback is defined in platform data.

Affected products

Linux
  • =<6.18.*
  • ==7.1
  • <4c4b4af4a9f278da096f0dbdb6b59594701d29bf
  • <0fed0fc34ce734b4b8c2f6a467d38bddcb21dda9
  • <6.12.96
  • <7.1
  • =<6.12.*
  • <6.6.145
  • =<7.1.*
  • <ac0774961a6ea174a71d4ffa39966edafbf7662d
  • =<*
  • =<6.6.*
  • <6.18.39
  • ==e78c39f720679fcf3a2eacd82725ec3ea2648301
  • <7.1
  • <973408ceab14555a8548b97c8cc7b54208c3f251
  • <b1845a227fda37b2fe5327df3ca0015d7e290235
Dismissed
(max. allowed matches exceeded)
created 22 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
iommufd: Move vevent memory allocation outside spinlock

In the Linux kernel, the following vulnerability has been resolved: iommufd: Move vevent memory allocation outside spinlock The veventq memory allocation happens inside the spinlock. Given its depth is decided by the user space, this leaves a vulnerability, where userspace can allocate large queues to exhaust atomic memory reserves. Move the allocation outside the spinlock and use GFP_NOWAIT, which can fail fast under memory pressure without dipping into the GFP_ATOMIC reserves or direct-reclaiming from the threaded IRQ handler. On allocation failure, queue the lost_events_header (so userspace learns of the drop) and return -ENOMEM so the caller learns of the kernel-side memory pressure. This is intentionally distinct from the queue-overflow path, which also queues the lost_events_header but returns 0: a full queue is an expected userspace-pacing condition rather than a kernel error. A subsequent change will cap the upper bound of the veventq_depth.

Affected products

Linux
  • <6.15
  • <6c5fc40200cd0a87d66a368eee00df4d1cca946e
  • =<6.18.*
  • <779480ea79551c31964e74b9aef0e730faa3aa11
  • ==6.15
  • <47443565d10c51366c9382dbc8597cd6c460b8a2
  • =<7.1.*
  • =<*
Dismissed
(max. allowed matches exceeded)
created 22 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
usb: xhci: Fix sleep in atomic context in xhci_free_streams()

In the Linux kernel, the following vulnerability has been resolved: usb: xhci: Fix sleep in atomic context in xhci_free_streams() When a USB device with active stream endpoints is disconnected, xhci_free_streams() is called from the hub_event workqueue to free the stream resources. It calls xhci_free_stream_info() while holding xhci->lock with irqs disabled. xhci_free_stream_info() invokes xhci_free_stream_ctx(), which calls dma_free_coherent() for large stream context arrays. dma_free_coherent() can sleep (e.g. via vunmap), triggering a BUG when called from atomic context. Call trace: dma_free_attrs+0x174/0x220 xhci_free_stream_info+0xd0/0x11c xhci_free_streams+0x278/0x37c usb_free_streams+0x98/0xc0 usb_unbind_interface+0x1b8/0x2f8 device_release_driver_internal+0x1d4/0x2cc device_release_driver+0x18/0x28 bus_remove_device+0x160/0x1a4 device_del+0x1ec/0x350 usb_disable_device+0x98/0x214 usb_disconnect+0xf0/0x35c hub_event+0xab4/0x19ec process_one_work+0x278/0x63c Fix this by saving the stream_info pointers and clearing the ep references under the lock, then calling xhci_free_stream_info() outside the lock where sleeping is allowed.

Affected products

Linux
  • <93cd037da94fcb93183bfb2457e3a56d3eb4c8f4
  • <10666ac9c552990204e791af653abf8e9d9ff619
  • =<5.10.*
  • <d107eb316144c5fb958486e7fe604cd7f1b35cda
  • <1e45aa722c4ce5663e987102aac18c8ad6a83fdd
  • =<6.18.*
  • <2.6.35
  • <42c37c4b75d38b51d84f31a8e29427f5e06a7c2a
  • =<6.12.*
  • =<7.1.*
  • <f7b022ae07685e7526fc39f387ce65b5d309dd3b
  • =<6.1.*
  • =<*
  • =<6.6.*
  • =<5.15.*
  • <e623e4a203f56d5c57519a9a3cb29600551534ad
  • ==2.6.35
  • <f90586129cf9e1fbdb718ef602eea3f15dc1c31c
Dismissed
(max. allowed matches exceeded)
created 22 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
Input: elan_i2c - prevent division by zero and arithmetic underflow

In the Linux kernel, the following vulnerability has been resolved: Input: elan_i2c - prevent division by zero and arithmetic underflow The Elan I2C touchpad driver queries the device for its physical dimensions and trace counts to calculate the device resolution and width. However, if the device firmware or device tree provides invalid zero values for x_traces or y_traces, it results in a fatal division-by-zero exception leading to a kernel panic during device probe. Add checks to ensure these parameters are non-zero before performing the division. If invalid trace values are detected, fall back to a safe default of 1. Additionally, prevent an arithmetic underflow in the touch reporting logic. Previously, if the calculated or fallback width was smaller than ETP_FWIDTH_REDUCE (90), the subtraction would underflow, resulting in a massive unsigned integer being reported to userspace. Clamp the adjusted width to a minimum of 0 to safely handle small physical dimensions and fallback scenarios. Completing the probe with safe fallback values ensures the sysfs nodes are created, keeping the firmware update path intact so a recovery firmware can be flashed to the device.

Affected products

Linux
  • <feb4866a42ec94764c7eb58012256f6f37664727
  • <59d4cc5e7a9785e4bdc9c55273274c6b49d4b58d
  • ==3.19
  • =<6.18.*
  • =<6.12.*
  • =<7.1.*
  • <3.19
  • =<6.1.*
  • <f6d10af2036d1d4a847a74fe47ebbf93bce3c84c
  • <8c1db3418a419e788691746b9c47f863c2fd4890
  • <df2b818fa009c10ff6ba875a1663ff001cda9558
  • <01e0317c256c560d8dcce2e9825eb6142ee34611
  • =<5.15.*
  • <6bac57d8fe2a077b8a85b4140eeb7999078158eb
  • =<6.6.*
  • <2f281ff0163a38fdc4cb4061f0c241e643283a5e
  • =<*
  • =<5.10.*
Dismissed
(max. allowed matches exceeded)
created 22 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
vfio/pci: Latch disable_idle_d3 per device

In the Linux kernel, the following vulnerability has been resolved: vfio/pci: Latch disable_idle_d3 per device When disable_idle_d3 was introduced in vfio-pci, it directly manipulated the device power state with pci_set_power_state(). There were no refcounts to maintain or balanced operations, we could unconditionally bring the device to D0 and conditionally move it to D3hot. Therefore the module parameter was made writable. Later, in commit c61302aa48f7 ("vfio/pci: Move module parameters to vfio_pci.c"), as part of the vfio-pci-core split, the writable aspect of the module parameter was nullified. The parameter value could still be changed through sysfs, but the vfio-pci driver latched the values into vfio-pci-core globals at module init. Loading the vfio-pci module, or unloading and reloading, with non-default or different values could change the globals relative to existing devices bound to vfio-pci variant drivers. Runtime PM was introduced in commit 7ab5e10eda02 ("vfio/pci: Move the unused device into low power state with runtime PM"), which marks the point where power states became refcounted. PM get and put operations need to be balanced, but the same module operations noted above can change the global variables relative to those devices already bound to vfio-pci variant drivers. This introduces a window where PM operations can now become unbalanced. To resolve this with a narrow footprint for stable backports, the disable_idle_d3 flag is latched into the vfio_pci_core_device at the time of initialization, such that the device always operates with a consistent value. NB. vfio_pci_dev_set_try_reset() now unconditionally raises the runtime PM usage count around bus reset to account for disable_idle_d3 becoming a per-device rather than global flag. When this flag is set, the additional get/put pair is harmless and allows continued use of the shared vfio_pci_dev_set_pm_runtime_get() helper.

Affected products

Linux
  • <654710ef3135c4546b20a903bc23a51b0c44d6c8
  • <062b820290bcb9778e43a73597df76e9bb08acfb
  • =<6.18.*
  • ==5.19
  • <5.19
  • =<6.12.*
  • <f6c67cf0051f96ba61d186731d3d9409b9927db2
  • <332d785f9ae426eeeb92527872adf09d84101ba3
  • =<7.1.*
  • =<6.1.*
  • =<*
  • =<6.6.*
  • <4575e9aac5336d1365138c0284773bf8da4b1fa3
  • <b98296816d31441b307ef9fa8670dcf5a55e5505
Dismissed
(max. allowed matches exceeded)
created 22 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
net: ipv4: bound TCP reordering sysctl writes and MTU probe sizes

In the Linux kernel, the following vulnerability has been resolved: net: ipv4: bound TCP reordering sysctl writes and MTU probe sizes Reject invalid `net.ipv4.tcp_reordering` values before they reach TCP socket state. The sysctl is stored as an `int` but copied into the `u32` `tp->reordering` field for new sockets, so negative writes wrap to large values. With `tcp_mtu_probing=2`, the wrapped value can overflow the `tcp_mtu_probe()` size calculation and drive the MTU probing path into an out-of-bounds read. Route `tcp_reordering` writes through `proc_dointvec_minmax()` and require it to be at least 1. Also require `tcp_max_reordering` to be at least 1 so the configured maximum cannot become negative either. When registering the table for a non-init network namespace, relocate `extra2` pointers that refer into `init_net.ipv4` so the `tcp_reordering` upper bound follows that namespace's `tcp_max_reordering`. Harden `tcp_mtu_probe()` itself by computing `size_needed` as `u64`. This keeps the send queue and window checks from being bypassed through signed integer overflow.

Affected products

Linux
  • <bbae351c0f32f7c200249e4aa6561b2b419dcf69
  • <782708ca1ea1f68b8cbb5ea3a7f5f18d0000efae
  • =<6.18.*
  • <e81f805824a8109504fce090641b17d135b48cd1
  • <99206ce2244f8a3ed64298d0667c9055845a5dc7
  • =<6.12.*
  • <a094ac95d3b69adfa1676eb9c8eae6835d4f1671
  • <27ddf4486c7dbf5bdd393fa8bef6b67179796d98
  • <efb8763d7bbb40cff4cc55a6b62c3095a038149c
  • =<7.1.*
  • =<6.1.*
  • =<*
  • =<6.6.*
  • ==2.6.24
  • =<5.15.*
  • <f0d88a4cd03affff6c08adf6c63964e235aede43
  • <2.6.24
  • =<5.10.*
Dismissed
(max. allowed matches exceeded)
created 22 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
wifi: rtw89: correct drop logic for malformed AMPDU frames

In the Linux kernel, the following vulnerability has been resolved: wifi: rtw89: correct drop logic for malformed AMPDU frames The previous commit aims to fix issue caused by malformed AMPDU frames. But the drop logic fails to deal with the first AMPDU packet paired with certain range of sequence number, and leads to unexpected packet drop. It is more likely to encounter this failure when there are busy traffic during rekey process and could lead to disconnection from the AP. Fix this by adding a initial state judgement and only reset status during pairwise rekey.

Affected products

Linux
  • <63ccdfac8677387dfdbd9d4336089e9823280704
  • ==7.1
  • =<7.1.*
  • <994994cfadaf1fd362dea9b8d9d633f85dc1b3c3
  • =<*
  • <7.1
Dismissed
(max. allowed matches exceeded)
created 22 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
USB: chaoskey: Fix slab-use-after-free in chaoskey_release()

In the Linux kernel, the following vulnerability has been resolved: USB: chaoskey: Fix slab-use-after-free in chaoskey_release() The chaoskey driver has a use-after-free bug in its release routine. If the user closes the device file after the USB device has been unplugged, a debugging log statement will try to access the usb_interface structure after it has been deallocated: BUG: KASAN: slab-use-after-free in dev_driver_string (drivers/base/core.c:2406) Read of size 8 at addr ffff888168e8a0b8 by task chaoskey_raw_re/10106 Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 Call Trace: <TASK> dump_stack_lvl (lib/dump_stack.c:94 lib/dump_stack.c:120) print_report (mm/kasan/report.c:378 mm/kasan/report.c:482) kasan_report (mm/kasan/report.c:595) dev_driver_string (drivers/base/core.c:2406) __dynamic_dev_dbg (lib/dynamic_debug.c:906) chaoskey_release (drivers/usb/misc/chaoskey.c:323) __fput (fs/file_table.c:510) fput_close_sync (fs/file_table.c:615) __x64_sys_close (fs/open.c:1507 fs/open.c:1492 fs/open.c:1492) do_syscall_64 (arch/x86/entry/syscall_64.c:63 arch/x86/entry/syscall_64.c:94) entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:121) The driver's last reference to the interface structure is dropped in the chaoskey_free() routine, so the code must not use the interface -- even in a debugging statement -- after that routine returns. (Exception: If we know that another reference is held by someone else, such as the device core while the disconnect routine runs, there's no problem. Thanks to Johan Hovold for pointing this out.) Since the bad access is part of an unimportant debugging statement, we can fix the problem simply by removing the whole statement.

Affected products

Linux
  • <fe7a0f4be283b40dd592540027279735120d0d6f
  • <4.1
  • <abf76d3239dee97b66e7241ad04811f1ce562e28
  • =<6.18.*
  • <2a52d55c86a429dac47886b8424e67f90b001e67
  • <6c82f88bc7a8458d5c60f9b354c4d32d233f0cac
  • =<6.12.*
  • <5ec61fbef9ec5635c492ae63dfb5d13f2bdf1023
  • <f3e409476ad0703c54c14f245e4e143c8124e1bd
  • =<7.1.*
  • <8f50613bff228272577893aa10a346a2f3063e49
  • =<6.1.*
  • =<6.6.*
  • =<*
  • =<5.15.*
  • ==4.1
  • =<5.10.*
  • <3ad5fbcced4e9c2b0fee3c1b76289a147fc35b89
Dismissed
(max. allowed matches exceeded)
created 22 hours ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
xhci: sideband: fix ring sg table pages leak

In the Linux kernel, the following vulnerability has been resolved: xhci: sideband: fix ring sg table pages leak xhci_ring_to_sgtable() allocates a temporary pages array and uses it to build the returned sg_table with sg_alloc_table_from_pages(). The error paths free the pages array, but the success path returns the sg_table without freeing it. This leaks the temporary array every time a sideband client gets an endpoint or event ring buffer. Free the pages array after sg_alloc_table_from_pages() succeeds. The returned sg_table has its own scatterlist entries and does not depend on the temporary array after construction.

Affected products

Linux
  • <49f6e3c3ef19f04f6657ed8dce550e36c763abb8
  • <a3eaf82ff842d6ca95937ea584417e04828235a6
  • =<6.18.*
  • ==6.16
  • =<7.1.*
  • =<*
  • <6.16
  • <99d00a9e35e311a91d258029d5bb584377296c34