CVSS
Вероятност да бъде експлоатирана в следващите 30 дни (EPSS)
Атакува се
Време до експлоатация
Описание
Оригинално описание
In the Linux kernel, the following vulnerability has been resolved: drm/xe: Fix shrinker accounting double-subtraction on nested external pins xe_bo_pin_external() and xe_bo_unpin_external() support nested pins, since the underlying ttm_bo_pin()/ttm_bo_unpin() maintain a pin_count refcount rather than a boolean. However, the shrinker accounting calls xe_ttm_tt_account_subtract() and xe_ttm_tt_account_add() are invoked unconditionally on every pin_external()/unpin_external() call, instead of only on the transition into and out of the pinned state. An external BO (dma-buf) can be pinned more than once while already pinned, for example when it has multiple attachments/importers, each independently calling xe_bo_pin_external(). Each such nested pin subtracts the BO's pages from the shrinker's accounting again, even though the BO's pages were already removed from consideration by the first pin. Symmetrically, each nested unpin adds them back again before the BO is actually unpinned. This desynchronizes the shrinker's page and object counts from reality, and since they are declared as signed long but interpreted as unsigned long in xe_shrinker_count(), the underflow can turn into an enormous shrinkable/purgeable page count, causing the shrinker to be invoked excessively under memory pressure. Guard the accounting calls with the same pin-count transition checks already used to guard the pinned_link list maintenance, so accounting is only updated on the outermost pin and the final unpin. While centralizing this logic into xe_bo_account_pin()/ xe_bo_account_unpin(), also close a second, related accounting gap affecting imported dma-bufs. For an imported bo's ttm_tt, xe's ttm_tt_populate hook (xe_ttm_tt_populate()) early-returns without calling xe_ttm_tt_account_add(), since TTM_TT_FLAG_EXTERNAL is set without TTM_TT_FLAG_EXTERNAL_MAPPABLE. However, TTM core's ttm_tt_populate() wrapper unconditionally marks the tt as populated on driver-hook success, so ttm_tt_is_populat
Засегнати продукти
- Linux Linux: 00c8efc3180f0cf919b53980e969430657e01685 преди 993c952e6832ad0aa4be82e11f0760b1f532090a; 00c8efc3180f0cf919b53980e969430657e01685 преди ab39bc55cf08208b8511b1c09926b1b646a8befc; 00c8efc3180f0cf919b53980e969430657e01685 преди 83d5acca1f4f6132038ea88c72c5844f62e42d44
- Linux Linux: 6.15; преди 6.15; 6.18.57 до 6.18.*; 7.2.11 до 7.2.*; от 7.3 нататък
История
- 23 октомври 2026 Публикувано
Други уязвимости в Linux Linux
Първоизточници
- https://www.cve.org/CVERecord?id=CVE-2026-99000
- https://nvd.nist.gov/vuln/detail/CVE-2026-99000
- https://git.kernel.org/stable/c/993c952e6832ad0aa4be82e11f0760b1f532090a
- https://git.kernel.org/stable/c/ab39bc55cf08208b8511b1c09926b1b646a8befc
- https://git.kernel.org/stable/c/83d5acca1f4f6132038ea88c72c5844f62e42d44