<?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://db.gcve.eu</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>Mon, 02 Nov 2026 19:47:29 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-98764 — usb: gadget: f_fs: Fix NULL pointer dereference in FUNCTIONFS_ENDPOINT_DESC</title>
      <link>https://db.gcve.eu/vuln/cve-2026-98764</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;usb: gadget: f_fs: Fix NULL pointer dereference in FUNCTIONFS_ENDPOINT_DESC&lt;/p&gt;
&lt;p&gt;When user space sets up FunctionFS with only full-speed descriptors
(e.g., flags = FUNCTIONFS_HAS_FS_DESC) and the gadget operates at a
higher speed (such as USB_SPEED_HIGH or USB_SPEED_SUPER),
config_ep_by_speed() detects that the function lacks descriptors for
the current speed, logs a warning, and falls back to full-speed
descriptors. The endpoint is then successfully enabled via
usb_ep_enable(), and epfile-&amp;gt;ep becomes valid.&lt;/p&gt;
&lt;p&gt;However, when user space subsequently issues the FUNCTIONFS_ENDPOINT_DESC
ioctl to query the endpoint descriptor, ffs_epfile_ioctl() selects the
descriptor index solely based on gadget-&amp;gt;speed:&lt;/p&gt;
&lt;p&gt;switch (epfile-&amp;gt;ffs-&amp;gt;gadget-&amp;gt;speed) {
	case USB_SPEED_SUPER:
	case USB_SPEED_SUPER_PLUS:
		desc_idx = 2;
		break;
	case USB_SPEED_HIGH:
		desc_idx = 1;
		break;
	default:
		desc_idx = 0;
	}
	desc = epfile-&amp;gt;ep-&amp;gt;descs[desc_idx];
	memcpy(&amp;amp;desc1, desc, desc-&amp;gt;bLength);&lt;/p&gt;
&lt;p&gt;Because user space only supplied full-speed descriptors,
epfile-&amp;gt;ep-&amp;gt;descs[1] is NULL. Dereferencing desc-&amp;gt;bLength triggers an
immediate kernel NULL pointer dereference panic.&lt;/p&gt;
&lt;p&gt;Fix this by falling back through lower speed descriptors if the current
speed descriptor was not supplied, matching the fallback logic in
config_ep_by_speed() and historical f_fs behavior. If still missing,
fall back to epfile-&amp;gt;ep-&amp;gt;ep-&amp;gt;desc (the active descriptor), and return
-EIN…&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;usb: gadget: f_fs: Fix NULL pointer dereference in FUNCTIONFS_ENDPOINT_DESC&lt;/p&gt;
&lt;p&gt;When user space sets up FunctionFS with only full-speed descriptors
(e.g., flags = FUNCTIONFS_HAS_FS_DESC) and the gadget operates at a
higher speed (such as USB_SPEED_HIGH or USB_SPEED_SUPER),
config_ep_by_speed() detects that the function lacks descriptors for
the current speed, logs a warning, and falls back to full-speed
descriptors. The endpoint is then successfully enabled via
usb_ep_enable(), and epfile-&amp;gt;ep becomes valid.&lt;/p&gt;
&lt;p&gt;However, when user space subsequently issues the FUNCTIONFS_ENDPOINT_DESC
ioctl to query the endpoint descriptor, ffs_epfile_ioctl() selects the
descriptor index solely based on gadget-&amp;gt;speed:&lt;/p&gt;
&lt;p&gt;switch (epfile-&amp;gt;ffs-&amp;gt;gadget-&amp;gt;speed) {
	case USB_SPEED_SUPER:
	case USB_SPEED_SUPER_PLUS:
		desc_idx = 2;
		break;
	case USB_SPEED_HIGH:
		desc_idx = 1;
		break;
	default:
		desc_idx = 0;
	}
	desc = epfile-&amp;gt;ep-&amp;gt;descs[desc_idx];
	memcpy(&amp;amp;desc1, desc, desc-&amp;gt;bLength);&lt;/p&gt;
&lt;p&gt;Because user space only supplied full-speed descriptors,
epfile-&amp;gt;ep-&amp;gt;descs[1] is NULL. Dereferencing desc-&amp;gt;bLength triggers an
immediate kernel NULL pointer dereference panic.&lt;/p&gt;
&lt;p&gt;Fix this by falling back through lower speed descriptors if the current
speed descriptor was not supplied, matching the fallback logic in
config_ep_by_speed() and historical f_fs behavior. If still missing,
fall back to epfile-&amp;gt;ep-&amp;gt;ep-&amp;gt;desc (the active descriptor), and return
-EIN…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/cve-2026-98764</guid>
    </item>
  </channel>
</rss>
