{"id":"CVE-2022-49530","state":"PUBLISHED","title":"drm/amd/pm: fix double free in si_parse_power_table()","description":"In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/amd/pm: fix double free in si_parse_power_table()\n\nIn function si_parse_power_table(), array adev->pm.dpm.ps and its member\nis allocated. If the allocation of each member fails, the array itself\nis freed and returned with an error code. However, the array is later\nfreed again in si_dpm_fini() function which is called when the function\nreturns an error.\n\nThis leads to potential double free of the array adev->pm.dpm.ps, as\nwell as leak of its array members, since the members are not freed in\nthe allocation function and the array is not nulled when freed.\nIn addition adev->pm.dpm.num_ps, which keeps track of the allocated\narray member, is not updated until the member allocation is\nsuccessfully finished, this could also lead to either use after free,\nor uninitialized variable access in si_dpm_fini().\n\nFix this by postponing the free of the array until si_dpm_fini() and\nincrement adev->pm.dpm.num_ps everytime the array member is allocated.","publishedAt":"2025-02-26T02:13:51.057Z","updatedAt":"2026-08-05T08:55:26.829Z","severity":{"score":7.8,"label":"High","version":"3.1","vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","source":"Linux"},"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"841686df9f7d2942cfd94d024b8591fa3f74ef7c","status":"affected","lessThan":"2615464854505188f909d0c07c37a6623693b5c7","versionType":"git"},{"version":"841686df9f7d2942cfd94d024b8591fa3f74ef7c","status":"affected","lessThan":"6c5bdaa1325be7f04b79ea992ab216739192d342","versionType":"git"},{"version":"841686df9f7d2942cfd94d024b8591fa3f74ef7c","status":"affected","lessThan":"c0e811c4ccf3b42705976285e3a94cc82dea7300","versionType":"git"},{"version":"841686df9f7d2942cfd94d024b8591fa3f74ef7c","status":"affected","lessThan":"af832028af6f44c6c45645757079c4ed6884ade5","versionType":"git"},{"version":"841686df9f7d2942cfd94d024b8591fa3f74ef7c","status":"affected","lessThan":"ca1ce206894dd976275c78ee38dbc19873f22de9","versionType":"git"},{"version":"841686df9f7d2942cfd94d024b8591fa3f74ef7c","status":"affected","lessThan":"a5ce7051db044290b1a95045ff03c249005a3aa4","versionType":"git"},{"version":"841686df9f7d2942cfd94d024b8591fa3f74ef7c","status":"affected","lessThan":"fd2eff8b9dcbe469c3b7bbbc7083ab5ed94de07b","versionType":"git"},{"version":"841686df9f7d2942cfd94d024b8591fa3f74ef7c","status":"affected","lessThan":"43eb9b667b95f2a31c63e8949b0d2161b9be59c3","versionType":"git"},{"version":"841686df9f7d2942cfd94d024b8591fa3f74ef7c","status":"affected","lessThan":"f3fa2becf2fc25b6ac7cf8d8b1a2e4a86b3b72bd","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"4.9","status":"affected"},{"version":"0","status":"unaffected","lessThan":"4.9","versionType":"semver"},{"version":"4.9.318","status":"unaffected","lessThanOrEqual":"4.9.*","versionType":"semver"},{"version":"4.14.283","status":"unaffected","lessThanOrEqual":"4.14.*","versionType":"semver"},{"version":"4.19.247","status":"unaffected","lessThanOrEqual":"4.19.*","versionType":"semver"},{"version":"5.4.198","status":"unaffected","lessThanOrEqual":"5.4.*","versionType":"semver"},{"version":"5.10.121","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.46","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"5.17.14","status":"unaffected","lessThanOrEqual":"5.17.*","versionType":"semver"},{"version":"5.18.3","status":"unaffected","lessThanOrEqual":"5.18.*","versionType":"semver"},{"version":"5.19","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c"]}],"references":["https://git.kernel.org/stable/c/2615464854505188f909d0c07c37a6623693b5c7","https://git.kernel.org/stable/c/6c5bdaa1325be7f04b79ea992ab216739192d342","https://git.kernel.org/stable/c/c0e811c4ccf3b42705976285e3a94cc82dea7300","https://git.kernel.org/stable/c/af832028af6f44c6c45645757079c4ed6884ade5","https://git.kernel.org/stable/c/ca1ce206894dd976275c78ee38dbc19873f22de9","https://git.kernel.org/stable/c/a5ce7051db044290b1a95045ff03c249005a3aa4","https://git.kernel.org/stable/c/fd2eff8b9dcbe469c3b7bbbc7083ab5ed94de07b","https://git.kernel.org/stable/c/43eb9b667b95f2a31c63e8949b0d2161b9be59c3","https://git.kernel.org/stable/c/f3fa2becf2fc25b6ac7cf8d8b1a2e4a86b3b72bd"],"weaknesses":["CWE-415"],"ingestedAt":"2026-10-29T20:05:26.763Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2022/49xxx/CVE-2022-49530.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2022-49530","state":"PUBLISHED","datePublished":"2025-02-26T02:13:51.057Z","dateUpdated":"2026-08-05T08:55:26.829Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2025-02-26T02:08:31.588Z"},"containers":{"cna":{"title":"drm/amd/pm: fix double free in si_parse_power_table()","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/amd/pm: fix double free in si_parse_power_table()\n\nIn function si_parse_power_table(), array adev->pm.dpm.ps and its member\nis allocated. If the allocation of each member fails, the array itself\nis freed and returned with an error code. However, the array is later\nfreed again in si_dpm_fini() function which is called when the function\nreturns an error.\n\nThis leads to potential double free of the array adev->pm.dpm.ps, as\nwell as leak of its array members, since the members are not freed in\nthe allocation function and the array is not nulled when freed.\nIn addition adev->pm.dpm.num_ps, which keeps track of the allocated\narray member, is not updated until the member allocation is\nsuccessfully finished, this could also lead to either use after free,\nor uninitialized variable access in si_dpm_fini().\n\nFix this by postponing the free of the array until si_dpm_fini() and\nincrement adev->pm.dpm.num_ps everytime the array member is allocated."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"841686df9f7d2942cfd94d024b8591fa3f74ef7c","status":"affected","lessThan":"2615464854505188f909d0c07c37a6623693b5c7","versionType":"git"},{"version":"841686df9f7d2942cfd94d024b8591fa3f74ef7c","status":"affected","lessThan":"6c5bdaa1325be7f04b79ea992ab216739192d342","versionType":"git"},{"version":"841686df9f7d2942cfd94d024b8591fa3f74ef7c","status":"affected","lessThan":"c0e811c4ccf3b42705976285e3a94cc82dea7300","versionType":"git"},{"version":"841686df9f7d2942cfd94d024b8591fa3f74ef7c","status":"affected","lessThan":"af832028af6f44c6c45645757079c4ed6884ade5","versionType":"git"},{"version":"841686df9f7d2942cfd94d024b8591fa3f74ef7c","status":"affected","lessThan":"ca1ce206894dd976275c78ee38dbc19873f22de9","versionType":"git"},{"version":"841686df9f7d2942cfd94d024b8591fa3f74ef7c","status":"affected","lessThan":"a5ce7051db044290b1a95045ff03c249005a3aa4","versionType":"git"},{"version":"841686df9f7d2942cfd94d024b8591fa3f74ef7c","status":"affected","lessThan":"fd2eff8b9dcbe469c3b7bbbc7083ab5ed94de07b","versionType":"git"},{"version":"841686df9f7d2942cfd94d024b8591fa3f74ef7c","status":"affected","lessThan":"43eb9b667b95f2a31c63e8949b0d2161b9be59c3","versionType":"git"},{"version":"841686df9f7d2942cfd94d024b8591fa3f74ef7c","status":"affected","lessThan":"f3fa2becf2fc25b6ac7cf8d8b1a2e4a86b3b72bd","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"4.9","status":"affected"},{"version":"0","status":"unaffected","lessThan":"4.9","versionType":"semver"},{"version":"4.9.318","status":"unaffected","lessThanOrEqual":"4.9.*","versionType":"semver"},{"version":"4.14.283","status":"unaffected","lessThanOrEqual":"4.14.*","versionType":"semver"},{"version":"4.19.247","status":"unaffected","lessThanOrEqual":"4.19.*","versionType":"semver"},{"version":"5.4.198","status":"unaffected","lessThanOrEqual":"5.4.*","versionType":"semver"},{"version":"5.10.121","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.46","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"5.17.14","status":"unaffected","lessThanOrEqual":"5.17.*","versionType":"semver"},{"version":"5.18.3","status":"unaffected","lessThanOrEqual":"5.18.*","versionType":"semver"},{"version":"5.19","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/2615464854505188f909d0c07c37a6623693b5c7"},{"url":"https://git.kernel.org/stable/c/6c5bdaa1325be7f04b79ea992ab216739192d342"},{"url":"https://git.kernel.org/stable/c/c0e811c4ccf3b42705976285e3a94cc82dea7300"},{"url":"https://git.kernel.org/stable/c/af832028af6f44c6c45645757079c4ed6884ade5"},{"url":"https://git.kernel.org/stable/c/ca1ce206894dd976275c78ee38dbc19873f22de9"},{"url":"https://git.kernel.org/stable/c/a5ce7051db044290b1a95045ff03c249005a3aa4"},{"url":"https://git.kernel.org/stable/c/fd2eff8b9dcbe469c3b7bbbc7083ab5ed94de07b"},{"url":"https://git.kernel.org/stable/c/43eb9b667b95f2a31c63e8949b0d2161b9be59c3"},{"url":"https://git.kernel.org/stable/c/f3fa2becf2fc25b6ac7cf8d8b1a2e4a86b3b72bd"}],"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 bug is reached only during local amdgpu PCI probe (amdgpu_device_ip_init → si_dpm_sw_init → si_dpm_init → si_parse_power_table) on Southern Islands GPUs; suspend/resume and GPU reset use hw callbacks and do not re-parse the power table, and no network path exists.\nAC:L - A local attacker can induce system-wide memory pressure so a mid-loop GFP_KERNEL kzalloc of struct si_ps fails; once that happens, the premature kfree of adev->pm.dpm.ps followed by si_dpm_fini’s second free is deterministic with no uncontrolled race.\nPR:L - Scored from an unprivileged local account on a shared system with an affected SI GPU under the higher-severity interpretation, consistent with sibling double-frees CVE-2023-52691 and CVE-2023-52469; real root is not required for the attacker’s privileges prior to exploitation.\nUI:N - No separate victim action such as opening a file or mounting a device is required; the flaw is triggered by driver initialization under attacker-influenced memory conditions.\nS:U - Impact remains within the host kernel’s security authority as standard kernel heap corruption / privilege escalation, with no VM escape, IOMMU bypass, or other security-boundary crossing.\nC:H - Double-free of the adev->pm.dpm.ps heap object (with a dangling non-NULL pointer) is UAF-class memory corruption; reclaiming the freed slab enables arbitrary kernel read primitives.\nI:H - Double-free freelist corruption in the kernel allocator can be abused for overlapping objects and arbitrary write / control-flow hijacking, enabling full integrity compromise and privilege escalation.\nA:H - The double-free reliably corrupts kernel heap state and can oops/panic the kernel even when not fully exploited for code execution, which is Availability High under kernel CVSS guidance."}]}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-08-05T08:55:26.829Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.9","versionEndExcluding":"4.9.318"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.9","versionEndExcluding":"4.14.283"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.9","versionEndExcluding":"4.19.247"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.9","versionEndExcluding":"5.4.198"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.9","versionEndExcluding":"5.10.121"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.9","versionEndExcluding":"5.15.46"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.9","versionEndExcluding":"5.17.14"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.9","versionEndExcluding":"5.18.3"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.9","versionEndExcluding":"5.19"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"cvssV3_1":{"scope":"UNCHANGED","version":"3.1","baseScore":7.8,"attackVector":"LOCAL","baseSeverity":"HIGH","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","integrityImpact":"HIGH","userInteraction":"NONE","attackComplexity":"LOW","availabilityImpact":"HIGH","privilegesRequired":"LOW","confidentialityImpact":"HIGH"}},{"other":{"type":"ssvc","content":{"id":"CVE-2022-49530","role":"CISA Coordinator","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"total"}],"version":"2.0.3","timestamp":"2025-10-01T19:37:58.672887Z"}}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-415","lang":"en","type":"CWE","description":"CWE-415 Double Free"}]}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2025-10-01T19:46:41.373Z"}}]}}}