Description
In the Linux kernel, the following vulnerability has been resolved: usb: gadget: aspeed_udc: check endpoint DMA allocation ast_udc_probe() allocates a coherent DMA buffer used as the backing store for endpoint buffers. ast_udc_init_ep() derives per-endpoint buffer pointers from udc->ep0_buf, so a failed allocation is dereferenced during probe. Check the allocation before endpoint setup. The existing probe error path called ast_udc_remove(), which unregisters the gadget unconditionally and is not safe before usb_add_gadget_udc() succeeds. Add a local cleanup helper for probe failures so pre-registration failures only unwind the resources that were actually initialized. This was found by a local static analysis checker for unchecked allocator returns while scanning Linux 6.16. The change was checked by applying it to current mainline and by running checkpatch. I do not have access to Aspeed UDC hardware, so no runtime testing was performed.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
055276c1320564b0192b3af323b8cc67f9b665e1 to < d7ae1a48e70e9c3451b7dc7bc3896c82884bc4dfaffected055276c1320564b0192b3af323b8cc67f9b665e1 to < 4aaad88f857498ed1294f061f0b25d27ae891c55affected055276c1320564b0192b3af323b8cc67f9b665e1 to < 6182e708e2e1f55521c8a01d7535630ecc2d7df9affected055276c1320564b0192b3af323b8cc67f9b665e1 to < ff6e88e29965bd06f640e59acdcf0bbf04a7f55caffected055276c1320564b0192b3af323b8cc67f9b665e1 to < 9e6f57107c1886052d4baaa047a2bc3d0e91be5daffected055276c1320564b0192b3af323b8cc67f9b665e1 to < 97cee53a94be3bd4fd8fbed6071bd2f32dad1ab1affected
Linux Linux
Default version status: affected
6.0affected0 to < 6.0unaffected6.1.188 to ≤ 6.1.*unaffected6.6.157 to ≤ 6.6.*unaffected6.12.110 to ≤ 6.12.*unaffected6.18.52 to ≤ 6.18.*unaffected7.2.6 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/d7ae1a48e70e9c3451b7dc7bc3896c82884bc4df ↗
- https://git.kernel.org/stable/c/4aaad88f857498ed1294f061f0b25d27ae891c55 ↗
- https://git.kernel.org/stable/c/6182e708e2e1f55521c8a01d7535630ecc2d7df9 ↗
- https://git.kernel.org/stable/c/ff6e88e29965bd06f640e59acdcf0bbf04a7f55c ↗
- https://git.kernel.org/stable/c/9e6f57107c1886052d4baaa047a2bc3d0e91be5d ↗
- https://git.kernel.org/stable/c/97cee53a94be3bd4fd8fbed6071bd2f32dad1ab1 ↗