<?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>Tue, 29 Sep 2026 20:53:13 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-63918 — l2tp: use refcount_inc_not_zero in l2tp_session_get_by_ifname</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-63918</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;l2tp: use refcount_inc_not_zero in l2tp_session_get_by_ifname&lt;/p&gt;
&lt;p&gt;A reader in l2tp_session_get_by_ifname() can return a pointer to a
session whose refcount has reached zero. The getter takes its
reference with plain refcount_inc(), but every other session getter
in the same file (l2tp_v2_session_get, l2tp_v3_session_get, and the
corresponding _get_next variants) uses refcount_inc_not_zero()
because the IDR/RCU lookup can race with refcount_dec_and_test() -&amp;gt;
l2tp_session_free() -&amp;gt; kfree_rcu(). The ifname getter is the only
outlier; the inconsistency was raised on-list after 979c017803c4
(&amp;#34;l2tp: use list_del_rcu in l2tp_session_unhash&amp;#34;).&lt;/p&gt;
&lt;p&gt;A reader inside rcu_read_lock_bh() that matches session-&amp;gt;ifname can
be preempted between the strcmp() and the refcount_inc(). If the
last reference drops on another CPU in that window, the reader&amp;#39;s
refcount_inc() runs on a counter that has reached zero. refcount_t
catches the addition-on-zero, prints &amp;#34;refcount_t: addition on 0;
use-after-free&amp;#34;, saturates the counter, and returns the saturated
pointer to the caller. Session memory is held live by the in-flight
RCU read section, but the kfree_rcu() callback queued from
l2tp_session_free() will free it once the grace period closes; a
caller that dereferences the returned session past that point hits
a slab-use-after-free. On PREEMPT_RT local_bh_disable() is a per-CPU
sleeping lock and the preemption window is real; on stock PREEMP…&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;l2tp: use refcount_inc_not_zero in l2tp_session_get_by_ifname&lt;/p&gt;
&lt;p&gt;A reader in l2tp_session_get_by_ifname() can return a pointer to a
session whose refcount has reached zero. The getter takes its
reference with plain refcount_inc(), but every other session getter
in the same file (l2tp_v2_session_get, l2tp_v3_session_get, and the
corresponding _get_next variants) uses refcount_inc_not_zero()
because the IDR/RCU lookup can race with refcount_dec_and_test() -&amp;gt;
l2tp_session_free() -&amp;gt; kfree_rcu(). The ifname getter is the only
outlier; the inconsistency was raised on-list after 979c017803c4
(&amp;#34;l2tp: use list_del_rcu in l2tp_session_unhash&amp;#34;).&lt;/p&gt;
&lt;p&gt;A reader inside rcu_read_lock_bh() that matches session-&amp;gt;ifname can
be preempted between the strcmp() and the refcount_inc(). If the
last reference drops on another CPU in that window, the reader&amp;#39;s
refcount_inc() runs on a counter that has reached zero. refcount_t
catches the addition-on-zero, prints &amp;#34;refcount_t: addition on 0;
use-after-free&amp;#34;, saturates the counter, and returns the saturated
pointer to the caller. Session memory is held live by the in-flight
RCU read section, but the kfree_rcu() callback queued from
l2tp_session_free() will free it once the grace period closes; a
caller that dereferences the returned session past that point hits
a slab-use-after-free. On PREEMPT_RT local_bh_disable() is a per-CPU
sleeping lock and the preemption window is real; on stock PREEMP…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-63918</guid>
    </item>
  </channel>
</rss>
