CVE-2026-90140

cuse: wait for pending RCU callbacks on module exit

State
Published
Severity
Not scored
Published
Sep 17, 2026
Updated
Oct 19, 2026
Reserved
Sep 11, 2026

Read the record on cve.org

Description

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

cuse: wait for pending RCU callbacks on module exit

Since commit 053fc4f755ad ("fuse: fix UAF in rcu pathwalks"), fuse_conn_put() frees the fuse_conn through call_rcu() rather than synchronously. For cuse, fc->release is cuse_fc_release(), which lives in the cuse module. If the module is removed before the RCU grace period ends, the callback jumps into freed module memory:

userspace / module unload | RCU softirq ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ close(/dev/cuse) | cuse_channel_release() | fuse_dev_release() | fuse_conn_put(fch->conn) | call_rcu(delayed_release) ------+---> callback queued | rmmod cuse | cuse_exit() | cuse_channel_destroy() | ... | return | | <module text freed> | | rcu_do_batch() | delayed_release() | fc->release() | -> cuse_fc_release() | ^^^ freed text!

The freed module text is unmapped by vfree(), so the jump into the stale callback triggers a page-fault Oops. If the virtual address is subsequently reused, the callback could execute unrelated code (undefined behaviour).

Fix this by calling rcu_barrier() in cuse_exit() so that any pending fuse_conn release callback completes before the module is removed.

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • bfbab62ca69f72bcd14ea30de1fb98f6080ad464 to before 7fe415e1cd8fa875be263670c0ab47109818abb6Affected
  • a8f650b93e55764ca9ff8e1ddebc151f57024086 to before 45ae914b2f6ea56fc2f1c017fdee4e995bcb4c0eAffected
  • 535e9bd0e8f8d8cfdc29de7cdb902b5041427fe6 to before ac5c499413385cea3e0220d6050408d50842891dAffected
  • 053fc4f755ad43cf35210677bcba798ccdc48d0c to before a1b46aee33d83f14ed62d7fdef1a91d3e0b732a9Affected
  • 053fc4f755ad43cf35210677bcba798ccdc48d0c to before 389bd349ddbcf90dbd8a4f2a4ab6e552d53df134Affected
  • 053fc4f755ad43cf35210677bcba798ccdc48d0c to before c40f3f24839f8404325a2099e26c2a04786ae309Affected
  • 053fc4f755ad43cf35210677bcba798ccdc48d0c to before 4deb3edead0c0e172cc7349e8855d741d3c5e162Affected
  • 5.15.166 to before 5.15.221Affected
  • 6.1.107 to before 6.1.188Affected
  • 6.6.48 to before 6.6.157Affected
LinuxLinux
  • 6.8Affected
  • before 6.8Not affected
  • 5.15.221 through 5.15.*Not affected
  • 6.1.188 through 6.1.*Not affected
  • 6.6.157 through 6.6.*Not affected
  • 6.12.110 through 6.12.*Not affected
  • 6.18.52 through 6.18.*Not affected
  • 7.2.6 through 7.2.*Not affected
  • 7.3 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.