<?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>Wed, 30 Sep 2026 01:59:42 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-90181 — ublk: avoid teardown retry loop on xarray allocation failure</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-90181</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;ublk: avoid teardown retry loop on xarray allocation failure&lt;/p&gt;
&lt;p&gt;__ublk_shmem_remove_ranges() removes matching maple tree ranges in
batches, but first stores each range into a temporary xarray so that the
pages can be unpinned after dropping the maple tree lock.&lt;/p&gt;
&lt;p&gt;That temporary xarray is filled under the maple tree lock with
xa_store(..., GFP_ATOMIC). If the store fails before mas_erase(), the
current range is left in the tree and the helper returns false. The
outer ublk_shmem_remove_ranges() loop then immediately retries the same
range. While the atomic allocation keeps failing, the teardown path has
no forward progress.&lt;/p&gt;
&lt;p&gt;The issue can be reproduced with radix_tree_node failslab injection after
a SHMEM_ZC buffer has already been registered:&lt;/p&gt;
&lt;p&gt;# Kernel config:
  #   CONFIG_BLK_DEV_UBLK=y
  #   CONFIG_DEBUG_FS=y
  #   CONFIG_FAULT_INJECTION=y
  #   CONFIG_FAULT_INJECTION_DEBUG_FS=y
  #   CONFIG_FAILSLAB=y&lt;/p&gt;
&lt;p&gt;echo 10 &amp;gt; /proc/sys/vm/nr_hugepages
  mkdir -p /tmp/htlb
  mount -t hugetlbfs none /tmp/htlb
  fallocate -l 4M /tmp/htlb/ublk_buf&lt;/p&gt;
&lt;p&gt;dev_id=$(kublk add -t null --shmem_zc \
		--htlb /tmp/htlb/ublk_buf |
	   awk -F &amp;#39;[ :]&amp;#39; &amp;#39;/dev id/ {print $3}&amp;#39;)&lt;/p&gt;
&lt;p&gt;echo 1 &amp;gt; /sys/kernel/slab/radix_tree_node/failslab
  echo Y &amp;gt; /sys/kernel/debug/failslab/cache-filter
  echo Y &amp;gt; /sys/kernel/debug/failslab/ignore-gfp-wait
  echo 1 &amp;gt; /sys/kernel/debug/failslab/interval
  echo -1 &amp;gt; /sys/kernel/debug/failslab/times
  echo 100 &amp;gt; /sy…&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;ublk: avoid teardown retry loop on xarray allocation failure&lt;/p&gt;
&lt;p&gt;__ublk_shmem_remove_ranges() removes matching maple tree ranges in
batches, but first stores each range into a temporary xarray so that the
pages can be unpinned after dropping the maple tree lock.&lt;/p&gt;
&lt;p&gt;That temporary xarray is filled under the maple tree lock with
xa_store(..., GFP_ATOMIC). If the store fails before mas_erase(), the
current range is left in the tree and the helper returns false. The
outer ublk_shmem_remove_ranges() loop then immediately retries the same
range. While the atomic allocation keeps failing, the teardown path has
no forward progress.&lt;/p&gt;
&lt;p&gt;The issue can be reproduced with radix_tree_node failslab injection after
a SHMEM_ZC buffer has already been registered:&lt;/p&gt;
&lt;p&gt;# Kernel config:
  #   CONFIG_BLK_DEV_UBLK=y
  #   CONFIG_DEBUG_FS=y
  #   CONFIG_FAULT_INJECTION=y
  #   CONFIG_FAULT_INJECTION_DEBUG_FS=y
  #   CONFIG_FAILSLAB=y&lt;/p&gt;
&lt;p&gt;echo 10 &amp;gt; /proc/sys/vm/nr_hugepages
  mkdir -p /tmp/htlb
  mount -t hugetlbfs none /tmp/htlb
  fallocate -l 4M /tmp/htlb/ublk_buf&lt;/p&gt;
&lt;p&gt;dev_id=$(kublk add -t null --shmem_zc \
		--htlb /tmp/htlb/ublk_buf |
	   awk -F &amp;#39;[ :]&amp;#39; &amp;#39;/dev id/ {print $3}&amp;#39;)&lt;/p&gt;
&lt;p&gt;echo 1 &amp;gt; /sys/kernel/slab/radix_tree_node/failslab
  echo Y &amp;gt; /sys/kernel/debug/failslab/cache-filter
  echo Y &amp;gt; /sys/kernel/debug/failslab/ignore-gfp-wait
  echo 1 &amp;gt; /sys/kernel/debug/failslab/interval
  echo -1 &amp;gt; /sys/kernel/debug/failslab/times
  echo 100 &amp;gt; /sy…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-90181</guid>
    </item>
  </channel>
</rss>
