CVE-2026-68090
debugobjects: Plug race against a concurrent OOM disable
Description
In the Linux kernel, the following vulnerability has been resolved: debugobjects: Plug race against a concurrent OOM disable syzbot reported a puzzling splat: WARNING: kernel/time/hrtimer.c:443 at stub_timer+0xa/0x20 stub_timer() is installed as timer callback function in hrtimer_fixup_assert_init(), which is invoked when debug_object_assert_init() can't find a shadow object. In that case debug objects emits a warning about it before invoking the fixup. Though the provided console log lacks this warning and instead has the following a few seconds before the splat: ODEBUG: Out of memory. ODEBUG disabled So the object was looked up in debug_object_assert_init() and the lookup failed due a concurrent out of memory situation which disabled debug objects and freed the shadow objects: debug_object_assert_init() if (!debug_objects_enabled) return; obj = alloc(); if (!obj) { // Out of memory debug_objects_enabled = false; free_objects(); obj = lookup_or_alloc(); // The lookup failed because the other side // removed the objects, so this returns // an error code as the object in question // is not statically initialized if (!IS_ERR_OR_NULL(obj)) return; if (!obj) { debug_oom(); return; } print(...) if (!debug_objects_enabled) return; fixup(...) The debug object splat is skipped because debug_objects_enabled is false, but the fixup callback is invoked unconditionally, which makes the timer disfunctional. This is only a problem in debug_object_assert_init() and debug_object_activate() as both have to handle statically initialized objects and therefore must handle the error pointer return case gracefully. All other places only handle the found/not found case and the NULL pointer return is a signal for OOM. Otherwise they get a valid shadow object. Plug the hole by checking whether debug objects are still enabled before invoking the print and fixup function in those two places.
INFO
Published Date :
Aug. 10, 2026, 12:17 p.m.
Last Modified :
Aug. 10, 2026, 12:17 p.m.
Remotely Exploit :
No
Source :
416baaa9-dc9f-4396-8d5f-8c081fb06d67
Affected Products
The following products are affected by CVE-2026-68090
vulnerability.
Even if cvefeed.io is aware of the exact versions of the
products
that
are
affected, the information is not represented in the table below.
No affected product recoded yet
Solution
- Check debug object status before calling print/fixup.
- Update the Linux kernel to the patched version.
- Verify the fix addresses the OOM race condition.
References to Advisories, Solutions, and Tools
Here, you will find a curated list of external links that provide in-depth
information, practical solutions, and valuable tools related to
CVE-2026-68090.
CWE - Common Weakness Enumeration
While CVE identifies
specific instances of vulnerabilities, CWE categorizes the common flaws or
weaknesses that can lead to vulnerabilities. CVE-2026-68090 is
associated with the following CWEs:
Common Attack Pattern Enumeration and Classification (CAPEC)
Common Attack Pattern Enumeration and Classification
(CAPEC)
stores attack patterns, which are descriptions of the common attributes and
approaches employed by adversaries to exploit the CVE-2026-68090
weaknesses.
We scan GitHub repositories to detect new proof-of-concept exploits. Following list is a collection of public exploits and proof-of-concepts, which have been published on GitHub (sorted by the most recently updated).
Results are limited to the first 15 repositories due to potential performance issues.
The following list is the news that have been mention
CVE-2026-68090 vulnerability anywhere in the article.
The following table lists the changes that have been made to the
CVE-2026-68090 vulnerability over time.
Vulnerability history details can be useful for understanding the evolution of a vulnerability, and for identifying the most recent changes that may impact the vulnerability's severity, exploitability, or other characteristics.
-
New CVE Received by 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Aug. 10, 2026
Action Type Old Value New Value Added Affected [{'repo': 'https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git', 'vendor': 'Linux', 'product': 'Linux', 'versions': [{'status': 'affected', 'version': 'b84d435cc228e87951f3bbabf6cc4a5f25d5fb16', 'lessThan': '2d5e320b7ab9b25229ac4331541964a58b5e1d29', 'versionType': 'git'}, {'status': 'affected', 'version': 'b84d435cc228e87951f3bbabf6cc4a5f25d5fb16', 'lessThan': '203a965bf2ab43130778d8214fb0c3c8c2d19cdf', 'versionType': 'git'}, {'status': 'affected', 'version': 'b84d435cc228e87951f3bbabf6cc4a5f25d5fb16', 'lessThan': '23da32e88627e63e0864f59f4c63a2dc0ab851a3', 'versionType': 'git'}, {'status': 'affected', 'version': 'b84d435cc228e87951f3bbabf6cc4a5f25d5fb16', 'lessThan': 'd663fbf28b2eebe665bb9cf828d7d528e5a8707e', 'versionType': 'git'}, {'status': 'affected', 'version': 'b84d435cc228e87951f3bbabf6cc4a5f25d5fb16', 'lessThan': 'e2e255d07723c330dded8e576ce28a8d23a692ce', 'versionType': 'git'}, {'status': 'affected', 'version': 'b84d435cc228e87951f3bbabf6cc4a5f25d5fb16', 'lessThan': 'c00164c9e7fa6145886ad666806cb5347895de5c', 'versionType': 'git'}, {'status': 'affected', 'version': 'b84d435cc228e87951f3bbabf6cc4a5f25d5fb16', 'lessThan': '1f4f02b336c3be125c8fcf87df73db2e0e028b8b', 'versionType': 'git'}, {'status': 'affected', 'version': 'b84d435cc228e87951f3bbabf6cc4a5f25d5fb16', 'lessThan': 'b81dde13cc163450dcb402dcc915ef13ba241e01', 'versionType': 'git'}], 'programFiles': ['lib/debugobjects.c'], 'defaultStatus': 'unaffected'}, {'repo': 'https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git', 'vendor': 'Linux', 'product': 'Linux', 'versions': [{'status': 'affected', 'version': '3.3'}, {'status': 'unaffected', 'version': '0', 'lessThan': '3.3', 'versionType': 'semver'}, {'status': 'unaffected', 'version': '5.10.261', 'versionType': 'semver', 'lessThanOrEqual': '5.10.*'}, {'status': 'unaffected', 'version': '5.15.212', 'versionType': 'semver', 'lessThanOrEqual': '5.15.*'}, {'status': 'unaffected', 'version': '6.1.178', 'versionType': 'semver', 'lessThanOrEqual': '6.1.*'}, {'status': 'unaffected', 'version': '6.6.145', 'versionType': 'semver', 'lessThanOrEqual': '6.6.*'}, {'status': 'unaffected', 'version': '6.12.96', 'versionType': 'semver', 'lessThanOrEqual': '6.12.*'}, {'status': 'unaffected', 'version': '6.18.39', 'versionType': 'semver', 'lessThanOrEqual': '6.18.*'}, {'status': 'unaffected', 'version': '7.1.4', 'versionType': 'semver', 'lessThanOrEqual': '7.1.*'}, {'status': 'unaffected', 'version': '7.2-rc1', 'versionType': 'original_commit_for_fix', 'lessThanOrEqual': '*'}], 'programFiles': ['lib/debugobjects.c'], 'defaultStatus': 'affected'}] Added Description In the Linux kernel, the following vulnerability has been resolved: debugobjects: Plug race against a concurrent OOM disable syzbot reported a puzzling splat: WARNING: kernel/time/hrtimer.c:443 at stub_timer+0xa/0x20 stub_timer() is installed as timer callback function in hrtimer_fixup_assert_init(), which is invoked when debug_object_assert_init() can't find a shadow object. In that case debug objects emits a warning about it before invoking the fixup. Though the provided console log lacks this warning and instead has the following a few seconds before the splat: ODEBUG: Out of memory. ODEBUG disabled So the object was looked up in debug_object_assert_init() and the lookup failed due a concurrent out of memory situation which disabled debug objects and freed the shadow objects: debug_object_assert_init() if (!debug_objects_enabled) return; obj = alloc(); if (!obj) { // Out of memory debug_objects_enabled = false; free_objects(); obj = lookup_or_alloc(); // The lookup failed because the other side // removed the objects, so this returns // an error code as the object in question // is not statically initialized if (!IS_ERR_OR_NULL(obj)) return; if (!obj) { debug_oom(); return; } print(...) if (!debug_objects_enabled) return; fixup(...) The debug object splat is skipped because debug_objects_enabled is false, but the fixup callback is invoked unconditionally, which makes the timer disfunctional. This is only a problem in debug_object_assert_init() and debug_object_activate() as both have to handle statically initialized objects and therefore must handle the error pointer return case gracefully. All other places only handle the found/not found case and the NULL pointer return is a signal for OOM. Otherwise they get a valid shadow object. Plug the hole by checking whether debug objects are still enabled before invoking the print and fixup function in those two places. Added Reference https://git.kernel.org/stable/c/1f4f02b336c3be125c8fcf87df73db2e0e028b8b Added Reference https://git.kernel.org/stable/c/203a965bf2ab43130778d8214fb0c3c8c2d19cdf Added Reference https://git.kernel.org/stable/c/23da32e88627e63e0864f59f4c63a2dc0ab851a3 Added Reference https://git.kernel.org/stable/c/2d5e320b7ab9b25229ac4331541964a58b5e1d29 Added Reference https://git.kernel.org/stable/c/b81dde13cc163450dcb402dcc915ef13ba241e01 Added Reference https://git.kernel.org/stable/c/c00164c9e7fa6145886ad666806cb5347895de5c Added Reference https://git.kernel.org/stable/c/d663fbf28b2eebe665bb9cf828d7d528e5a8707e Added Reference https://git.kernel.org/stable/c/e2e255d07723c330dded8e576ce28a8d23a692ce