<?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-29T05:33:59.718356+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-64347</id>
    <title>CVE-2026-64347 — usb: gadget: composite: fix dead empty check in the USB_DT_OTG handler</title>
    <updated>2026-09-29T05:33:59.736845+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>usb: gadget: composite: fix dead empty check in the USB_DT_OTG handler</p>
<p>The OTG branch of composite_setup() falls back to the first
configuration when none is selected:</p>
<p>if (cdev-&gt;config)
		config = cdev-&gt;config;
	else
		config = list_first_entry(&amp;cdev-&gt;configs,
					  struct usb_configuration, list);
	if (!config)
		goto done;
	...
	memcpy(req-&gt;buf, config-&gt;descriptors[0], value);</p>
<p>list_first_entry() never returns NULL. On an empty list it returns
container_of() of the list head. So the "if (!config)" check is dead.</p>
<p>When cdev-&gt;configs is empty, config points at the head inside struct
usb_composite_dev. config-&gt;descriptors[0] reads whatever sits at that
offset. The memcpy copies up to w_length bytes of it into the response
buffer.</p>
<p>cdev-&gt;configs can be empty in two cases. One is a teardown race on
gadget unbind with a control transfer in flight. The other is a driver
that sets is_otg before it adds a config. A reproducer that holds
cdev-&gt;configs empty triggers a KASAN fault in this branch.</p>
<p>Use list_first_entry_or_null() so the existing check does its job.</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/cve-2026-64347"/>
  </entry>
</feed>
