<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://cve.radiocsirt.org/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-10-05T12:26:44.468786+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>csirt@opendfir.org</email>
  </author>
  <link href="https://cve.radiocsirt.org" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://cve.radiocsirt.org/vuln/cve-2026-89655</id>
    <title>CVE-2026-89655 — ceph: fix UAF in __kick_flushing_caps() on cf entry freed during unlock</title>
    <updated>2026-10-05T12:26:44.487529+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> Linux</p>
<p>In the Linux kernel, the following vulnerability has been resolved:</p>
<p>ceph: fix UAF in __kick_flushing_caps() on cf entry freed during unlock</p>
<p>list_for_each_entry() iterates ci-&gt;i_cap_flush_list but drops
i_ceph_lock to send cap messages.  During the unlock window,
handle_cap_flush_ack() can acquire i_ceph_lock, detach cf entries
with tid &lt;= flush_tid from the list, release i_ceph_lock, and free
them via ceph_free_cap_flush() outside any lock.  When the original
thread reacquires i_ceph_lock and the for-loop macro advances via
cf = list_next_entry(cf, i_list), it dereferences cf-&gt;i_list.next
on freed memory.</p>
<p>The race timeline:</p>
<p>__kick_flushing_caps()              handle_cap_flush_ack()
  -----------------------             -----------------------
  holds i_ceph_lock        &lt;---
  iterates to cf (tid=10)
  prepares FLUSH message
  drops i_ceph_lock        &lt;---
  __send_cap() ── FLUSH(tid=10)
	                              MDS sends FLUSH_ACK(tid=10)
                           ---&gt;       acquires i_ceph_lock
                                      cf-&gt;tid(10) &lt;= flush_tid(10),
                                      detaches cf from i_cap_flush_list
                                      drops i_ceph_lock
                                      ceph_free_cap_flush(cf) &lt;- frees it!
  acquires i_ceph_lock     &lt;---
  for-loop advances:
    cf = list_next_entry(cf, i_list)
      -- UAF on freed cf-&gt;i_list.next</p>
<p>The cf was just sent by __kick_flushing_caps itself via __send_cap().
The M…</p></div>
    </content>
    <link href="https://cve.radiocsirt.org/vuln/cve-2026-89655"/>
  </entry>
</feed>
