{"api_version":"1","generated_at":"2026-10-01T17:11:58+00:00","cve":"CVE-2026-97969","urls":{"html":"https://cve.report/CVE-2026-97969","api":"https://cve.report/api/cve/CVE-2026-97969.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-97969","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-97969"},"summary":{"title":"watchdog: msc313e: Fix clock leak and spurious timer in settimeout()","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nwatchdog: msc313e: Fix clock leak and spurious timer in settimeout()\n\nmsc313e_wdt_settimeout() unconditionally calls msc313e_wdt_start() which\nintroduces two severe bugs:\n\n1. If the watchdog is already active, calling start() again will\n   increase the reference count of the clock again.  However stop() is\n   only called once, the reference count is unbalance.\n2. If the watchdog is stopped, calling settimeout() will start\n   the hardware timer accidentally.\n\nFactor out the register-writing logic into a helper function.  Only call\nit in settimeout() if the watchdog is running.  Otherwise, simply update\n`wdev->timeout`.","state":"PUBLISHED","assigner":"Linux","published_at":"2026-09-25 11:17:24","updated_at":"2026-09-25 11:17:24"},"problem_types":[],"metrics":[],"references":[{"url":"https://git.kernel.org/stable/c/2abf99a57b0b71b2b97745981f4039370ab78044","name":"https://git.kernel.org/stable/c/2abf99a57b0b71b2b97745981f4039370ab78044","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/3db30f315935c2fb0d95f46b7a593b5b4d3ec3d0","name":"https://git.kernel.org/stable/c/3db30f315935c2fb0d95f46b7a593b5b4d3ec3d0","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/2152a13ee2a9af09a668ebd053a8dbf771dadb80","name":"https://git.kernel.org/stable/c/2152a13ee2a9af09a668ebd053a8dbf771dadb80","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/faf1eb2895c87a8c0fb920439dddc7e0d97c6a69","name":"https://git.kernel.org/stable/c/faf1eb2895c87a8c0fb920439dddc7e0d97c6a69","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-97969","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-97969","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected e9800b7994642a794afd4894f072541c14277ce8 2152a13ee2a9af09a668ebd053a8dbf771dadb80 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected e9800b7994642a794afd4894f072541c14277ce8 2abf99a57b0b71b2b97745981f4039370ab78044 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected e9800b7994642a794afd4894f072541c14277ce8 faf1eb2895c87a8c0fb920439dddc7e0d97c6a69 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected e9800b7994642a794afd4894f072541c14277ce8 3db30f315935c2fb0d95f46b7a593b5b4d3ec3d0 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 5.14","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 5.14 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.12.111 6.12.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.18.53 6.18.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.2.7 7.2.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.3-rc3 * original_commit_for_fix","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":{"cve_year":"2026","cve_id":"97969","cve":"CVE-2026-97969","epss":"0.001680000","percentile":"0.054010000","score_date":"2026-09-27","updated_at":"2026-09-28 00:02:24"},"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"cna":{"affected":[{"defaultStatus":"unaffected","product":"Linux","programFiles":["drivers/watchdog/msc313e_wdt.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"lessThan":"2152a13ee2a9af09a668ebd053a8dbf771dadb80","status":"affected","version":"e9800b7994642a794afd4894f072541c14277ce8","versionType":"git"},{"lessThan":"2abf99a57b0b71b2b97745981f4039370ab78044","status":"affected","version":"e9800b7994642a794afd4894f072541c14277ce8","versionType":"git"},{"lessThan":"faf1eb2895c87a8c0fb920439dddc7e0d97c6a69","status":"affected","version":"e9800b7994642a794afd4894f072541c14277ce8","versionType":"git"},{"lessThan":"3db30f315935c2fb0d95f46b7a593b5b4d3ec3d0","status":"affected","version":"e9800b7994642a794afd4894f072541c14277ce8","versionType":"git"}]},{"defaultStatus":"affected","product":"Linux","programFiles":["drivers/watchdog/msc313e_wdt.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"status":"affected","version":"5.14"},{"lessThan":"5.14","status":"unaffected","version":"0","versionType":"semver"},{"lessThanOrEqual":"6.12.*","status":"unaffected","version":"6.12.111","versionType":"semver"},{"lessThanOrEqual":"6.18.*","status":"unaffected","version":"6.18.53","versionType":"semver"},{"lessThanOrEqual":"7.2.*","status":"unaffected","version":"7.2.7","versionType":"semver"},{"lessThanOrEqual":"*","status":"unaffected","version":"7.3-rc3","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"cpeMatch":[{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.12.111","versionStartIncluding":"5.14","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.18.53","versionStartIncluding":"5.14","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.2.7","versionStartIncluding":"5.14","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.3-rc3","versionStartIncluding":"5.14","vulnerable":true}],"negate":false,"operator":"OR"}]}],"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nwatchdog: msc313e: Fix clock leak and spurious timer in settimeout()\n\nmsc313e_wdt_settimeout() unconditionally calls msc313e_wdt_start() which\nintroduces two severe bugs:\n\n1. If the watchdog is already active, calling start() again will\n   increase the reference count of the clock again.  However stop() is\n   only called once, the reference count is unbalance.\n2. If the watchdog is stopped, calling settimeout() will start\n   the hardware timer accidentally.\n\nFactor out the register-writing logic into a helper function.  Only call\nit in settimeout() if the watchdog is running.  Otherwise, simply update\n`wdev->timeout`."}],"providerMetadata":{"dateUpdated":"2026-09-25T10:23:10.333Z","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux"},"references":[{"url":"https://git.kernel.org/stable/c/2152a13ee2a9af09a668ebd053a8dbf771dadb80"},{"url":"https://git.kernel.org/stable/c/2abf99a57b0b71b2b97745981f4039370ab78044"},{"url":"https://git.kernel.org/stable/c/faf1eb2895c87a8c0fb920439dddc7e0d97c6a69"},{"url":"https://git.kernel.org/stable/c/3db30f315935c2fb0d95f46b7a593b5b4d3ec3d0"}],"title":"watchdog: msc313e: Fix clock leak and spurious timer in settimeout()","x_generator":{"engine":"bippy-1.2.0"}}},"cveMetadata":{"assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","assignerShortName":"Linux","cveId":"CVE-2026-97969","datePublished":"2026-09-25T10:23:10.333Z","dateReserved":"2026-09-25T10:18:58.207Z","dateUpdated":"2026-09-25T10:23:10.333Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-09-25 11:17:24","lastModifiedDate":"2026-09-25 11:17:24","problem_types":[],"metrics":[],"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"97969","Ordinal":"1","Title":"watchdog: msc313e: Fix clock leak and spurious timer in settimeo","CVE":"CVE-2026-97969","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"97969","Ordinal":"1","NoteData":"In the Linux kernel, the following vulnerability has been resolved:\n\nwatchdog: msc313e: Fix clock leak and spurious timer in settimeout()\n\nmsc313e_wdt_settimeout() unconditionally calls msc313e_wdt_start() which\nintroduces two severe bugs:\n\n1. If the watchdog is already active, calling start() again will\n   increase the reference count of the clock again.  However stop() is\n   only called once, the reference count is unbalance.\n2. If the watchdog is stopped, calling settimeout() will start\n   the hardware timer accidentally.\n\nFactor out the register-writing logic into a helper function.  Only call\nit in settimeout() if the watchdog is running.  Otherwise, simply update\n`wdev->timeout`.","Type":"Description","Title":"watchdog: msc313e: Fix clock leak and spurious timer in settimeo"}]}}}