In the Linux kernel, the following vulnerability has been resolved:
usb: gadget: f_fs: copy only received bytes on short ep0 read
ffs_ep0_read() allocates its control-OUT data buffer with kmalloc() (not kzalloc) at the Length value from the Setup packet, then copies that full len to userspace regardless of how many bytes were actually received:
data = kmalloc(len, GFP_KERNEL); ... ret = __ffs_ep0_queue_wait(ffs, data, len); if ((ret > 0) && (copy_to_user(buf, data, len))) ret = -EFAULT;
__ffs_ep0_queue_wait() returns req->actual, which on a short control OUT transfer is strictly less than len. The copy_to_user() call still copies len bytes, so on a short OUT the last (len - ret) bytes of the kmalloc() buffer -- uninitialised slab residue -- are delivered to the FunctionFS daemon.
Short ep0 OUT completions are specified USB control-transfer behavior and are produced by in-tree UDCs:
* dwc2 continues on req->actual < req->length for ep0 DATA OUT (short-not-ok is the only ep0-OUT stall path). * aspeed_udc ends ep0 OUT on rx_len < ep->ep.maxpacket. * renesas_usbf logs "ep0 short packet" and completes the request. * dwc3 stalls on short IN but not on short OUT.
A short ep0 OUT is therefore not evidence of a broken UDC; it is a normal condition f_fs has to cope with. The sibling gadgetfs implementation in drivers/usb/gadget/legacy/inode.c already does this correctly via min(len, dev->req->actual) before copy_to_user(). This patch brings f_fs.c to the same safe pattern rather than trimming at a defensive layer.
The bug is reached from the FunctionFS device node, which in real deployments is owned by the privileged gadget daemon (adbd, UMS, composite gadget services, etc.); it is not reachable from unprivileged userspace. Linux host stacks normally reject short-wLength control OUTs before they reach the gadget, so reproducing this required a build that bypasses that host-side check. With the bypass in place, a 1-byte payload on a 64-byte Setup produces 63 bytes of non-canary slab residue in the daemon's read buffer.
Fix by copying only ret (actually received) bytes to userspace.
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Debian | — | Upgrade linux | Jul 20, 2026 | Jul 20, 2026 |
| Ubuntu | — | Upgrade linux-image-oracle-6.8Upgrade linux-image-5.15.0-1080-xilinx-zynqmpUpgrade linux-image-7.0.0-1016-nvidia-64kUpgrade linux-image-aws-lts-24.04Upgrade linux-image-aws-7.0Upgrade linux-image-gcp-64k-7.0Upgrade linux-image-gke-6.8Upgrade linux-image-5.15.0-1112-nvidia-lowlatencyUpgrade linux-image-aws-fips-5.15Upgrade linux-image-xilinx-zynqmpUpgrade linux-image-gcpUpgrade linux-image-raspi-realtime-7.0Upgrade linux-image-5.15.0-1112-nvidiaUpgrade linux-image-gcp-5.15Upgrade linux-image-azure-fde-5.15Upgrade linux-image-aws-5.15Upgrade linux-image-azure-cvmUpgrade linux-image-virtual-6.8Upgrade linux-image-5.15.0-1117-aws-64kUpgrade linux-image-lowlatency-64k-5.15Upgrade linux-image-raspiUpgrade linux-image-realtimeUpgrade linux-image-6.8.0-1063-oracle-64kUpgrade linux-image-nvidia-bosUpgrade linux-image-5.15.0-1122-azure-fdeUpgrade linux-image-oem-20.04cUpgrade linux-image-gcp-lts-24.04Upgrade linux-image-5.15.0-1109-kvmUpgrade linux-image-5.15.0-198-generic-lpaeUpgrade linux-image-6.8.0-1051-gkeopUpgrade linux-image-gkeUpgrade linux-image-lowlatency-64k-6.8Upgrade linux-image-6.8.0-146-fipsUpgrade linux-image-7.0.0-1011-oracle-64kUpgrade linux-image-6.8.0-1066-ibmUpgrade linux-image-gcp-64k-6.8Upgrade linux-image-generic-hwe-20.04Upgrade linux-image-gke-64kUpgrade linux-image-6.8.0-1064-nvidiaUpgrade linux-image-oracle-64kUpgrade linux-image-5.15.0-195-lowlatencyUpgrade linux-image-oracleUpgrade linux-image-azure-7.0Upgrade linux-image-azure-fips-6.8Upgrade linux-image-gcp-fips-5.15Upgrade linux-image-realtime-hwe-22.04Upgrade linux-image-virtual-5.15Upgrade linux-image-nvidia-lowlatency-64k-6.8Upgrade linux-image-virtual-hwe-20.04Upgrade linux-image-oem-20.04dUpgrade linux-image-7.0.0-1016-nvidiaUpgrade linux-image-azureUpgrade linux-image-5.15.0-198-fipsUpgrade linux-image-generic-64k-6.8Upgrade linux-image-raspi-7.0Upgrade linux-image-azure-5.15Upgrade linux-image-realtime-5.15Upgrade linux-image-aws-64kUpgrade linux-image-aws-64k-6.8Upgrade linux-image-nvidia-bos-64kUpgrade linux-image-7.0.0-1011-oracleUpgrade linux-image-6.8.0-146-generic-64kUpgrade linux-image-6.8.1-1061-realtimeUpgrade linux-image-6.8.0-1064-nvidia-lowlatency-64kUpgrade linux-image-7.0.0-1008-oracleUpgrade linux-image-oracle-lts-22.04Upgrade linux-image-xilinx-zynqmp-5.15Upgrade linux-image-5.15.0-1117-aws-fipsUpgrade linux-image-7.0.0-1014-azureUpgrade linux-image-gcp-64kUpgrade linux-image-nvidia-6.8Upgrade linux-image-awsUpgrade linux-image-oem-20.04Upgrade linux-image-6.8.0-146-lowlatencyUpgrade linux-image-oracle-5.15Upgrade linux-image-7.0.0-1015-raspiUpgrade linux-image-azure-fipsUpgrade linux-image-6.8.0-1066-aws-64kUpgrade linux-image-gkeop-5.15Upgrade linux-image-gcp-6.8Upgrade linux-image-6.8.0-1069-azure-fipsUpgrade linux-image-generic-64k-5.15Upgrade linux-image-6.8.0-1066-aws-fipsUpgrade linux-image-kvmUpgrade linux-image-6.8.0-1064-nvidia-64kUpgrade linux-image-aws-64k-lts-24.04Upgrade linux-image-gke-64k-6.8Upgrade linux-image-ibm-lts-24.04Upgrade linux-image-aws-fips-6.8Upgrade linux-image-nvidia-64k-hwe-26.04Upgrade linux-image-nvidia-hwe-22.04Upgrade linux-image-nvidia-lowlatencyUpgrade linux-image-azure-fde-6.8Upgrade linux-image-realtime-6.8.1Upgrade linux-image-generic-lpae-hwe-20.04Upgrade linux-image-intel-iot-realtime-5.15Upgrade linux-image-azure-6.8Upgrade linux-image-lowlatency-5.15Upgrade linux-image-nvidia-64kUpgrade linux-image-5.15.0-1118-gcpUpgrade linux-image-laptop-23.10Upgrade linux-image-gcp-lts-22.04Upgrade linux-image-aws-6.8Upgrade linux-image-6.8.0-1070-gcp-64kUpgrade linux-image-aws-64k-7.0Upgrade linux-image-6.8.0-1070-gcpUpgrade linux-image-7.0.0-1009-aws-64kUpgrade linux-image-6.8.0-1066-awsUpgrade linux-image-nvidia-bos-7.0Upgrade linux-image-gcp-fips-6.8Upgrade linux-image-gcp-7.0Upgrade linux-image-gcp-64k-lts-24.04Upgrade linux-image-oracle-64k-6.8Upgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-6.8.0-1065-gke-64kUpgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-5.15.0-198-generic-64kUpgrade linux-image-ibm-5.15Upgrade linux-image-generic-6.8Upgrade linux-image-6.8.0-146-genericUpgrade linux-image-5.15.0-1116-realtimeUpgrade linux-image-raspi-realtimeUpgrade linux-image-nvidia-7.0Upgrade linux-image-azure-fde-lts-24.04Upgrade linux-image-6.8.0-146-lowlatency-64kUpgrade linux-image-7.0.0-1011-gcpUpgrade linux-image-6.8.0-1063-oracleUpgrade linux-image-lowlatency-6.8Upgrade linux-image-5.15.0-1123-azure-fipsUpgrade linux-image-5.15.0-1100-gkeopUpgrade linux-image-kvm-5.15Upgrade linux-image-6.8.0-1068-azure-fdeUpgrade linux-image-5.15.0-1117-awsUpgrade linux-image-oracle-64k-7.0Upgrade linux-image-nvidia-bos-64k-7.0Upgrade linux-image-5.15.0-1123-azureUpgrade linux-image-6.8.0-1064-nvidia-lowlatencyUpgrade linux-image-intel-iotg-5.15Upgrade linux-image-6.8.0-1070-gcp-fipsUpgrade linux-image-5.15.0-1118-gcp-fipsUpgrade linux-image-5.15.0-1113-gkeUpgrade linux-image-5.15.0-1111-ibmUpgrade linux-image-5.15.0-1109-intel-iot-realtimeUpgrade linux-image-oracle-lts-24.04Upgrade linux-image-oracle-64k-lts-24.04Upgrade linux-image-nvidia-lowlatency-5.15Upgrade linux-image-lowlatency-64kUpgrade linux-image-gkeopUpgrade linux-image-azure-lts-24.04Upgrade linux-image-azure-lts-22.04Upgrade linux-image-azure-fde-7.0Upgrade linux-image-7.0.0-1015-raspi-realtimeUpgrade linux-image-aws-64k-5.15Upgrade linux-image-7.0.0-1010-ibmUpgrade linux-image-7.0.0-1008-oracle-64kUpgrade linux-image-intel-iot-realtimeUpgrade linux-image-intelUpgrade linux-image-ibm-6.8Upgrade linux-image-gkeop-6.8Upgrade linux-image-generic-64kUpgrade linux-image-6.8.0-1070-azureUpgrade linux-image-nvidia-lowlatency-6.8Upgrade linux-image-oem-20.04bUpgrade linux-image-nvidia-hwe-26.04Upgrade linux-image-nvidia-5.15Upgrade linux-image-intel-iotgUpgrade linux-image-ibm-classicUpgrade linux-image-5.15.0-195-lowlatency-64kUpgrade linux-image-generic-5.15Upgrade linux-image-generic-64k-hwe-20.04Upgrade linux-image-genericUpgrade linux-image-gcp-fipsUpgrade linux-image-fips-5.15Upgrade linux-image-azure-fips-5.15Upgrade linux-image-7.0.0-1010-azureUpgrade linux-image-generic-lpae-5.15Upgrade linux-image-azure-fdeUpgrade linux-image-aws-lts-22.04Upgrade linux-image-generic-lpaeUpgrade linux-image-6.8.0-1065-gkeUpgrade linux-image-5.15.0-1114-oracleUpgrade linux-image-virtualUpgrade linux-image-oracle-7.0Upgrade linux-image-nvidia-64k-6.8Upgrade linux-image-lowlatency-hwe-20.04Upgrade linux-image-ibmUpgrade linux-image-aws-64k-lts-22.04Upgrade linux-image-7.0.0-2016-nvidia-bos-64kUpgrade linux-image-7.0.0-1009-azure-fdeUpgrade linux-image-5.15.0-198-genericUpgrade linux-image-nvidia-64k-7.0Upgrade linux-image-nvidiaUpgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-lowlatency-64k-hwe-20.04Upgrade linux-image-lowlatencyUpgrade linux-image-ibm-7.0Upgrade linux-image-fips-6.8Upgrade linux-image-fipsUpgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-7.0.0-1011-gcp-64kUpgrade linux-image-7.0.0-2016-nvidia-bosUpgrade linux-image-5.15.0-1112-intel-iotgUpgrade linux-image-7.0.0-1009-awsUpgrade linux-image-gke-5.15Upgrade linux-image-aws-fips | Jul 21, 2026 | Jul 20, 2026 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Jul 27, 2026 | Jul 19, 2026 |
With curated Threat Intelligence, you can see which vulnerabilities truly put you at risk, prioritize what matters most, and act before attackers do.
Explore Intelligence Hub