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 1 month ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
KVM: arm64: Take the SRCU lock for page table walks in fault injection and AT emulation

In the Linux kernel, the following vulnerability has been resolved: KVM: arm64: Take the SRCU lock for page table walks in fault injection and AT emulation walk_s1() and kvm_walk_nested_s2() expect to be called while holding kvm->srcu to guard against memslot changes. While this is generally the case, __kvm_at_s12() and __kvm_find_s1_desc_level() call into the respective walkers without taking kvm->srcu. Fix by acquiring kvm->srcu prior to the table walk in both instances.

Affected products

Linux
  • =<*
  • <f2ca45b50d4216c9cc7ffabf50d9ad1932209251
  • =<6.18.*
  • <6.12
  • <ec42b4ed1b072ea2d03f086061aa67bad6d8de39
  • =<7.0.*
  • <97706097f9b851cfe55c3b00b083dfc2bcf542bc
  • ==6.12
Dismissed
(max. allowed matches exceeded)
created 1 month ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
mm/hugetlb: restore reservation on error in hugetlb folio copy paths

In the Linux kernel, the following vulnerability has been resolved: mm/hugetlb: restore reservation on error in hugetlb folio copy paths Two sites in mm/hugetlb.c allocate a hugetlb folio via alloc_hugetlb_folio() (consuming a VMA reservation) and then call copy_user_large_folio(), which became int-returning in commit 1cb9dc4b475c ("mm: hwpoison: support recovery from HugePage copy-on-write faults") and can now fail (e.g. -EHWPOISON on a hwpoisoned source page). On the failure path, folio_put() restores the global hugetlb pool count through free_huge_folio(), but the per-VMA reservation map entry is left marked consumed: - hugetlb_mfill_atomic_pte() resubmission path (UFFDIO_COPY) - copy_hugetlb_page_range() fork-time CoW path when hugetlb_try_dup_anon_rmap() fails (rare: pinned hugetlb anon folio under fork) User-visible effect: on UFFDIO_COPY into a private hugetlb VMA where the resubmission copy fails, the reservation for that address is leaked from the VMA's reserve map. A subsequent fault at the same address takes the no-reservation path, and under hugetlb pool pressure the task is SIGBUSed at an address it had previously reserved. The fork-time CoW path leaks the same way in the child VMA's reserve map, though it requires the much rarer combination of pinned hugetlb anon page + hwpoisoned source. Add the missing restore_reserve_on_error() call before folio_put() on both error paths.

Affected products

Linux
  • <e47bf16af3c45470ea32f2241fa69aefe0dd61bd
  • =<*
  • =<6.18.*
  • <c72469ac0f274bde3f0df60a4584e14a123d0aa6
  • <8d6e1dd3ad1340cd8b6d554b7aa93d8f0a1c6d38
  • =<7.0.*
  • <45e33d43243d71d089af42f5077b8213cee6610f
  • =<6.12.*
  • <40c81856e622a9dc59294a90d169ac07ea25b0b0
  • =<6.6.*
  • ==6.4
  • <6.4
Dismissed
(max. allowed matches exceeded)
created 1 month ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
net: ethernet: mtk_eth_soc: Fix use-after-free in metadata dst teardown

In the Linux kernel, the following vulnerability has been resolved: net: ethernet: mtk_eth_soc: Fix use-after-free in metadata dst teardown mtk_free_dev() calls metadata_dst_free() which frees the metadata_dst with kfree() immediately, bypassing the RCU grace period. In the RX path, skb_dst_set_noref() sets a non-refcounted pointer from the skb to the metadata_dst. This function requires RCU read-side protection and the dst must remain valid until all RCU readers complete. Since metadata_dst_free() calls kfree() directly, a use-after-free can occur if any skb still holds a noref pointer to the dst when the driver tears it down. Replace metadata_dst_free() with dst_release() which properly goes through the refcount path: when the refcount drops to zero, it schedules the actual free via call_rcu_hurry(), ensuring all RCU readers have completed before the memory is freed.

Affected products

