{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2023-53518","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2025-10-01T11:39:39.407Z","datePublished":"2025-10-01T11:46:05.446Z","dateUpdated":"2026-08-05T09:14:35.040Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-08-05T09:14:35.040Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nPM / devfreq: Fix leak in devfreq_dev_release()\n\nsrcu_init_notifier_head() allocates resources that need to be released\nwith a srcu_cleanup_notifier_head() call.\n\nReported by kmemleak."}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","baseScore":7.8,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:L - The devfreq release path is reached only through local device-lifecycle operations — driver bind/unbind via sysfs, module load/unload, or a failed probe — with no remote or network-facing consumer of this code. There is no packet-driven or adjacent-network path into devfreq_dev_release().\nAC:L - The leak is deterministic — every devfreq device teardown unconditionally drops the srcu per-CPU allocations, so a repeated unbind/rebind loop reliably exhausts per-CPU memory. The attacker drives both the srcu grace-period activity (governor/notifier teardown) and the immediately following kfree(), so the dangling-work window is attacker-created rather than dependent on external state.\nPR:L - The trigger is a local device-management operation on the affected platform (GPU/UFS/bus devfreq drivers), consistent with how other driver teardown/unload memory-corruption issues are scored; no authentication to a remote service and no capability that is unreachable in practice on the affected embedded/Android deployments is needed.\nUI:N - The attacker performs the bind/unbind or module unload themselves in a loop; no victim action, mount, or file open is required for the leak or the dangling srcu work to occur.\nS:U - The leaked allocations and any resulting corruption are entirely within the kernel's own memory and security authority, with no crossing into a hypervisor, IOMMU, or other security domain.\nC:H - kfree()ing the devfreq object while the srcu_struct is still live leaves leaked per-CPU srcu_data with dangling ->ssp pointers and pending srcu work into freed slab memory, a use-after-free that can be groomed to read back kernel data from the reallocated object.\nI:H - The uncleaned srcu_struct embeds a delayed_work and per-CPU timers that can fire after the containing allocation is freed, causing srcu state-machine writes (locks, sequence counters, work_struct/timer list links) into memory an attacker can reallocate — a write primitive into a controlled heap object.\nA:H - Each teardown leaks srcu_usage, the srcu_node tree, and a per-CPU srcu_data array; per-CPU memory is a scarce vmalloc-backed resource, so repeated cycles exhaust it and cause system-wide allocation failures, and the dangling timer/work references can additionally oops the kernel."}]}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/devfreq/devfreq.c"],"versions":[{"version":"0fe3a66410a3ba96679be903f1e287d7a0a264a9","lessThan":"7462483446cb9986568ad7adae746ce5f18d2968","status":"affected","versionType":"git"},{"version":"0fe3a66410a3ba96679be903f1e287d7a0a264a9","lessThan":"64e6e0dc2d578c0a9e31cb4edd719f0a3ed98f6d","status":"affected","versionType":"git"},{"version":"0fe3a66410a3ba96679be903f1e287d7a0a264a9","lessThan":"29811f4b8255d4238cf326f3bb7129784766beab","status":"affected","versionType":"git"},{"version":"0fe3a66410a3ba96679be903f1e287d7a0a264a9","lessThan":"ab192e5e5d3b48415909a8408acfd007a607bcc0","status":"affected","versionType":"git"},{"version":"0fe3a66410a3ba96679be903f1e287d7a0a264a9","lessThan":"111bafa210ae546bee7644be730c42df9c35b66e","status":"affected","versionType":"git"},{"version":"0fe3a66410a3ba96679be903f1e287d7a0a264a9","lessThan":"8918025feb2f5f7c73f2495c158f22997e25cb02","status":"affected","versionType":"git"},{"version":"0fe3a66410a3ba96679be903f1e287d7a0a264a9","lessThan":"1640e9c72173911ad0fddb05012c01eafe082c4e","status":"affected","versionType":"git"},{"version":"0fe3a66410a3ba96679be903f1e287d7a0a264a9","lessThan":"3354c401c68d70567d1ef25d12f4e22a7813a3c6","status":"affected","versionType":"git"},{"version":"0fe3a66410a3ba96679be903f1e287d7a0a264a9","lessThan":"5693d077595de721f9ddbf9d37f40e5409707dfe","status":"affected","versionType":"git"}]},{"product":"Linux","vendor":"Linux","defaultStatus":"affected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/devfreq/devfreq.c"],"versions":[{"version":"4.7","status":"affected"},{"version":"0","lessThan":"4.7","status":"unaffected","versionType":"semver"},{"version":"4.14.326","lessThanOrEqual":"4.14.*","status":"unaffected","versionType":"semver"},{"version":"4.19.295","lessThanOrEqual":"4.19.*","status":"unaffected","versionType":"semver"},{"version":"5.4.257","lessThanOrEqual":"5.4.*","status":"unaffected","versionType":"semver"},{"version":"5.10.195","lessThanOrEqual":"5.10.*","status":"unaffected","versionType":"semver"},{"version":"5.15.132","lessThanOrEqual":"5.15.*","status":"unaffected","versionType":"semver"},{"version":"6.1.53","lessThanOrEqual":"6.1.*","status":"unaffected","versionType":"semver"},{"version":"6.4.16","lessThanOrEqual":"6.4.*","status":"unaffected","versionType":"semver"},{"version":"6.5.3","lessThanOrEqual":"6.5.*","status":"unaffected","versionType":"semver"},{"version":"6.6","lessThanOrEqual":"*","status":"unaffected","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.7","versionEndExcluding":"4.14.326"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.7","versionEndExcluding":"4.19.295"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.7","versionEndExcluding":"5.4.257"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.7","versionEndExcluding":"5.10.195"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.7","versionEndExcluding":"5.15.132"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.7","versionEndExcluding":"6.1.53"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.7","versionEndExcluding":"6.4.16"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.7","versionEndExcluding":"6.5.3"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.7","versionEndExcluding":"6.6"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/7462483446cb9986568ad7adae746ce5f18d2968"},{"url":"https://git.kernel.org/stable/c/64e6e0dc2d578c0a9e31cb4edd719f0a3ed98f6d"},{"url":"https://git.kernel.org/stable/c/29811f4b8255d4238cf326f3bb7129784766beab"},{"url":"https://git.kernel.org/stable/c/ab192e5e5d3b48415909a8408acfd007a607bcc0"},{"url":"https://git.kernel.org/stable/c/111bafa210ae546bee7644be730c42df9c35b66e"},{"url":"https://git.kernel.org/stable/c/8918025feb2f5f7c73f2495c158f22997e25cb02"},{"url":"https://git.kernel.org/stable/c/1640e9c72173911ad0fddb05012c01eafe082c4e"},{"url":"https://git.kernel.org/stable/c/3354c401c68d70567d1ef25d12f4e22a7813a3c6"},{"url":"https://git.kernel.org/stable/c/5693d077595de721f9ddbf9d37f40e5409707dfe"}],"title":"PM / devfreq: Fix leak in devfreq_dev_release()","x_generator":{"engine":"bippy-1.2.0"}}}}