<?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>Thu, 01 Oct 2026 19:53:20 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-46008 — mm/damon/core: fix damos_walk() vs kdamond_fn() exit race</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-46008</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;mm/damon/core: fix damos_walk() vs kdamond_fn() exit race&lt;/p&gt;
&lt;p&gt;When kdamond_fn() main loop is finished, the function cancels remaining
damos_walk() request and unset the damon_ctx-&amp;gt;kdamond so that API callers
and API functions themselves can show the context is terminated. 
damos_walk() adds the caller&amp;#39;s request to the queue first.  After that, it
shows if the kdamond of the damon_ctx is still running (damon_ctx-&amp;gt;kdamond
is set).  Only if the kdamond is running, damos_walk() starts waiting for
the kdamond&amp;#39;s handling of the newly added request.&lt;/p&gt;
&lt;p&gt;The damos_walk() requests registration and damon_ctx-&amp;gt;kdamond unset are
protected by different mutexes, though.  Hence, damos_walk() could race
with damon_ctx-&amp;gt;kdamond unset, and result in deadlocks.&lt;/p&gt;
&lt;p&gt;For example, let&amp;#39;s suppose kdamond successfully finished the damow_walk()
request cancelling.  Right after that, damos_walk() is called for the
context.  It registers the new request, and shows the context is still
running, because damon_ctx-&amp;gt;kdamond unset is not yet done.  Hence the
damos_walk() caller starts waiting for the handling of the request. 
However, the kdamond is already on the termination steps, so it never
handles the new request.  As a result, the damos_walk() caller thread
infinitely waits.&lt;/p&gt;
&lt;p&gt;Fix this by introducing another damon_ctx field, namely
walk_control_obsolete.  It is protected by the
damon_ctx-&amp;gt;walk_control_lock, which protects damos_walk() request…&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;mm/damon/core: fix damos_walk() vs kdamond_fn() exit race&lt;/p&gt;
&lt;p&gt;When kdamond_fn() main loop is finished, the function cancels remaining
damos_walk() request and unset the damon_ctx-&amp;gt;kdamond so that API callers
and API functions themselves can show the context is terminated. 
damos_walk() adds the caller&amp;#39;s request to the queue first.  After that, it
shows if the kdamond of the damon_ctx is still running (damon_ctx-&amp;gt;kdamond
is set).  Only if the kdamond is running, damos_walk() starts waiting for
the kdamond&amp;#39;s handling of the newly added request.&lt;/p&gt;
&lt;p&gt;The damos_walk() requests registration and damon_ctx-&amp;gt;kdamond unset are
protected by different mutexes, though.  Hence, damos_walk() could race
with damon_ctx-&amp;gt;kdamond unset, and result in deadlocks.&lt;/p&gt;
&lt;p&gt;For example, let&amp;#39;s suppose kdamond successfully finished the damow_walk()
request cancelling.  Right after that, damos_walk() is called for the
context.  It registers the new request, and shows the context is still
running, because damon_ctx-&amp;gt;kdamond unset is not yet done.  Hence the
damos_walk() caller starts waiting for the handling of the request. 
However, the kdamond is already on the termination steps, so it never
handles the new request.  As a result, the damos_walk() caller thread
infinitely waits.&lt;/p&gt;
&lt;p&gt;Fix this by introducing another damon_ctx field, namely
walk_control_obsolete.  It is protected by the
damon_ctx-&amp;gt;walk_control_lock, which protects damos_walk() request…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-46008</guid>
    </item>
  </channel>
</rss>