Linux
  • =<*
  • <e634408d2b0cd939cfe019398a21fb47b7a8ffe3
  • =<6.18.*
  • =<7.0.*
  • <72775977e89c25c99ee84d2c5baa3f86a8ba5cb4
  • <80df409e1a483676826a6c66e693dba6ac507751
  • <2d86aeb46d5f69c704065a8c69822582787272a1
  • ==6.2
  • <6.2
  • =<6.12.*
  • =<6.6.*
  • <459c6f35c58cf0fd5247e55d73ddaa29571d9b7e
Dismissed
(max. allowed matches exceeded)
created 1 month ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
net: ibm: emac: Fix use-after-free during device removal

In the Linux kernel, the following vulnerability has been resolved: net: ibm: emac: Fix use-after-free during device removal The driver was using devm_register_netdev() which causes unregister_netdev() to be deferred until the devres cleanup phase, which runs after emac_remove() returns. This creates a use-after-free window where: 1. emac_remove() is called, which tears down hardware (cancels work, detaches modules, unregisters from MAL) 2. emac_remove() returns 3. devres cleanup runs and finally calls unregister_netdev() During step 3, the network stack might still process packets, triggering emac_irq(), emac_poll(), or other handlers that access now-freed hardware resources (dev->emacp, dev->mal, etc.). Fix this by replacing devm_register_netdev() with manual register_netdev() and calling unregister_netdev() at the beginning of emac_remove(), before any hardware teardown. This ensures the network device is fully stopped and unregistered before hardware resources are released. The change is safe because: - dev->ndev is assigned very early in probe (before any error paths that could bypass emac_remove) - platform_set_drvdata() is only called after successful registration, so emac_remove() only runs for fully registered devices - unregister_netdev() is idempotent and safe to call on any registered device

Affected products

Linux
  • =<*
  • =<6.18.*
  • <6.12
  • <c12584cd6078085d707266be864e7e1cc91d74e3
  • =<7.0.*
  • <a0130d682222ae21afc395aead7cd2d87e1a8358
  • =<6.12.*
  • <cf8e14db93eaecc4c0c58299be3b3183b0e53ed5
  • ==6.12
  • <c09c2e236eef6f59e105f38a30f5439e6ccbcad7
Dismissed
(max. allowed matches exceeded)
created 1 month ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
firmware: stratix10-rsu: Fix NULL deref on rsu_send_msg() timeout in probe

In the Linux kernel, the following vulnerability has been resolved: firmware: stratix10-rsu: Fix NULL deref on rsu_send_msg() timeout in probe rsu_send_msg() can return -ETIMEDOUT when wait_for_completion_interruptible_timeout() fires while the SMC call is still pending. In stratix10_rsu_probe(), the error paths for COMMAND_RSU_DCMF_VERSION, COMMAND_RSU_DCMF_STATUS, COMMAND_RSU_MAX_RETRY and COMMAND_RSU_GET_SPT_TABLE call stratix10_svc_free_channel() - which sets chan->scl to NULL - but then fall through and queue the next request on the same channel. The next svc kthread that runs will dereference pdata->chan->scl in its receive callback path, triggering a NULL pointer dereference identical to the one fixed by commit c45f7263100c ("firmware: stratix10-rsu: Fix NULL pointer dereference when RSU is disabled") for the COMMAND_RSU_STATUS path. Apply the same cleanup pattern to the remaining failure paths: remove the async client, free the channel, and return early so no further messages are queued on a channel whose scl has been cleared. While at it, clean up stratix10_rsu_probe() in two ways without changing behavior: - Drop redundant zero-initialization of fields already cleared by devm_kzalloc(): client.receive_cb, status.* and spt0/1_address (INVALID_SPT_ADDRESS is 0x0). - Replace five identical 3-line error-cleanup blocks (stratix10_svc_remove_async_client() + stratix10_svc_free_channel() + return ret) with goto labels (remove_async_client, free_channel), matching the standard kernel resource-unwinding pattern and making it easier to extend the probe sequence without forgetting matching cleanup. Also move init_completion() next to mutex_init() so sync-primitive initialization is grouped before anything that could trigger a callback. --- v2: Add a minor clean-up of the function stratix10_rsu_probe() to have a centralize exit for all the rsu_send_async_msg() and rsu_send_msg().

Affected products

