{"api_version":"1","generated_at":"2026-09-18T01:06:17+00:00","cve":"CVE-2026-89797","urls":{"html":"https://cve.report/CVE-2026-89797","api":"https://cve.report/api/cve/CVE-2026-89797.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-89797","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-89797"},"summary":{"title":"power: supply: ab8500_fg: fix use-after-free on remove","description":"In the Linux kernel, the following vulnerability has been resolved:\n\npower: supply: ab8500_fg: fix use-after-free on remove\n\nab8500_fg_remove() destroys the driver workqueue while the threaded\ninterrupt handlers are still armed; they are devm-managed and freed\nonly after ->remove() returns, so a handler that fires in that\nwindow queues work on the freed workqueue.\n\nTear the workqueue down through devm instead, registering its cleanup\nafter the power supply and before the interrupt requests.  devm then\nfrees the interrupts first, so the handlers can no longer queue work,\nbefore disabling the delayed and plain work items and destroying the\nworkqueue.  Disabling the items, rather than cancelling them, keeps\nthem disabled so no producer (including the power-supply\nexternal_power_changed callback) can requeue them.\n\nFound by an in-house static analysis tool.","state":"PUBLISHED","assigner":"Linux","published_at":"2026-09-16 11:16:44","updated_at":"2026-09-16 11:16:44"},"problem_types":[],"metrics":[],"references":[{"url":"https://git.kernel.org/stable/c/013731074ab6a8d11ec209eee64c5b2656954479","name":"https://git.kernel.org/stable/c/013731074ab6a8d11ec209eee64c5b2656954479","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/c660c017dec1fd7cd88e1103c5ae1aae6ce636bf","name":"https://git.kernel.org/stable/c/c660c017dec1fd7cd88e1103c5ae1aae6ce636bf","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/75b1e88d34254f4fb7753345e21bfee47abddd7f","name":"https://git.kernel.org/stable/c/75b1e88d34254f4fb7753345e21bfee47abddd7f","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-89797","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-89797","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 13151631b5bd06a1511353bb221079bbd76606c3 c660c017dec1fd7cd88e1103c5ae1aae6ce636bf git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 13151631b5bd06a1511353bb221079bbd76606c3 013731074ab6a8d11ec209eee64c5b2656954479 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 13151631b5bd06a1511353bb221079bbd76606c3 75b1e88d34254f4fb7753345e21bfee47abddd7f git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 3.4","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 3.4 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.18.51 6.18.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.2.5 7.2.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.3-rc1 * 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/ab8500_fg.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"lessThan":"c660c017dec1fd7cd88e1103c5ae1aae6ce636bf","status":"affected","version":"13151631b5bd06a1511353bb221079bbd76606c3","versionType":"git"},{"lessThan":"013731074ab6a8d11ec209eee64c5b2656954479","status":"affected","version":"13151631b5bd06a1511353bb221079bbd76606c3","versionType":"git"},{"lessThan":"75b1e88d34254f4fb7753345e21bfee47abddd7f","status":"affected","version":"13151631b5bd06a1511353bb221079bbd76606c3","versionType":"git"}]},{"defaultStatus":"affected","product":"Linux","programFiles":["drivers/power/supply/ab8500_fg.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"status":"affected","version":"3.4"},{"lessThan":"3.4","status":"unaffected","version":"0","versionType":"semver"},{"lessThanOrEqual":"6.18.*","status":"unaffected","version":"6.18.51","versionType":"semver"},{"lessThanOrEqual":"7.2.*","status":"unaffected","version":"7.2.5","versionType":"semver"},{"lessThanOrEqual":"*","status":"unaffected","version":"7.3-rc1","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"cpeMatch":[{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.18.51","versionStartIncluding":"3.4","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.2.5","versionStartIncluding":"3.4","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.3-rc1","versionStartIncluding":"3.4","vulnerable":true}],"negate":false,"operator":"OR"}]}],"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\npower: supply: ab8500_fg: fix use-after-free on remove\n\nab8500_fg_remove() destroys the driver workqueue while the threaded\ninterrupt handlers are still armed; they are devm-managed and freed\nonly after ->remove() returns, so a handler that fires in that\nwindow queues work on the freed workqueue.\n\nTear the workqueue down through devm instead, registering its cleanup\nafter the power supply and before the interrupt requests.  devm then\nfrees the interrupts first, so the handlers can no longer queue work,\nbefore disabling the delayed and plain work items and destroying the\nworkqueue.  Disabling the items, rather than cancelling them, keeps\nthem disabled so no producer (including the power-supply\nexternal_power_changed callback) can requeue them.\n\nFound by an in-house static analysis tool."}],"providerMetadata":{"dateUpdated":"2026-09-16T10:30:28.484Z","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux"},"references":[{"url":"https://git.kernel.org/stable/c/c660c017dec1fd7cd88e1103c5ae1aae6ce636bf"},{"url":"https://git.kernel.org/stable/c/013731074ab6a8d11ec209eee64c5b2656954479"},{"url":"https://git.kernel.org/stable/c/75b1e88d34254f4fb7753345e21bfee47abddd7f"}],"title":"power: supply: ab8500_fg: fix use-after-free on remove","x_generator":{"engine":"bippy-1.2.0"}}},"cveMetadata":{"assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","assignerShortName":"Linux","cveId":"CVE-2026-89797","datePublished":"2026-09-16T10:30:28.484Z","dateReserved":"2026-09-11T19:38:34.767Z","dateUpdated":"2026-09-16T10:30:28.484Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-09-16 11:16:44","lastModifiedDate":"2026-09-16 11:16:44","problem_types":[],"metrics":[],"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"89797","Ordinal":"1","Title":"power: supply: ab8500_fg: fix use-after-free on remove","CVE":"CVE-2026-89797","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"89797","Ordinal":"1","NoteData":"In the Linux kernel, the following vulnerability has been resolved:\n\npower: supply: ab8500_fg: fix use-after-free on remove\n\nab8500_fg_remove() destroys the driver workqueue while the threaded\ninterrupt handlers are still armed; they are devm-managed and freed\nonly after ->remove() returns, so a handler that fires in that\nwindow queues work on the freed workqueue.\n\nTear the workqueue down through devm instead, registering its cleanup\nafter the power supply and before the interrupt requests.  devm then\nfrees the interrupts first, so the handlers can no longer queue work,\nbefore disabling the delayed and plain work items and destroying the\nworkqueue.  Disabling the items, rather than cancelling them, keeps\nthem disabled so no producer (including the power-supply\nexternal_power_changed callback) can requeue them.\n\nFound by an in-house static analysis tool.","Type":"Description","Title":"power: supply: ab8500_fg: fix use-after-free on remove"}]}}}