<?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-30T23:37:02.513730+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-89596</id>
    <title>CVE-2026-89596 — forcedeth: fix off-by-one when saving/restoring non-PCI config space</title>
    <updated>2026-09-30T23:37:02.517004+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>forcedeth: fix off-by-one when saving/restoring non-PCI config space</p>
<p>nv_suspend() and nv_resume() walk the non-PCI configuration space with</p>
<p>for (i = 0; i &lt;= np-&gt;register_size/sizeof(u32); i++)</p>
<p>which runs one iteration too many. saved_config_space is declared as</p>
<p>u32 saved_config_space[NV_PCI_REGSZ_MAX/4];</p>
<p>and NV_PCI_REGSZ_VER3 is equal to NV_PCI_REGSZ_MAX (0x604), so on a VER3
device register_size/sizeof(u32) is exactly the array length and the last
iteration addresses one element past the end.</p>
<p>The element it lands on is np-&gt;name_rx[0..3]: saved_config_space[] is
followed immediately by char name_rx[IFNAMSIZ + 3], and char needs no
padding. Nothing observable is corrupted by that, because nv_request_irq()
rewrites name_rx with sprintf() before it is ever passed to request_irq().
The bug is the out-of-bounds access itself, which UBSAN reports and which
CONFIG_UBSAN_TRAP=y turns into a trap that aborts the running kernel code,
plus an MMIO read and, on resume, an MMIO writel() to base + 0x604, one
dword past the range the driver mapped:</p>
<p>np-&gt;base = ioremap(addr, np-&gt;register_size);</p>
<p>VER1 and VER2 devices stay inside the array, but they too get the stray
read and the stray write one dword past their own window.</p>
<p>Caught by UBSAN on an Apple Macmini3,1 (MCP79) during a deep S3 cycle.
The splat below is trimmed: the build path in the file name, the CPU
and taint lines, the Workqueue line, the "?" hint fra…</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/cve-2026-89596"/>
  </entry>
</feed>
