{"id":"CVE-2025-40315","state":"PUBLISHED","title":"usb: gadget: f_fs: Fix epfile null pointer access after ep enable.","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nusb: gadget: f_fs: Fix epfile null pointer access after ep enable.\n\nA race condition occurs when ffs_func_eps_enable() runs concurrently\nwith ffs_data_reset(). The ffs_data_clear() called in ffs_data_reset()\nsets ffs->epfiles to NULL before resetting ffs->eps_count to 0, leading\nto a NULL pointer dereference when accessing epfile->ep in\nffs_func_eps_enable() after successful usb_ep_enable().\n\nThe ffs->epfiles pointer is set to NULL in both ffs_data_clear() and\nffs_data_close() functions, and its modification is protected by the\nspinlock ffs->eps_lock. And the whole ffs_func_eps_enable() function\nis also protected by ffs->eps_lock.\n\nThus, add NULL pointer handling for ffs->epfiles in the\nffs_func_eps_enable() function to fix issues","publishedAt":"2025-12-08T00:46:41.896Z","updatedAt":"2026-05-23T16:02:03.665Z","severity":null,"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"c9fc422c9a43e3d58d246334a71f3390401781dc","status":"affected","lessThan":"b00d2572c16e8e59e979960d3383c2ae9cebd195","versionType":"git"},{"version":"0042178a69eb77a979e36a50dcce9794a3140ef8","status":"affected","lessThan":"1c0dbd240be3f87cac321b14e17979b7e9cb6a8f","versionType":"git"},{"version":"72a8aee863af099d4434314c4536d6c9a61dcf3c","status":"affected","lessThan":"9ec40fba7357df2d36f4c2e2f3b9b1a4fba0a272","versionType":"git"},{"version":"ebe2b1add1055b903e2acd86b290a85297edc0b3","status":"affected","lessThan":"c53e90563bc148e4e0ad09fe130ba2246d426ea6","versionType":"git"},{"version":"ebe2b1add1055b903e2acd86b290a85297edc0b3","status":"affected","lessThan":"fc1141a530dfc91f0ee19b7f422a2d24829584bc","versionType":"git"},{"version":"ebe2b1add1055b903e2acd86b290a85297edc0b3","status":"affected","lessThan":"d62b808d5c68a931ad0849a00a5e3be3dd7e0019","versionType":"git"},{"version":"ebe2b1add1055b903e2acd86b290a85297edc0b3","status":"affected","lessThan":"30880e9df27332403dd638a82c27921134b3630b","versionType":"git"},{"version":"ebe2b1add1055b903e2acd86b290a85297edc0b3","status":"affected","lessThan":"cfd6f1a7b42f62523c96d9703ef32b0dbc495ba4","versionType":"git"},{"version":"32048f4be071f9a6966744243f1786f45bb22dc2","status":"affected","versionType":"git"},{"version":"cfe5f6fd335d882bcc829a1c8a7d462a455c626e","status":"affected","versionType":"git"},{"version":"3e078b18753669615301d946297bafd69294ad2c","status":"affected","versionType":"git"},{"version":"5.4.180","status":"affected","lessThan":"5.4.302","versionType":"semver"},{"version":"5.10.101","status":"affected","lessThan":"5.10.247","versionType":"semver"},{"version":"5.15.24","status":"affected","lessThan":"5.15.197","versionType":"semver"},{"version":"4.14.267","status":"affected","lessThan":"4.15","versionType":"semver"},{"version":"4.19.230","status":"affected","lessThan":"4.20","versionType":"semver"},{"version":"5.16.10","status":"affected","lessThan":"5.17","versionType":"semver"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/usb/gadget/function/f_fs.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.17","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.17","versionType":"semver"},{"version":"5.4.302","status":"unaffected","lessThanOrEqual":"5.4.*","versionType":"semver"},{"version":"5.10.247","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.197","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.159","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.117","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.58","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.17.8","status":"unaffected","lessThanOrEqual":"6.17.*","versionType":"semver"},{"version":"6.18","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/usb/gadget/function/f_fs.c"]}],"references":["https://git.kernel.org/stable/c/b00d2572c16e8e59e979960d3383c2ae9cebd195","https://git.kernel.org/stable/c/1c0dbd240be3f87cac321b14e17979b7e9cb6a8f","https://git.kernel.org/stable/c/9ec40fba7357df2d36f4c2e2f3b9b1a4fba0a272","https://git.kernel.org/stable/c/c53e90563bc148e4e0ad09fe130ba2246d426ea6","https://git.kernel.org/stable/c/fc1141a530dfc91f0ee19b7f422a2d24829584bc","https://git.kernel.org/stable/c/d62b808d5c68a931ad0849a00a5e3be3dd7e0019","https://git.kernel.org/stable/c/30880e9df27332403dd638a82c27921134b3630b","https://git.kernel.org/stable/c/cfd6f1a7b42f62523c96d9703ef32b0dbc495ba4"],"weaknesses":[],"ingestedAt":"2026-10-29T20:09:09.358Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2025/40xxx/CVE-2025-40315.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2025-40315","state":"PUBLISHED","datePublished":"2025-12-08T00:46:41.896Z","dateUpdated":"2026-05-23T16:02:03.665Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2025-04-16T07:20:57.186Z"},"containers":{"cna":{"title":"usb: gadget: f_fs: Fix epfile null pointer access after ep enable.","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nusb: gadget: f_fs: Fix epfile null pointer access after ep enable.\n\nA race condition occurs when ffs_func_eps_enable() runs concurrently\nwith ffs_data_reset(). The ffs_data_clear() called in ffs_data_reset()\nsets ffs->epfiles to NULL before resetting ffs->eps_count to 0, leading\nto a NULL pointer dereference when accessing epfile->ep in\nffs_func_eps_enable() after successful usb_ep_enable().\n\nThe ffs->epfiles pointer is set to NULL in both ffs_data_clear() and\nffs_data_close() functions, and its modification is protected by the\nspinlock ffs->eps_lock. And the whole ffs_func_eps_enable() function\nis also protected by ffs->eps_lock.\n\nThus, add NULL pointer handling for ffs->epfiles in the\nffs_func_eps_enable() function to fix issues"}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"c9fc422c9a43e3d58d246334a71f3390401781dc","status":"affected","lessThan":"b00d2572c16e8e59e979960d3383c2ae9cebd195","versionType":"git"},{"version":"0042178a69eb77a979e36a50dcce9794a3140ef8","status":"affected","lessThan":"1c0dbd240be3f87cac321b14e17979b7e9cb6a8f","versionType":"git"},{"version":"72a8aee863af099d4434314c4536d6c9a61dcf3c","status":"affected","lessThan":"9ec40fba7357df2d36f4c2e2f3b9b1a4fba0a272","versionType":"git"},{"version":"ebe2b1add1055b903e2acd86b290a85297edc0b3","status":"affected","lessThan":"c53e90563bc148e4e0ad09fe130ba2246d426ea6","versionType":"git"},{"version":"ebe2b1add1055b903e2acd86b290a85297edc0b3","status":"affected","lessThan":"fc1141a530dfc91f0ee19b7f422a2d24829584bc","versionType":"git"},{"version":"ebe2b1add1055b903e2acd86b290a85297edc0b3","status":"affected","lessThan":"d62b808d5c68a931ad0849a00a5e3be3dd7e0019","versionType":"git"},{"version":"ebe2b1add1055b903e2acd86b290a85297edc0b3","status":"affected","lessThan":"30880e9df27332403dd638a82c27921134b3630b","versionType":"git"},{"version":"ebe2b1add1055b903e2acd86b290a85297edc0b3","status":"affected","lessThan":"cfd6f1a7b42f62523c96d9703ef32b0dbc495ba4","versionType":"git"},{"version":"32048f4be071f9a6966744243f1786f45bb22dc2","status":"affected","versionType":"git"},{"version":"cfe5f6fd335d882bcc829a1c8a7d462a455c626e","status":"affected","versionType":"git"},{"version":"3e078b18753669615301d946297bafd69294ad2c","status":"affected","versionType":"git"},{"version":"5.4.180","status":"affected","lessThan":"5.4.302","versionType":"semver"},{"version":"5.10.101","status":"affected","lessThan":"5.10.247","versionType":"semver"},{"version":"5.15.24","status":"affected","lessThan":"5.15.197","versionType":"semver"},{"version":"4.14.267","status":"affected","lessThan":"4.15","versionType":"semver"},{"version":"4.19.230","status":"affected","lessThan":"4.20","versionType":"semver"},{"version":"5.16.10","status":"affected","lessThan":"5.17","versionType":"semver"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/usb/gadget/function/f_fs.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.17","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.17","versionType":"semver"},{"version":"5.4.302","status":"unaffected","lessThanOrEqual":"5.4.*","versionType":"semver"},{"version":"5.10.247","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.197","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.159","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.117","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.58","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.17.8","status":"unaffected","lessThanOrEqual":"6.17.*","versionType":"semver"},{"version":"6.18","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/usb/gadget/function/f_fs.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/b00d2572c16e8e59e979960d3383c2ae9cebd195"},{"url":"https://git.kernel.org/stable/c/1c0dbd240be3f87cac321b14e17979b7e9cb6a8f"},{"url":"https://git.kernel.org/stable/c/9ec40fba7357df2d36f4c2e2f3b9b1a4fba0a272"},{"url":"https://git.kernel.org/stable/c/c53e90563bc148e4e0ad09fe130ba2246d426ea6"},{"url":"https://git.kernel.org/stable/c/fc1141a530dfc91f0ee19b7f422a2d24829584bc"},{"url":"https://git.kernel.org/stable/c/d62b808d5c68a931ad0849a00a5e3be3dd7e0019"},{"url":"https://git.kernel.org/stable/c/30880e9df27332403dd638a82c27921134b3630b"},{"url":"https://git.kernel.org/stable/c/cfd6f1a7b42f62523c96d9703ef32b0dbc495ba4"}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-05-23T16:02:03.665Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.4.180","versionEndExcluding":"5.4.302"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10.101","versionEndExcluding":"5.10.247"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.15.24","versionEndExcluding":"5.15.197"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.17","versionEndExcluding":"6.1.159"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.17","versionEndExcluding":"6.6.117"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.17","versionEndExcluding":"6.12.58"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.17","versionEndExcluding":"6.17.8"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.17","versionEndExcluding":"6.18"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.14.267"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.19.230"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.16.10"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}