LiveActive security incident?Get immediate response
CVE Record

CVE-2026-31667: Input: uinput - fix circular locking dependency with ff-core

In the Linux kernel, the following vulnerability has been resolved: Input: uinput - fix circular locking dependency with ff-core A lockdep circular locking dependency warning can be triggered reproducibly when using a force-feedback gamepad with uinput (for example, playing ELDEN RING under Wine with a Flydigi Vader 5 controller): ff->mutex -> udev->mutex -> input_mutex -> dev->mutex -> ff->mutex The cycle is caused by four lock acquisition paths: 1. ff upload: input_ff_upload() holds ff->mutex and calls uinput_dev_upload_effect() -> uinput_request_submit() -> uinput_request_send(), which acquires udev->mutex. 2. device create: uinput_ioctl_handler() holds udev->mutex and calls uinput_create_device() -> input_register_device(), which acquires input_mutex. 3. device register: input_register_device() holds input_mutex and calls kbd_connect() -> input_register_handle(), which acquires dev->mutex. 4. evdev release: evdev_release() calls input_flush_device() under dev->mutex, which calls input_ff_flush() acquiring ff->mutex. Fix this by introducing a new state_lock spinlock to protect udev->state and udev->dev access in uinput_request_send() instead of acquiring udev->mutex. The function only needs to atomically check device state and queue an input event into the ring buffer via uinput_dev_event() -- both operations are safe under a spinlock (ktime_get_ts64() and wake_up_interruptible() do not sleep). This breaks the ff->mutex -> udev->mutex link since a spinlock is a leaf in the lock ordering and cannot form cycles with mutexes. To keep state transitions visible to uinput_request_send(), protect writes to udev->state in uinput_create_device() and uinput_destroy_device() with the same state_lock spinlock. Additionally, move init_completion(&request->done) from uinput_request_send() to uinput_request_submit() before uinput_request_reserve_slot(). Once the slot is allocated, uinput_flush_requests() may call complete() on it at any time from the destroy path, so the completion must be initialised before the request becomes visible. Lock ordering after the fix: ff->mutex -> state_lock (spinlock, leaf) udev->mutex -> state_lock (spinlock, leaf) udev->mutex -> input_mutex -> dev->mutex -> ff->mutex (no back-edge)

HighCVSS 7.8Not KEV-listedUpdated
Glexia's TakeAutomated analysishigh

Security readout for executives and security teams

Plain-English summary

A Linux uinput force-feedback locking flaw can create a circular dependency, potentially causing deadlock or kernel instability. Triggering requires local, low-privileged access rather than network access. The supplied CVSS rates it 7.8 high, although the description demonstrates a reproducible lock warning rather than confirmed compromise.

Executive priority

Treat as high priority for shared Linux endpoints, gaming or Wine systems, and environments exposing virtual-input devices to untrusted local users. Schedule normal urgent kernel patching after compatibility testing. Internet-facing systems without relevant local access have lower immediate exposure.

Technical view

Force-feedback upload could acquire ff->mutex before udev->mutex, creating a cycle through input_mutex, dev->mutex, and back to ff->mutex. Stable fixes introduce a leaf state_lock for uinput state and device access, breaking the cycle. They also initialize request completion before slot publication to prevent the destroy path from completing an uninitialized request.

Likely exposure

Exposure is most likely on affected Linux systems where local users or applications can access uinput force-feedback functionality, including virtual-input and gaming configurations. The flattened affected-version data is ambiguous, so exact kernel and distribution package status requires vendor or commit-level verification.

Exploitation context

The CVSS vector indicates local access, low privileges, low complexity, and no user interaction. The bundle marks KEV false, and no cited source reports active exploitation or a public weaponized exploit. The demonstrated condition is a reproducible lockdep warning.

Researcher notes

The disclosed fix removes the ff->mutex-to-udev->mutex edge and closes a request-completion initialization race. No CWE is supplied. The stated confidentiality and integrity impacts are not explained by the technical description, which primarily establishes a locking cycle and possible instability. Exact affected boundaries need branch-specific verification.

Mitigation direction

  • Apply a vendor kernel update containing the appropriate stable fix for your maintained kernel branch.
  • If no package is available, monitor Linux and distribution guidance; do not assume an unlisted workaround is effective.
  • Prioritize systems where low-privileged users can access uinput and force-feedback device paths.

Validation and detection

  • Record the running kernel and distribution package version on systems using uinput or virtual input devices.
  • Map that build to the applicable stable commit or distribution backport; the supplied version list is ambiguous.
  • After updating, confirm the vendor package includes the state_lock and completion-initialization changes.
  • Use authorized regression testing to confirm force-feedback operation no longer produces the documented lockdep cycle.
Prepared
Confidence
medium
Sources
10

Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.

Potential ATT&CK relevance

Conservative CVE-to-ATT&CK context

These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.

ATT&CK lookup starting points

Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.

cve · low confidence lookup

CVE-2026-31667 mapping review

Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.

Open ATT&CK lookup
Vulnerability profileCVE Program record
Severity
High
CVSS
7.8 (3.1)
Known Exploited
No
Published

Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

Official CVE source material

CNA and ADP enrichment extracted from CVE v5

These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.

1CVSS vectors
3Timeline events
0ADP providers
9Source links

CVSS vector scores

1 official score

We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.

ScoreVersionSeverityVectorExploitImpactSource
7.8CVSS 3.1HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H1.85.9Linux

Vulnerability scoring details

Base CVSS 3.1 score

7.8High
CVSS 3.1 vector shape for CVE-2026-31667Attack VectorAttack ComplexityPrivileges RequiredUser InteractionScopeConfidentiality ImpactIntegrity ImpactAvailability Impact

Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

Attack Vector
NetworkAdjacentLocalPhysical
Attack Complexity
LowHigh
Privileges Required
NoneLowHigh
User Interaction
NoneRequired
Scope
ChangedUnchanged
Confidentiality Impact
HighLowNone
Integrity Impact
HighLowNone
Availability Impact
HighLowNone

Vulnerability timeline

Timeline events are normalized from CVE metadata, CNA source timelines, ADP timelines, and KEV metadata when present.

  1. CVE reservedCVE Program

    The CVE ID was reserved by the assigning CNA.

  2. CVE publishedCVE Program

    The CVE record was published.

  3. CVE updatedCVE Program

    The CVE record metadata indicates this as the latest update time.

Affected products

Products and packages named in the record

VendorProductVersion / packageStatus
LinuxLinuxff462551235d8d7d843a005950bc90924fcedede, ff462551235d8d7d843a005950bc90924fcedede, ff462551235d8d7d843a005950bc90924fcedede, ff462551235d8d7d843a005950bc90924fcedede, ff462551235d8d7d843a005950bc90924fcedede, ff462551235d8d7d843a005950bc90924fcedede, ff462551235d8d7d843a005950bc90924fcedede, ff462551235d8d7d843a005950bc90924fcededeunaffected
LinuxLinux2.6.19, 0, 5.10.253, 5.15.203, 6.1.169, 6.6.135, 6.12.82, 6.18.23, 6.19.13, 7.0affected
Weakness

CWE details

No CWE listed

CWE links open Glexia weakness intelligence pages with official CWE context, developer remediation guidance, and related CVE mappings.