Skip to content
CVE PROGRAM SOURCE RECORDUnscored

CVE-2026-90140

cuse: wait for pending RCU callbacks on module exit

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.

Affected products

Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.

Linux Linux

Default version status: unaffected

  • bfbab62ca69f72bcd14ea30de1fb98f6080ad464 to < 7fe415e1cd8fa875be263670c0ab47109818abb6affected
  • a8f650b93e55764ca9ff8e1ddebc151f57024086 to < 45ae914b2f6ea56fc2f1c017fdee4e995bcb4c0eaffected
  • 535e9bd0e8f8d8cfdc29de7cdb902b5041427fe6 to < ac5c499413385cea3e0220d6050408d50842891daffected
  • 053fc4f755ad43cf35210677bcba798ccdc48d0c to < a1b46aee33d83f14ed62d7fdef1a91d3e0b732a9affected
  • 053fc4f755ad43cf35210677bcba798ccdc48d0c to < 389bd349ddbcf90dbd8a4f2a4ab6e552d53df134affected
  • 053fc4f755ad43cf35210677bcba798ccdc48d0c to < c40f3f24839f8404325a2099e26c2a04786ae309affected
  • 053fc4f755ad43cf35210677bcba798ccdc48d0c to < 4deb3edead0c0e172cc7349e8855d741d3c5e162affected
  • 5.15.166 to < 5.15.221affected
  • 6.1.107 to < 6.1.188affected
  • 6.6.48 to < 6.6.157affected

Linux Linux

Default version status: affected

  • 6.8affected
  • 0 to < 6.8unaffected
  • 5.15.221 to ≤ 5.15.*unaffected
  • 6.1.188 to ≤ 6.1.*unaffected
  • 6.6.157 to ≤ 6.6.*unaffected
  • 6.12.110 to ≤ 6.12.*unaffected
  • 6.18.52 to ≤ 6.18.*unaffected
  • 7.2.6 to ≤ 7.2.*unaffected
  • 7.3 to ≤ *unaffected

References