{"id":"CVE-2026-64328","summary":"usb: gadget: f_fs: Fix DMA fence leak","details":"In the Linux kernel, the following vulnerability has been resolved:\n\nusb: gadget: f_fs: Fix DMA fence leak\n\nIn ffs_dmabuf_transfer(), a ffs_dma_fence object is kmalloc'd, with the\nunderlying dma_fence later initialized by dma_fence_init(), which sets\nits kref counter to 1. Then, dma_resv_add_fence() gets a second\nreference, and a pointer to the ffs_dma_fence is passed as the\nusb_request's \"context\" field.\n\nThe dma-resv mechanism will manage the second reference, but the first\nreference is never properly released; the ffs_dmabuf_cleanup() function\ndecreases the reference count, but only to balance with the reference\ngrab in ffs_dmabuf_signal_done().\n\nThe code will then slowly leak memory as more ffs_dma_fence objects are\ncreated without being ever freed.\n\nAddress this issue by transferring ownership of the fence to the DMA\nreservation object, by calling dma_fence_put() right after\ndma_resv_add_fence(). The ffs_dma_fence then gets properly discarded\nafter being signalled.","modified":"2026-07-27T04:03:21.479497557Z","published":"2026-07-25T08:49:56.340Z","database_specific":{"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/64xxx/CVE-2026-64328.json","cna_assigner":"Linux"},"references":[{"type":"WEB","url":"https://git.kernel.org/stable/c/0cae3d6109427c455bad0a18dfb3e2a91657e38a"},{"type":"WEB","url":"https://git.kernel.org/stable/c/b7475b2dce5e121e687280ba5732ccefe77ffd2f"},{"type":"WEB","url":"https://git.kernel.org/stable/c/baa6b6068a3f2bf2ed525a1cb37975905dadc658"},{"type":"WEB","url":"https://git.kernel.org/stable/c/e086c16962a1b0142e2675610e9c06fcfcd4c3a8"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/64xxx/CVE-2026-64328.json"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-64328"},{"type":"PACKAGE","url":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","events":[{"introduced":"7b07a2a7ca02a20124b552be96c5a56910795488"},{"fixed":"b7475b2dce5e121e687280ba5732ccefe77ffd2f"},{"fixed":"e086c16962a1b0142e2675610e9c06fcfcd4c3a8"},{"fixed":"0cae3d6109427c455bad0a18dfb3e2a91657e38a"},{"fixed":"baa6b6068a3f2bf2ed525a1cb37975905dadc658"}]}],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-64328.json"}},{"package":{"name":"Kernel","ecosystem":"Linux"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"6.9.0"},{"fixed":"6.12.96"}]},{"type":"ECOSYSTEM","events":[{"introduced":"6.13.0"},{"fixed":"6.18.39"}]},{"type":"ECOSYSTEM","events":[{"introduced":"6.19.0"},{"fixed":"7.1.4"}]}],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-64328.json"}}],"schema_version":"1.7.5"}