<?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://cve.radiocsirt.org/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-10-21T12:12:00.643002+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>csirt@opendfir.org</email>
  </author>
  <link href="https://cve.radiocsirt.org" 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://cve.radiocsirt.org/vuln/cve-2021-46986</id>
    <title>CVE-2021-46986 — usb: dwc3: gadget: Free gadget structure only after freeing endpoints</title>
    <updated>2026-10-21T12:12:00.645723+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: dwc3: gadget: Free gadget structure only after freeing endpoints</p>
<p>As part of commit e81a7018d93a ("usb: dwc3: allocate gadget structure
dynamically") the dwc3_gadget_release() was added which will free
the dwc-&gt;gadget structure upon the device's removal when
usb_del_gadget_udc() is called in dwc3_gadget_exit().</p>
<p>However, simply freeing the gadget results a dangling pointer
situation: the endpoints created in dwc3_gadget_init_endpoints()
have their dep-&gt;endpoint.ep_list members chained off the list_head
anchored at dwc-&gt;gadget-&gt;ep_list.  Thus when dwc-&gt;gadget is freed,
the first dwc3_ep in the list now has a dangling prev pointer and
likewise for the next pointer of the dwc3_ep at the tail of the list.
The dwc3_gadget_free_endpoints() that follows will result in a
use-after-free when it calls list_del().</p>
<p>This was caught by enabling KASAN and performing a driver unbind.
The recent commit 568262bf5492 ("usb: dwc3: core: Add shutdown
callback for dwc3") also exposes this as a panic during shutdown.</p>
<p>There are a few possibilities to fix this.  One could be to perform
a list_del() of the gadget-&gt;ep_list itself which removes it from
the rest of the dwc3_ep chain.</p>
<p>Another approach is what this patch does, by splitting up the
usb_del_gadget_udc() call into its separate "del" and "put"
components.  This allows dwc3_gadget_free_endpoints() to be
called before the gadget is finally freed with usb_put_gadget().</p></div>
    </content>
    <link href="https://cve.radiocsirt.org/vuln/cve-2021-46986"/>
  </entry>
</feed>
