Skip to main content

Linux Kernel EUVDEUVD-2026-48974

| CVE-2026-64262 MEDIUM
2026-07-25 Linux GHSA-fxm4-5828-j89m
5.5
CVSS 3.1 · NVD
Share

Severity by source

NVD PRIMARY
5.5 MEDIUM
AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
vuln.today AI
5.5 MEDIUM

Local-only vector requiring a low-privilege user to trigger io_uring task cancellation on an active FUSE mount; no confidentiality or integrity impact, high availability impact via denial of service.

3.1 AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
4.0 AV:L/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
SUSE
MEDIUM
qualitative

Primary rating from NVD.

CVSS VectorNVD

Attack Vector
Local
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

5
Analysis Generated
Aug 12, 2026 - 16:21 vuln.today
CVSS changed
Aug 12, 2026 - 16:07 NVD
5.5 (MEDIUM)
Patch available
Jul 25, 2026 - 11:18 EUVD
CVE Published
Jul 25, 2026 - 08:49 nvd
MEDIUM 5.5
CVE Published
Jul 25, 2026 - 08:49 cve.org
UNKNOWN (no severity yet)

DescriptionNVD

In the Linux kernel, the following vulnerability has been resolved:

fuse-uring: end fuse_req on io-uring cancel task work

When io_uring delivers task work with tw.cancel set (PF_EXITING, PF_KTHREAD fallback, or percpu_ref_is_dying on the ring context), fuse_uring_send_in_task() takes the cancel branch, assigns -ECANCELED, and falls through to fuse_uring_send(). That path only flips the entry to FRRS_USERSPACE and completes the io_uring cmd; it never discharges the ring entry's owning reference to the fuse_req that fuse_uring_add_req_to_ring_ent() handed it at dispatch time.

fuse_uring_send_in_task() tw.cancel == true err = -ECANCELED fuse_uring_send(ent, cmd, err, issue_flags) ent->state = FRRS_USERSPACE list_move(&ent->list, &queue->ent_in_userspace) ent->cmd = NULL io_uring_cmd_done(-ECANCELED) /* ent->fuse_req still set, req still hashed */

The fuse_req stays linked on fpq->processing[hash] and fuse_request_end() is never invoked. The originating syscall thread blocks in D-state in request_wait_answer() until fuse_abort_conn() runs, which can be the entire connection lifetime. For FR_BACKGROUND requests fc->num_background is never decremented either, so repeated cancels inflate the counter until max_background is hit and all later background ops stall. tw.cancel does not imply a connection abort (e.g. a single io_uring worker thread exits while the fuse connection stays up), so this cannot be left for fuse_abort_conn() to clean up.

Ending the req but still routing the entry through fuse_uring_send() is not enough: that leaves a req-less entry on ent_in_userspace, and ent_list_request_expired() dereferences ent->fuse_req unconditionally on the head of that list, which would then NULL-deref.

Fix the cancel branch to release the entry directly. Remove it from the queue, complete the io_uring cmd, end the fuse_req, free the entry, and drop its queue_refs (waking the teardown waiter if it was the last).

AnalysisAI

Resource exhaustion and denial of service in the Linux kernel's fuse-uring subsystem allows a local authenticated user to permanently hang FUSE requests and stall all background filesystem operations for the affected connection. The flaw was introduced with the fuse-uring interface in Linux 6.14 and affects stable series through 6.18.38 and 7.1.3; patched releases 6.18.39, 7.1.4, and mainline 7.2-rc1 are available. No public exploit has been identified at time of analysis (EPSS 0.21%, 11th percentile) and the vulnerability is absent from CISA KEV, indicating no confirmed active exploitation.

Technical ContextAI

The fuse-uring subsystem (introduced in Linux 6.14) integrates FUSE (Filesystem in USErspace) with io_uring to enable asynchronous dispatch of FUSE daemon requests. The bug resides in fuse_uring_send_in_task(): when io_uring delivers task work with tw.cancel set - triggered by PF_EXITING (process exiting), PF_KTHREAD fallback, or percpu_ref_is_dying on the ring context - the cancel branch assigns -ECANCELED and falls through to fuse_uring_send(). That path flips the ring entry to FRRS_USERSPACE and completes the io_uring command, but crucially never calls fuse_request_end() nor releases the ring entry's owning reference to the fuse_req that fuse_uring_add_req_to_ring_ent() handed it at dispatch time. The fuse_req remains hashed on fpq->processing indefinitely, the originating syscall thread blocks in uninterruptible sleep (D-state) in request_wait_answer(), and for FR_BACKGROUND requests the fc->num_background counter is never decremented - allowing repeated cancellations to inflate it to max_background and stall all subsequent background FUSE operations. A secondary NULL dereference risk exists because ent_list_request_expired() dereferences ent->fuse_req unconditionally on the head of the ent_in_userspace list, which would be NULL after the cancel path clears it. NVD assigns CWE:N/A, though the root cause is effectively a missing resource release (CWE-772) compounded by a potential NULL pointer dereference (CWE-476). The CPE cpe:2.3:a:linux:linux confirms the affected component is the mainline Linux kernel.

RemediationAI

Upgrade to Linux 6.18.39 or 7.1.4, which contain the upstream fix. The patch commits are available at https://git.kernel.org/stable/c/bb476ef8e1027a9d509fbaaf81f5061a07e9e5a7 (6.x stable series), https://git.kernel.org/stable/c/4f45f276d5b4412eade6f74f2e37f3adba0473ed (7.1.x stable series), and https://git.kernel.org/stable/c/bea4fe98204b6ce7eb8e29f7bf867dd7619b3ddd (mainline, included in 7.2-rc1); distributions tracking these stable series should deliver the fix through their normal kernel update channels. If immediate patching is not feasible, the targeted compensating control is to disable fuse-uring dispatch: either avoid mounting FUSE filesystems with io_uring support configured, or restrict unprivileged io_uring access system-wide via sysctl kernel.io_uring_disabled=1 (available since Linux 5.13), with the trade-off that this disables io_uring globally for unprivileged users rather than only for FUSE. More surgical restriction via seccomp filtering of io_uring_setup on affected processes is possible but operationally complex. Kernels predating 6.14, which lack the fuse-uring feature entirely, require no action.

Vendor StatusVendor

SUSE

Severity: Moderate
Product Status
openSUSE Tumbleweed Fixed
SUSE Linux Enterprise Desktop 15 SP7 Not-Affected
SUSE Linux Enterprise Desktop 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Not-Affected

Share

EUVD-2026-48974 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy