Upstream information
Description
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_populated() still reports true
for it. xe_bo_account_pin()/xe_bo_account_unpin() trusted
ttm_tt_is_populated() as a proxy for "these pages are accounted for
by the shrinker", and would subtract/add pages for such a tt that
were never added in the first place, again underflowing the
shrinker's counts. This is reachable today via xe_bo_pin_external(),
and would have become newly reachable via the fb-pin path once this
patch routes __xe_pin_fb_vma() through xe_bo_pin_account() below, so
fix it here rather than in a later patch, to avoid a commit in this
series that introduces the regression before fixing it. Skip the
accounting for imported bos, using the same EXTERNAL &&
!EXTERNAL_MAPPABLE test xe_ttm_tt_populate()/xe_ttm_tt_unpopulate()
use to decide whether to act, via a new xe_ttm_bo_is_imported()
helper (hoisted up from its only prior use site).
v2:
- Fix the critical issue caught by Sashiko AI review: the pin-count
transition check introduced here was still bypassed by the fb-pin
path (__xe_pin_fb_vma()/__xe_unpin_fb_vma()), which could leave a
stale pinned_link entry and a permanent shrinker accounting leak
when the fb-unpin performed the true last unpin. Addressed in a
separate follow-up patch in this series rather than folded in here,
since it is a distinct bug with its own Fixes: tag.
- Drop the unneeded local "last_unpin" variable in
xe_bo_unpin_external(), restoring the original inline
bo->ttm.pin_count == 1 check; it was a no-op rename not used by any
of the new accounting helpers, and was going to be deleted again by
the follow-up patch anyway.
v3:
- Exclude imported dma-bufs from the pin/unpin shrinker accounting,
fixing another underflow caught by Sashiko AI review.
- Add a short comment on the backup-object pin site noting it's
already populated/accounted at pin time, addressing (as a
false-positive clarification, no code fix needed) a separate
Medium-severity accounting-leak concern also caught by Sashiko AI
---truncated---
SUSE information
Overall state of this security issue: Resolved
This issue is currently rated as having low severity.
| CVSS detail | SUSE |
|---|---|
| Base Score | 3.3 |
| Vector | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L |
| Attack Vector | Local |
| Attack Complexity | Low |
| Privileges Required | Low |
| User Interaction | None |
| Scope | Unchanged |
| Confidentiality Impact | None |
| Integrity Impact | None |
| Availability Impact | Low |
| CVSSv3 Version | 3.1 |
Note from the SUSE Security Team on the kernel-default package
SUSE will no longer fix all CVEs in the Linux Kernel anymore, but declare some bug classes as won't fix. Please refer to TID 21496 for more details. SUSE Bugzilla entry: 1288047 [NEW] No SUSE Security Announcements cross referenced.Status of this issue by product and package
Please note that this evaluation state might be work in progress, incomplete or outdated. Also information for service packs in the LTSS phase is only included for issues meeting the LTSS criteria. If in doubt, feel free to contact us for clarification. The updates are grouped by state of their lifecycle. SUSE product lifecycles are documented on the lifecycle page.
| Product(s) | Source package | State |
|---|---|---|
| Products under general support and receiving all security fixes. | ||
| SUSE Linux Enterprise Desktop 15 SP7 | kernel-default | Not affected |
| SUSE Linux Enterprise Desktop 15 SP7 | kernel-source | Not affected |
| SUSE Linux Enterprise High Availability Extension 15 SP7 | kernel-default | Not affected |
| SUSE Linux Enterprise High Availability Extension 15 SP7 | kernel-source | Not affected |
| SUSE Linux Enterprise High Availability Extension 16.0 | kernel-default | Not affected |
| SUSE Linux Enterprise High Availability Extension 16.0 | kernel-source | Not affected |
| SUSE Linux Enterprise Micro 5.3 | kernel-default | Not affected |
| SUSE Linux Enterprise Micro 5.3 | kernel-rt | Not affected |
| SUSE Linux Enterprise Micro 5.3 | kernel-source | Not affected |
| SUSE Linux Enterprise Micro 5.3 | kernel-source-rt | Not affected |
| SUSE Linux Enterprise Micro 5.4 | kernel-default | Not affected |
| SUSE Linux Enterprise Micro 5.4 | kernel-rt | Not affected |
| SUSE Linux Enterprise Micro 5.4 | kernel-source | Not affected |
| SUSE Linux Enterprise Micro 5.4 | kernel-source-rt | Not affected |
| SUSE Linux Enterprise Micro 5.5 | kernel-default | Not affected |
| SUSE Linux Enterprise Micro 5.5 | kernel-source | Not affected |
| SUSE Linux Enterprise Micro 5.5 | kernel-source-rt | Not affected |
| SUSE Linux Enterprise Module for Basesystem 15 SP7 | kernel-default | Not affected |
| SUSE Linux Enterprise Module for Basesystem 15 SP7 | kernel-source | Not affected |
| SUSE Linux Enterprise Module for Development Tools 15 SP7 | kernel-default | Not affected |
| SUSE Linux Enterprise Module for Development Tools 15 SP7 | kernel-source | Not affected |
| SUSE Linux Enterprise Real Time 15 SP7 | kernel-source-rt | Not affected |
| SUSE Linux Enterprise Server 15 SP7 | kernel-default | Not affected |
| SUSE Linux Enterprise Server 15 SP7 | kernel-source | Not affected |
| SUSE Linux Enterprise Server 16.0 | kernel-default | Not affected |
| SUSE Linux Enterprise Server 16.0 | kernel-source | Not affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP7 | kernel-default | Not affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP7 | kernel-source | Not affected |
| SUSE Linux Enterprise Server for SAP applications 16.0 | kernel-default | Not affected |
| SUSE Linux Enterprise Server for SAP applications 16.0 | kernel-source | Not affected |
| SUSE Linux Micro 6.0 | kernel-default | Not affected |
| SUSE Linux Micro 6.0 | kernel-source | Not affected |
| SUSE Linux Micro 6.0 | kernel-source-rt | Not affected |
| SUSE Linux Micro 6.1 | kernel-default | Not affected |
| SUSE Linux Micro 6.1 | kernel-source | Not affected |
| SUSE Linux Micro 6.1 | kernel-source-rt | Not affected |
| SUSE Linux Micro 6.2 | kernel-default | Not affected |
| SUSE Linux Micro 6.2 | kernel-source | Not affected |
| SUSE Linux Micro Extras 6.0 | kernel-default | Not affected |
| SUSE Linux Micro Extras 6.0 | kernel-source | Not affected |
| SUSE Linux Micro Extras 6.0 | kernel-source-rt | Not affected |
| SUSE Linux Micro Extras 6.1 | kernel-default | Not affected |
| SUSE Linux Micro Extras 6.1 | kernel-source | Not affected |
| SUSE Real Time Module 15 SP7 | kernel-source-rt | Not affected |
| openSUSE Leap 16.0 | kernel-source | Not affected |
| Products under Long Term Service Pack support and receiving important and critical security fixes. | ||
| SUSE Linux Enterprise High Performance Computing 12 SP5 | kernel-source | Not affected |
| SUSE Linux Enterprise High Performance Computing 15 SP4-LTSS | kernel-default | Not affected |
| SUSE Linux Enterprise High Performance Computing 15 SP4-LTSS | kernel-source | Not affected |
| SUSE Linux Enterprise High Performance Computing 15 SP5 | kernel-source | Not affected |
| SUSE Linux Enterprise High Performance Computing 15 SP5-LTSS | kernel-default | Not affected |
| SUSE Linux Enterprise High Performance Computing 15 SP5-LTSS | kernel-source | Not affected |
| SUSE Linux Enterprise Module for Basesystem 15 SP4 | kernel-source | Not affected |
| SUSE Linux Enterprise Module for Basesystem 15 SP5 | kernel-source | Not affected |
| SUSE Linux Enterprise Module for Basesystem 15 SP6 | kernel-source | Not affected |
| SUSE Linux Enterprise Module for Development Tools 15 SP4 | kernel-source | Not affected |
| SUSE Linux Enterprise Module for Development Tools 15 SP5 | kernel-source | Not affected |
| SUSE Linux Enterprise Module for Development Tools 15 SP6 | kernel-source | Not affected |
| SUSE Linux Enterprise Server 11 SP4 LTSS EXTREME CORE | kernel-default | Not affected |
| SUSE Linux Enterprise Server 11 SP4 LTSS EXTREME CORE | kernel-source | Not affected |
| SUSE Linux Enterprise Server 12 SP5 | kernel-source | Not affected |
| SUSE Linux Enterprise Server 12 SP5-LTSS | kernel-default | Not affected |
| SUSE Linux Enterprise Server 12 SP5-LTSS | kernel-source | Not affected |
| SUSE Linux Enterprise Server 15 SP4 | kernel-source | Not affected |
| SUSE Linux Enterprise Server 15 SP4-LTSS | kernel-default | Not affected |
| SUSE Linux Enterprise Server 15 SP4-LTSS | kernel-source | Not affected |
| SUSE Linux Enterprise Server 15 SP5 | kernel-source | Not affected |
| SUSE Linux Enterprise Server 15 SP5-LTSS | kernel-default | Not affected |
| SUSE Linux Enterprise Server 15 SP5-LTSS | kernel-source | Not affected |
| SUSE Linux Enterprise Server 15 SP6 | kernel-source | Not affected |
| SUSE Linux Enterprise Server 15 SP6-LTSS | kernel-default | Not affected |
| SUSE Linux Enterprise Server 15 SP6-LTSS | kernel-source | Not affected |
| SUSE Linux Enterprise Server LTSS Extended Security 12 SP5 | kernel-default | Not affected |
| SUSE Linux Enterprise Server LTSS Extended Security 12 SP5 | kernel-source | Not affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP4 | kernel-default | Not affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP4 | kernel-source | Not affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP5 | kernel-default | Not affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP5 | kernel-source | Not affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP6 | kernel-default | Not affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP6 | kernel-source | Not affected |
| Products past their end of life and not receiving proactive updates anymore. | ||
| SUSE CaaS Platform 4.0 | kernel-source | Not affected |
| SUSE Enterprise Storage 6 | kernel-source | Not affected |
| SUSE Enterprise Storage 7 | kernel-source | Not affected |
| SUSE Enterprise Storage 7.1 | kernel-source | Not affected |
| SUSE Linux Enterprise Desktop 11 SP4 | kernel-source | Not affected |
| SUSE Linux Enterprise Desktop 15 SP1 | kernel-source | Not affected |
| SUSE Linux Enterprise Desktop 15 SP2 | kernel-source | Not affected |
| SUSE Linux Enterprise Desktop 15 SP3 | kernel-source | Not affected |
| SUSE Linux Enterprise Desktop 15 SP4 | kernel-source | Not affected |
| SUSE Linux Enterprise Desktop 15 SP5 | kernel-source | Not affected |
| SUSE Linux Enterprise Desktop 15 SP6 | kernel-source | Not affected |
| SUSE Linux Enterprise High Performance Computing 15 SP1 | kernel-source | Not affected |
| SUSE Linux Enterprise High Performance Computing 15 SP1-ESPOS | kernel-source | Not affected |
| SUSE Linux Enterprise High Performance Computing 15 SP1-LTSS | kernel-source | Not affected |
| SUSE Linux Enterprise High Performance Computing 15 SP2 | kernel-source | Not affected |
| SUSE Linux Enterprise High Performance Computing 15 SP2-ESPOS | kernel-source | Not affected |
| SUSE Linux Enterprise High Performance Computing 15 SP2-LTSS | kernel-source | Not affected |
| SUSE Linux Enterprise High Performance Computing 15 SP3 | kernel-source | Not affected |
| SUSE Linux Enterprise High Performance Computing 15 SP3-ESPOS | kernel-source | Not affected |
| SUSE Linux Enterprise High Performance Computing 15 SP3-LTSS | kernel-source | Not affected |
| SUSE Linux Enterprise High Performance Computing 15 SP4 | kernel-source | Not affected |
| SUSE Linux Enterprise High Performance Computing 15 SP4-ESPOS | kernel-source | Not affected |
| SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS | kernel-source | Not affected |
| SUSE Linux Enterprise Micro 5.0 | kernel-default | Not affected |
| SUSE Linux Enterprise Micro 5.1 | kernel-default | Not affected |
| SUSE Linux Enterprise Micro 5.2 | kernel-default | Not affected |
| SUSE Linux Enterprise Micro 5.2 | kernel-source | Not affected |
| SUSE Linux Enterprise Module for Basesystem 15 SP1 | kernel-source | Not affected |
| SUSE Linux Enterprise Module for Basesystem 15 SP2 | kernel-source | Not affected |
| SUSE Linux Enterprise Module for Basesystem 15 SP3 | kernel-source | Not affected |
| SUSE Linux Enterprise Module for Development Tools 15 SP1 | kernel-source | Not affected |
| SUSE Linux Enterprise Module for Development Tools 15 SP2 | kernel-source | Not affected |
| SUSE Linux Enterprise Module for Development Tools 15 SP3 | kernel-source | Not affected |
| SUSE Linux Enterprise Real Time 15 SP2 | kernel-source | Not affected |
| SUSE Linux Enterprise Real Time 15 SP3 | kernel-source | Not affected |
| SUSE Linux Enterprise Real Time 15 SP4 | kernel-source | Not affected |
| SUSE Linux Enterprise Real Time 15 SP4 | kernel-source-rt | Not affected |
| SUSE Linux Enterprise Real Time 15 SP5 | kernel-source-rt | Not affected |
| SUSE Linux Enterprise Server 11 SP4 | kernel-source | Not affected |
| SUSE Linux Enterprise Server 11 SP4-LTSS | kernel-source | Not affected |
| SUSE Linux Enterprise Server 15 SP1 | kernel-source | Not affected |
| SUSE Linux Enterprise Server 15 SP1-BCL | kernel-source | Not affected |
| SUSE Linux Enterprise Server 15 SP1-LTSS | kernel-default | Not affected |
| SUSE Linux Enterprise Server 15 SP1-LTSS | kernel-source | Not affected |
| SUSE Linux Enterprise Server 15 SP2 | kernel-source | Not affected |
| SUSE Linux Enterprise Server 15 SP2-BCL | kernel-source | Not affected |
| SUSE Linux Enterprise Server 15 SP2-LTSS | kernel-default | Not affected |
| SUSE Linux Enterprise Server 15 SP2-LTSS | kernel-source | Not affected |
| SUSE Linux Enterprise Server 15 SP3 | kernel-source | Not affected |
| SUSE Linux Enterprise Server 15 SP3-BCL | kernel-source | Not affected |
| SUSE Linux Enterprise Server 15 SP3-LTSS | kernel-default | Not affected |
| SUSE Linux Enterprise Server 15 SP3-LTSS | kernel-source | Not affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP1 | kernel-source | Not affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP2 | kernel-source | Not affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP3 | kernel-source | Not affected |
| SUSE Manager Proxy 4.0 | kernel-source | Not affected |
| SUSE Manager Proxy 4.1 | kernel-source | Not affected |
| SUSE Manager Proxy 4.2 | kernel-source | Not affected |
| SUSE Manager Proxy 4.3 | kernel-source | Not affected |
| SUSE Manager Proxy LTS 4.3 | kernel-source | Not affected |
| SUSE Manager Retail Branch Server 4.0 | kernel-source | Not affected |
| SUSE Manager Retail Branch Server 4.1 | kernel-source | Not affected |
| SUSE Manager Retail Branch Server 4.2 | kernel-source | Not affected |
| SUSE Manager Retail Branch Server 4.3 | kernel-source | Not affected |
| SUSE Manager Retail Branch Server LTS 4.3 | kernel-source | Not affected |
| SUSE Manager Server 4.0 | kernel-source | Not affected |
| SUSE Manager Server 4.1 | kernel-source | Not affected |
| SUSE Manager Server 4.2 | kernel-source | Not affected |
| SUSE Manager Server 4.3 | kernel-source | Not affected |
| SUSE Manager Server LTS 4.3 | kernel-source | Not affected |
| SUSE Real Time Module 15 SP4 | kernel-source-rt | Not affected |
| SUSE Real Time Module 15 SP5 | kernel-source-rt | Not affected |
| openSUSE Leap 15.3 | kernel-source | Not affected |
| openSUSE Leap 15.4 | kernel-source | Not affected |
| openSUSE Leap 15.4 | kernel-source-rt | Not affected |
| openSUSE Leap 15.5 | kernel-source | Not affected |
| openSUSE Leap 15.5 | kernel-source-rt | Not affected |
| openSUSE Leap 15.6 | kernel-source | Not affected |
SUSE Timeline for this CVE
CVE page created: Tue Oct 27 17:48:53 2026CVE page last modified: Wed Oct 28 14:18:05 2026