<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://vulnerability.circl.lu/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-09-29T18:04:34.303454+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@circl.lu</email>
  </author>
  <link href="https://vulnerability.circl.lu" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/cve-2026-97993</id>
    <title>CVE-2026-97993 — vhost-vdpa: don't install the eventfd_ctx_fdget() error in config_ctx</title>
    <updated>2026-09-29T18:04:34.305803+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> Linux</p>
<p>In the Linux kernel, the following vulnerability has been resolved:</p>
<p>vhost-vdpa: don't install the eventfd_ctx_fdget() error in config_ctx</p>
<p>vhost_vdpa_set_config_call() swaps the eventfd_ctx_fdget() return value
into v-&gt;config_ctx before checking it, so on failure the field briefly
holds an ERR_PTR:</p>
<p>ctx = fd == VHOST_FILE_UNBIND ? NULL : eventfd_ctx_fdget(fd);
	swap(ctx, v-&gt;config_ctx);</p>
<p>if (!IS_ERR_OR_NULL(ctx))
		eventfd_ctx_put(ctx);</p>
<p>if (IS_ERR(v-&gt;config_ctx)) {
		long ret = PTR_ERR(v-&gt;config_ctx);</p>
<p>v-&gt;config_ctx = NULL;
		return ret;
	}</p>
<p>Commit 0bde59c1723a ("vhost-vdpa: set v-&gt;config_ctx to NULL if
eventfd_ctx_fdget() fails") added that clearing, and spelled out the
invariant the rest of the file relies on: "we consider 'v-&gt;config_ctx'
valid if it is not NULL".  The window between the swap and the clearing
still breaks it.  vhost_vdpa_config_cb() only tests for NULL, so a config
interrupt delivered inside the window hands the ERR_PTR to
eventfd_signal().</p>
<p>Check the fd before installing it instead.  That closes the window and
matches how vhost_vring_ioctl() handles the same failure for the vq call
fd.</p>
<p>It also stops a rejected fd from tearing down a config interrupt that was
working: until now the swap replaced the live context and put it, so
after an EBADF the device silently stopped delivering config interrupts
until userspace installed a new fd.</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/cve-2026-97993"/>
  </entry>
</feed>
