Missing Release of Resource after Effective Lifetime Affecting kernel6.18-tools-debuginfo package, versions <1:6.18.39-79.141.amzn2023


Severity

Recommended
high

Based on Amazon Linux security rating.

Threat Intelligence

EPSS
0.15% (6th percentile)

Do your applications use this vulnerable package?

In a few clicks we can analyze your entire application and see what components are vulnerable in your application, and suggest you quick fixes.

Test your applications
  • Snyk IDSNYK-AMZN2023-KERNEL618TOOLSDEBUGINFO-18907990
  • published18 Aug 2026
  • disclosed25 Jul 2026

Introduced: 25 Jul 2026

NewCVE-2026-64262  (opens in a new tab)
CWE-772  (opens in a new tab)

How to fix?

Upgrade Amazon-Linux:2023 kernel6.18-tools-debuginfo to version 1:6.18.39-79.141.amzn2023 or higher.
This issue was patched in ALAS2023-2026-2045.

NVD Description

Note: Versions mentioned in the description apply only to the upstream kernel6.18-tools-debuginfo package and not the kernel6.18-tools-debuginfo package as distributed by Amazon-Linux. See How to fix? for Amazon-Linux:2023 relevant fixed versions and status.

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-&gt;state = FRRS_USERSPACE
    list_move(&amp;ent-&gt;list, &amp;queue-&gt;ent_in_userspace)
    ent-&gt;cmd = NULL
    io_uring_cmd_done(-ECANCELED)
    /* ent-&gt;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).

CVSS Base Scores

version 3.1