<?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 13:13:24 +0000</lastBuildDate>
    <item>
      <title>CVE-2023-53584 — ubifs: ubifs_releasepage: Remove ubifs_assert(0) to valid this process</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2023-53584</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;ubifs: ubifs_releasepage: Remove ubifs_assert(0) to valid this process&lt;/p&gt;
&lt;p&gt;There are two states for ubifs writing pages:
1. Dirty, Private
2. Not Dirty, Not Private&lt;/p&gt;
&lt;p&gt;The normal process cannot go to ubifs_releasepage() which means there
exists pages being private but not dirty. Reproducer[1] shows that it
could occur (which maybe related to [2]) with following process:&lt;/p&gt;
&lt;p&gt;PA                     PB                    PC
lock(page)[PA]
ubifs_write_end
  attach_page_private         // set Private
  __set_page_dirty_nobuffers  // set Dirty
unlock(page)&lt;/p&gt;
&lt;p&gt;write_cache_pages[PA]
  lock(page)
  clear_page_dirty_for_io(page)	// clear Dirty
  ubifs_writepage&lt;/p&gt;
&lt;p&gt;do_truncation[PB]
			  truncate_setsize
			    i_size_write(inode, newsize) // newsize = 0&lt;/p&gt;
&lt;p&gt;i_size = i_size_read(inode)	// i_size = 0
    end_index = i_size &amp;gt;&amp;gt; PAGE_SHIFT
    if (page-&amp;gt;index &amp;gt; end_index)
      goto out // jump
out:
unlock(page)   // Private, Not Dirty&lt;/p&gt;
&lt;p&gt;generic_fadvise[PC]
						  lock(page)
						  invalidate_inode_page
						    try_to_release_page
						      ubifs_releasepage
						        ubifs_assert(c, 0)
		                                        // bad assertion!
						  unlock(page)
			  truncate_pagecache[PB]&lt;/p&gt;
&lt;p&gt;Then we may get following assertion failed:
  UBIFS error (ubi0:0 pid 1683): ubifs_assert_failed [ubifs]:
  UBIFS assert failed: 0, in fs/ubifs/file.c:1513
  UBIFS warning (ubi0:0 pid 1683): ubifs_r…&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;ubifs: ubifs_releasepage: Remove ubifs_assert(0) to valid this process&lt;/p&gt;
&lt;p&gt;There are two states for ubifs writing pages:
1. Dirty, Private
2. Not Dirty, Not Private&lt;/p&gt;
&lt;p&gt;The normal process cannot go to ubifs_releasepage() which means there
exists pages being private but not dirty. Reproducer[1] shows that it
could occur (which maybe related to [2]) with following process:&lt;/p&gt;
&lt;p&gt;PA                     PB                    PC
lock(page)[PA]
ubifs_write_end
  attach_page_private         // set Private
  __set_page_dirty_nobuffers  // set Dirty
unlock(page)&lt;/p&gt;
&lt;p&gt;write_cache_pages[PA]
  lock(page)
  clear_page_dirty_for_io(page)	// clear Dirty
  ubifs_writepage&lt;/p&gt;
&lt;p&gt;do_truncation[PB]
			  truncate_setsize
			    i_size_write(inode, newsize) // newsize = 0&lt;/p&gt;
&lt;p&gt;i_size = i_size_read(inode)	// i_size = 0
    end_index = i_size &amp;gt;&amp;gt; PAGE_SHIFT
    if (page-&amp;gt;index &amp;gt; end_index)
      goto out // jump
out:
unlock(page)   // Private, Not Dirty&lt;/p&gt;
&lt;p&gt;generic_fadvise[PC]
						  lock(page)
						  invalidate_inode_page
						    try_to_release_page
						      ubifs_releasepage
						        ubifs_assert(c, 0)
		                                        // bad assertion!
						  unlock(page)
			  truncate_pagecache[PB]&lt;/p&gt;
&lt;p&gt;Then we may get following assertion failed:
  UBIFS error (ubi0:0 pid 1683): ubifs_assert_failed [ubifs]:
  UBIFS assert failed: 0, in fs/ubifs/file.c:1513
  UBIFS warning (ubi0:0 pid 1683): ubifs_r…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2023-53584</guid>
    </item>
  </channel>
</rss>