Linux
  • =<*
  • <6bc249d324241c64118a3018124798c28e2950f7
  • =<7.0.*
  • <6.19
  • <bfd2eb9bba548a8f63c3339bb1fb9a2031a42d86
  • ==6.19
Dismissed
(max. allowed matches exceeded)
created 1 month ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
net: mvpp2: refill RX buffers before XDP or skb use

In the Linux kernel, the following vulnerability has been resolved: net: mvpp2: refill RX buffers before XDP or skb use The RX error path returns the current descriptor buffer to the hardware BM pool. That is only valid while the driver still owns the buffer. mvpp2_rx_refill() can fail after the current buffer has been handed to XDP or attached to an skb. In those cases mvpp2_run_xdp() may have recycled, redirected, or queued the page for XDP_TX, and an skb free also retires the data buffer. Returning such a buffer to BM lets hardware DMA into memory that is no longer owned by the RX ring. Refill the BM pool before handing the current buffer to XDP or to the skb. If the allocation fails there, drop the packet and return the still-owned current buffer to BM, preserving the pool depth. Once the refill succeeds, later local drops retire/free the current buffer instead of returning it to BM.

Affected products

Linux
  • =<5.15.*
  • =<*
  • <d0c8c4fbd22d260fe28530260656c5fb3c20ce84
  • ==fba2cf348d9eb50b2049a73cc09313dab6d293f1
  • ==5.9
  • <a03cdcedb2cbcc42551dc3e4746929e93c5352d5
  • <8a2126c5afe89f8ceeb60a3afb9f075b736194cd
  • <5e8e2a9624df72fca7c736b2966b2cbf6c9c3ff6
  • <5.8
  • <5.9
  • =<6.1.*
  • =<6.18.*
  • <02e1b5c4d3b4c658b72c145427cded1bba613fc1
  • <a88b3293b556f4d8fba11db9a8061a6b0d3b69e6
  • =<6.12.*
  • <5.9
  • =<7.0.*
  • ==95a936364f2685e9e040c6b179b553604d96de22
  • =<6.6.*
  • <580f92f27cb8724bcc4be98ee89890eab524a2ae
Dismissed
(max. allowed matches exceeded)
created 1 month ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
accel/ethosu: fix OOB write in ethosu_gem_cmdstream_copy_and_validate()

In the Linux kernel, the following vulnerability has been resolved: accel/ethosu: fix OOB write in ethosu_gem_cmdstream_copy_and_validate() The command stream parsing loop increments the index variable a second time when a 64-bit command word is encountered (bit 14 set), but does not re-check the loop bound before writing the second word: for (i = 0; i < size / 4; i++) { bocmds[i] = cmds[0]; if (cmd & 0x4000) { i++; bocmds[i] = cmds[1]; /* unchecked */ } } The buffer bocmds is backed by a DMA allocation of exactly size bytes from drm_gem_dma_create(ddev, size), giving valid indices [0, size/4-1]. When i == size/4 - 1 on entry to an iteration and bit 14 of cmds[0] is set, bocmds[size/4-1] is written in bounds, i is then incremented to size/4, and bocmds[size/4] writes four bytes past the end of the allocation. Userspace controls both the buffer contents and the size argument via the ioctl, making this a userspace-triggerable heap out-of-bounds write. Fix by checking the incremented index against the buffer bound before the second write and returning -EINVAL if the buffer is too small to contain the extended command.

Affected products

Linux
  • <db6cb3e35cebf487f9a78ebd4cfa4b83708ff40d
  • =<*
  • <c0837b9cf6eabbad8b8cbddaff1a46a6d0a2e29d
  • =<7.0.*
  • <6.19
  • ==6.19
Dismissed
(max. allowed matches exceeded)
created 1 month ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
mm/huge_memory: update file PMD counter before folio_put()

In the Linux kernel, the following vulnerability has been resolved: mm/huge_memory: update file PMD counter before folio_put() __split_huge_pmd_locked() updates the file/shmem RSS counter after dropping the PMD mapping's folio reference. If folio_put() drops the last reference, mm_counter_file() can later read freed folio state via folio_test_swapbacked(). Move the counter update before folio_put().

Affected products

