<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://vulnerability.circl.lu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Fri, 02 Oct 2026 17:38:44 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-80914 — Bluetooth: ISO: fix use-after-free of listener socket in iso_conn_ready</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-80914</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Linux&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;Bluetooth: ISO: fix use-after-free of listener socket in iso_conn_ready&lt;/p&gt;
&lt;p&gt;iso_conn_ready() looks up the BIS listener socket with iso_get_sock(),
which takes a reference, and then, without re-checking its state,
creates a child socket from it:&lt;/p&gt;
&lt;p&gt;parent = iso_get_sock(hdev, ...);
    if (!parent)
        return;&lt;/p&gt;
&lt;p&gt;lock_sock(parent);
    sk = iso_sock_alloc(sock_net(parent), NULL, BTPROTO_ISO, ...);
    ...
    iso_chan_add(conn, sk, parent);
    ...
    release_sock(parent);
    sock_put(parent);&lt;/p&gt;
&lt;p&gt;If the listener socket is closed concurrently, between iso_get_sock()
and lock_sock(), the reference taken by iso_get_sock() may be the last
one: the close path drops the link-list reference, and once
iso_conn_ready() drops its own reference at the end of the function the
socket is freed.  The child socket, however, is already linked to the
freed parent, and a later disconnect of the child runs iso_chan_del()
-&amp;gt; bt_accept_unlink(), which dereferences the dangling parent pointer
into the freed accept queue (a use-after-free).  The same dangling
pointer is also dereferenced through parent-&amp;gt;***() in
iso_chan_del().&lt;/p&gt;
&lt;p&gt;Fix it the same way the connected (non-BIS) path was fixed in commit
0d255e63fcf3 (&amp;#34;Bluetooth: ISO: hold sk properly in iso_conn_ready&amp;#34;):
after taking the socket lock, re-check that the parent is still a
listening, alive socket, and bail out otherwise.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Linux&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;Bluetooth: ISO: fix use-after-free of listener socket in iso_conn_ready&lt;/p&gt;
&lt;p&gt;iso_conn_ready() looks up the BIS listener socket with iso_get_sock(),
which takes a reference, and then, without re-checking its state,
creates a child socket from it:&lt;/p&gt;
&lt;p&gt;parent = iso_get_sock(hdev, ...);
    if (!parent)
        return;&lt;/p&gt;
&lt;p&gt;lock_sock(parent);
    sk = iso_sock_alloc(sock_net(parent), NULL, BTPROTO_ISO, ...);
    ...
    iso_chan_add(conn, sk, parent);
    ...
    release_sock(parent);
    sock_put(parent);&lt;/p&gt;
&lt;p&gt;If the listener socket is closed concurrently, between iso_get_sock()
and lock_sock(), the reference taken by iso_get_sock() may be the last
one: the close path drops the link-list reference, and once
iso_conn_ready() drops its own reference at the end of the function the
socket is freed.  The child socket, however, is already linked to the
freed parent, and a later disconnect of the child runs iso_chan_del()
-&amp;gt; bt_accept_unlink(), which dereferences the dangling parent pointer
into the freed accept queue (a use-after-free).  The same dangling
pointer is also dereferenced through parent-&amp;gt;***() in
iso_chan_del().&lt;/p&gt;
&lt;p&gt;Fix it the same way the connected (non-BIS) path was fixed in commit
0d255e63fcf3 (&amp;#34;Bluetooth: ISO: hold sk properly in iso_conn_ready&amp;#34;):
after taking the socket lock, re-check that the parent is still a
listening, alive socket, and bail out otherwise.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-80914</guid>
    </item>
  </channel>
</rss>
