{"api_version":"1","generated_at":"2026-06-27T07:02:35+00:00","cve":"CVE-2026-53308","urls":{"html":"https://cve.report/CVE-2026-53308","api":"https://cve.report/api/cve/CVE-2026-53308.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-53308","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-53308"},"summary":{"title":"power: supply: max77705: Free allocated workqueue and fix removal order","description":"In the Linux kernel, the following vulnerability has been resolved:\n\npower: supply: max77705: Free allocated workqueue and fix removal order\n\nUse devm interface for allocating workqueue to fix two bugs at the same\ntime:\n\n1. Driver leaks the memory on remove(), because the workqueue is not\n   destroyed.\n\n2. Driver allocates workqueue and then registers interrupt handlers\n   with devm interface.  This means that probe error paths will not use a\n   reversed order, but first destroy the workqueue and then, via devm\n   release handlers, free the interrupt.\n\n   The interrupt handler schedules work on this exact workqueue, thus if\n   interrupt is hit in this short time window - after destroying\n   workqueue, but before devm() frees the interrupt - the schedulled\n   work will lead to use of freed memory.\n\nChange is not equivalent in the workqueue itself: use non-legacy API\nwhich does not set (__WQ_LEGACY | WQ_MEM_RECLAIM).  The workqueue is\nused to update power supply (power_supply_changed()) status, thus there\nis no point to run it for memory reclaim.  Note that dev_name() is not\ndirectly used in second argument to prevent possible unlikely parsing\nany \"%\" character in device name as format.","state":"PUBLISHED","assigner":"Linux","published_at":"2026-06-26 20:17:24","updated_at":"2026-06-26 20:17:24"},"problem_types":[],"metrics":[],"references":[{"url":"https://git.kernel.org/stable/c/b98e4e57e34d099a8f846fa54749654082975ea0","name":"https://git.kernel.org/stable/c/b98e4e57e34d099a8f846fa54749654082975ea0","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/1e668baadefb16e81269dbfebf3ffc2672e3a3bb","name":"https://git.kernel.org/stable/c/1e668baadefb16e81269dbfebf3ffc2672e3a3bb","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-53308","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-53308","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected a6a494c8e3ce1fe84aac538b087a4cab868ed83f b98e4e57e34d099a8f846fa54749654082975ea0 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected a6a494c8e3ce1fe84aac538b087a4cab868ed83f 1e668baadefb16e81269dbfebf3ffc2672e3a3bb git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 6.15","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.15 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.0.10 7.0.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.1 * original_commit_for_fix","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":null,"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"cna":{"affected":[{"defaultStatus":"unaffected","product":"Linux","programFiles":["drivers/power/supply/max77705_charger.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"lessThan":"b98e4e57e34d099a8f846fa54749654082975ea0","status":"affected","version":"a6a494c8e3ce1fe84aac538b087a4cab868ed83f","versionType":"git"},{"lessThan":"1e668baadefb16e81269dbfebf3ffc2672e3a3bb","status":"affected","version":"a6a494c8e3ce1fe84aac538b087a4cab868ed83f","versionType":"git"}]},{"defaultStatus":"affected","product":"Linux","programFiles":["drivers/power/supply/max77705_charger.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"status":"affected","version":"6.15"},{"lessThan":"6.15","status":"unaffected","version":"0","versionType":"semver"},{"lessThanOrEqual":"7.0.*","status":"unaffected","version":"7.0.10","versionType":"semver"},{"lessThanOrEqual":"*","status":"unaffected","version":"7.1","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"cpeMatch":[{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.0.10","versionStartIncluding":"6.15","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.1","versionStartIncluding":"6.15","vulnerable":true}],"negate":false,"operator":"OR"}]}],"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\npower: supply: max77705: Free allocated workqueue and fix removal order\n\nUse devm interface for allocating workqueue to fix two bugs at the same\ntime:\n\n1. Driver leaks the memory on remove(), because the workqueue is not\n   destroyed.\n\n2. Driver allocates workqueue and then registers interrupt handlers\n   with devm interface.  This means that probe error paths will not use a\n   reversed order, but first destroy the workqueue and then, via devm\n   release handlers, free the interrupt.\n\n   The interrupt handler schedules work on this exact workqueue, thus if\n   interrupt is hit in this short time window - after destroying\n   workqueue, but before devm() frees the interrupt - the schedulled\n   work will lead to use of freed memory.\n\nChange is not equivalent in the workqueue itself: use non-legacy API\nwhich does not set (__WQ_LEGACY | WQ_MEM_RECLAIM).  The workqueue is\nused to update power supply (power_supply_changed()) status, thus there\nis no point to run it for memory reclaim.  Note that dev_name() is not\ndirectly used in second argument to prevent possible unlikely parsing\nany \"%\" character in device name as format."}],"providerMetadata":{"dateUpdated":"2026-06-26T19:41:02.696Z","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux"},"references":[{"url":"https://git.kernel.org/stable/c/b98e4e57e34d099a8f846fa54749654082975ea0"},{"url":"https://git.kernel.org/stable/c/1e668baadefb16e81269dbfebf3ffc2672e3a3bb"}],"title":"power: supply: max77705: Free allocated workqueue and fix removal order","x_generator":{"engine":"bippy-1.2.0"}}},"cveMetadata":{"assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","assignerShortName":"Linux","cveId":"CVE-2026-53308","datePublished":"2026-06-26T19:41:02.696Z","dateReserved":"2026-06-09T07:44:35.397Z","dateUpdated":"2026-06-26T19:41:02.696Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-06-26 20:17:24","lastModifiedDate":"2026-06-26 20:17:24","problem_types":[],"metrics":[],"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"53308","Ordinal":"1","Title":"power: supply: max77705: Free allocated workqueue and fix remova","CVE":"CVE-2026-53308","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"53308","Ordinal":"1","NoteData":"In the Linux kernel, the following vulnerability has been resolved:\n\npower: supply: max77705: Free allocated workqueue and fix removal order\n\nUse devm interface for allocating workqueue to fix two bugs at the same\ntime:\n\n1. Driver leaks the memory on remove(), because the workqueue is not\n   destroyed.\n\n2. Driver allocates workqueue and then registers interrupt handlers\n   with devm interface.  This means that probe error paths will not use a\n   reversed order, but first destroy the workqueue and then, via devm\n   release handlers, free the interrupt.\n\n   The interrupt handler schedules work on this exact workqueue, thus if\n   interrupt is hit in this short time window - after destroying\n   workqueue, but before devm() frees the interrupt - the schedulled\n   work will lead to use of freed memory.\n\nChange is not equivalent in the workqueue itself: use non-legacy API\nwhich does not set (__WQ_LEGACY | WQ_MEM_RECLAIM).  The workqueue is\nused to update power supply (power_supply_changed()) status, thus there\nis no point to run it for memory reclaim.  Note that dev_name() is not\ndirectly used in second argument to prevent possible unlikely parsing\nany \"%\" character in device name as format.","Type":"Description","Title":"power: supply: max77705: Free allocated workqueue and fix remova"}]}}}