Linux
  • <108963978a681c0c468d279cac2b930c27672877
  • =<5.15.*
  • =<*
  • <5f5b604e1e6bde4e889199168ee80fe8306d06ad
  • <8d878059924f12c1bc24556a92ec56add74de3c8
  • <6c29a8ba084e89499ca77b947e07ae817f9c16ce
  • =<6.1.*
  • =<6.18.*
  • <4.19
  • <84b3212b166b446faea27ebebb7161405ffceef9
  • =<7.0.*
  • <ae9d4caf6f133e884cf5fcda4982c493b35e5194
  • =<6.12.*
  • <459771c9cf30f378bdbd30fc65d17f7eb931bb59
  • =<6.6.*
  • =<5.10.*
  • ==4.19
  • <ed5b030931292c94133437ac5e5ff580e498eabd
Dismissed
(max. allowed matches exceeded)
created 1 month ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
drm/vc4: fix krealloc() memory leak

In the Linux kernel, the following vulnerability has been resolved: drm/vc4: fix krealloc() memory leak Don't just overwrite the original pointer passed to krealloc() with its return value without checking latter: MEM = krealloc(MEM, SZ, GFP); If krealloc() returns NULL, that erases the pointer to the still allocated memory, hence leaks this memory. Instead, use a temporary variable, check it's not NULL and only then assign it to the original pointer: TMP = krealloc(MEM, SZ, GFP); if (!TMP) return; MEM = TMP; While on it, use krealloc_array().

Affected products

Linux
  • <30165a09f76eaf34951c818eb5d9d6e4771d76f6
  • <4.8
  • ==4.8
  • <02f5e4db57c0cdd7bac89d503b301a093a0fa95c
  • <5d563a5da8717629ae72f9eadf1e0e340bd1658b
  • =<5.15.*
  • <c034aa0b1ba5f49cbdf8ef193d6ec714d74aac27
  • <fd87d6966041e33ef7d2e5dc59f9a52b71c6ae5f
  • =<6.1.*
  • =<6.18.*
  • =<6.6.*
  • =<*
  • =<7.0.*
  • =<6.12.*
  • <e0ce103e89d61eef70edc1d1ae3bfd4c0aacbc2e
  • <4fc692dc6df5bc777cc1bcebf95179e28594875f
Dismissed
(max. allowed matches exceeded)
created 1 month ago Activity log
  • Created & dismissed (max. allowed matches exceeded) suggestion
drm/xe/display: fix oops in suspend/shutdown without display

In the Linux kernel, the following vulnerability has been resolved: drm/xe/display: fix oops in suspend/shutdown without display The xe driver keeps track of whether to probe display, and whether display hardware is there, using xe->info.probe_display. It gets set to false if there's no display after intel_display_device_probe(). However, the display may also be disabled via fuses, detected at a later time in intel_display_device_info_runtime_init(). In this case, the xe driver does for_each_intel_crtc() on uninitialized mode config in xe_display_flush_cleanup_work(), leading to a NULL pointer dereference, and generally calls display code with display info cleared. Check for intel_display_device_present() after intel_display_device_info_runtime_init(), and reset xe->info.probe_display as necessary. Also do unset_display_features() for completeness, although display runtime init has already done that. This will need to be unified across all cases later. Move intel_display_device_info_runtime_init() call slightly earlier, similar to i915, to avoid a bunch of unnecessary setup for no display cases. Note #1: The xe driver has no business doing low level display plumbing like for_each_intel_crtc() to begin with. It all needs to happen in display code. Note #2: The actual bug is present already in commit 44e694958b95 ("drm/xe/display: Implement display support"), but the oops was likely introduced later at commit ddf6492e0e50 ("drm/xe/display: Make display suspend/resume work on discrete"). (cherry picked from commit 7c3eb9f47533220888a67266448185fd0775d4da)

Affected products

Linux
  • ==6.8
  • <6.8
  • =<*
  • <0f68ddfaaebfbb5581ee931779757d31f4dc9e24
  • =<6.18.*
  • <68938cc08e23a94fd881e845837ff918de005ce7
  • =<7.0.*
  • <238bcdaae8f2abc65e182de7d1f69cf8f611a610