{"id":"CVE-2026-68090","state":"PUBLISHED","title":"debugobjects: Plug race against a concurrent OOM disable","description":"In the Linux kernel, the following vulnerability has been resolved:\n\ndebugobjects: Plug race against a concurrent OOM disable\n\nsyzbot reported a puzzling splat:\n\n   WARNING: kernel/time/hrtimer.c:443 at stub_timer+0xa/0x20\n\nstub_timer() is installed as timer callback function in\nhrtimer_fixup_assert_init(), which is invoked when\ndebug_object_assert_init() can't find a shadow object. In that case debug\nobjects emits a warning about it before invoking the fixup.\n\nThough the provided console log lacks this warning and instead has the\nfollowing a few seconds before the splat:\n\n     ODEBUG: Out of memory. ODEBUG disabled\n\nSo the object was looked up in debug_object_assert_init() and the lookup\nfailed due a concurrent out of memory situation which disabled debug\nobjects and freed the shadow objects:\n\ndebug_object_assert_init()\n        if (!debug_objects_enabled)\n        \treturn;                         obj = alloc();\n                \t\t\t\tif (!obj) {\n\t\t\t\t\t\t\t// Out of memory\n                                                \tdebug_objects_enabled = false;\n                                                        free_objects();\n        obj = lookup_or_alloc();\n\n        // The lookup failed because the other side\n        // removed the objects, so this returns\n        // an error code as the object in question\n        // is not statically initialized\n\n\tif (!IS_ERR_OR_NULL(obj))\n        \treturn;\n        if (!obj) {\n        \tdebug_oom();\n                return;\n        }\n\n        print(...)\n           if (!debug_objects_enabled)\n                return;\n\n        fixup(...)\n\nThe debug object splat is skipped because debug_objects_enabled is false,\nbut the fixup callback is invoked unconditionally, which makes the timer\ndisfunctional.\n\nThis is only a problem in debug_object_assert_init() and\ndebug_object_activate() as both have to handle statically initialized\nobjects and therefore must handle the error pointer return case\ngracefully. All other places only handle the found/not found case and the\nNULL pointer return is a signal for OOM. Otherwise they get a valid shadow\nobject.\n\nPlug the hole by checking whether debug objects are still enabled before\ninvoking the print and fixup function in those two places.","publishedAt":"2026-08-10T11:51:45.149Z","updatedAt":"2026-08-17T04:58:38.177Z","severity":null,"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"b84d435cc228e87951f3bbabf6cc4a5f25d5fb16","status":"affected","lessThan":"2d5e320b7ab9b25229ac4331541964a58b5e1d29","versionType":"git"},{"version":"b84d435cc228e87951f3bbabf6cc4a5f25d5fb16","status":"affected","lessThan":"203a965bf2ab43130778d8214fb0c3c8c2d19cdf","versionType":"git"},{"version":"b84d435cc228e87951f3bbabf6cc4a5f25d5fb16","status":"affected","lessThan":"23da32e88627e63e0864f59f4c63a2dc0ab851a3","versionType":"git"},{"version":"b84d435cc228e87951f3bbabf6cc4a5f25d5fb16","status":"affected","lessThan":"d663fbf28b2eebe665bb9cf828d7d528e5a8707e","versionType":"git"},{"version":"b84d435cc228e87951f3bbabf6cc4a5f25d5fb16","status":"affected","lessThan":"e2e255d07723c330dded8e576ce28a8d23a692ce","versionType":"git"},{"version":"b84d435cc228e87951f3bbabf6cc4a5f25d5fb16","status":"affected","lessThan":"c00164c9e7fa6145886ad666806cb5347895de5c","versionType":"git"},{"version":"b84d435cc228e87951f3bbabf6cc4a5f25d5fb16","status":"affected","lessThan":"1f4f02b336c3be125c8fcf87df73db2e0e028b8b","versionType":"git"},{"version":"b84d435cc228e87951f3bbabf6cc4a5f25d5fb16","status":"affected","lessThan":"b81dde13cc163450dcb402dcc915ef13ba241e01","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["lib/debugobjects.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"3.3","status":"affected"},{"version":"0","status":"unaffected","lessThan":"3.3","versionType":"semver"},{"version":"5.10.261","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.212","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.178","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.145","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.96","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.39","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.1.4","status":"unaffected","lessThanOrEqual":"7.1.*","versionType":"semver"},{"version":"7.2","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["lib/debugobjects.c"]}],"references":["https://git.kernel.org/stable/c/2d5e320b7ab9b25229ac4331541964a58b5e1d29","https://git.kernel.org/stable/c/203a965bf2ab43130778d8214fb0c3c8c2d19cdf","https://git.kernel.org/stable/c/23da32e88627e63e0864f59f4c63a2dc0ab851a3","https://git.kernel.org/stable/c/d663fbf28b2eebe665bb9cf828d7d528e5a8707e","https://git.kernel.org/stable/c/e2e255d07723c330dded8e576ce28a8d23a692ce","https://git.kernel.org/stable/c/c00164c9e7fa6145886ad666806cb5347895de5c","https://git.kernel.org/stable/c/1f4f02b336c3be125c8fcf87df73db2e0e028b8b","https://git.kernel.org/stable/c/b81dde13cc163450dcb402dcc915ef13ba241e01"],"weaknesses":[],"ingestedAt":"2026-10-29T20:12:49.727Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/68xxx/CVE-2026-68090.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-68090","state":"PUBLISHED","datePublished":"2026-08-10T11:51:45.149Z","dateUpdated":"2026-08-17T04:58:38.177Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-07-30T09:28:09.367Z"},"containers":{"cna":{"title":"debugobjects: Plug race against a concurrent OOM disable","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\ndebugobjects: Plug race against a concurrent OOM disable\n\nsyzbot reported a puzzling splat:\n\n   WARNING: kernel/time/hrtimer.c:443 at stub_timer+0xa/0x20\n\nstub_timer() is installed as timer callback function in\nhrtimer_fixup_assert_init(), which is invoked when\ndebug_object_assert_init() can't find a shadow object. In that case debug\nobjects emits a warning about it before invoking the fixup.\n\nThough the provided console log lacks this warning and instead has the\nfollowing a few seconds before the splat:\n\n     ODEBUG: Out of memory. ODEBUG disabled\n\nSo the object was looked up in debug_object_assert_init() and the lookup\nfailed due a concurrent out of memory situation which disabled debug\nobjects and freed the shadow objects:\n\ndebug_object_assert_init()\n        if (!debug_objects_enabled)\n        \treturn;                         obj = alloc();\n                \t\t\t\tif (!obj) {\n\t\t\t\t\t\t\t// Out of memory\n                                                \tdebug_objects_enabled = false;\n                                                        free_objects();\n        obj = lookup_or_alloc();\n\n        // The lookup failed because the other side\n        // removed the objects, so this returns\n        // an error code as the object in question\n        // is not statically initialized\n\n\tif (!IS_ERR_OR_NULL(obj))\n        \treturn;\n        if (!obj) {\n        \tdebug_oom();\n                return;\n        }\n\n        print(...)\n           if (!debug_objects_enabled)\n                return;\n\n        fixup(...)\n\nThe debug object splat is skipped because debug_objects_enabled is false,\nbut the fixup callback is invoked unconditionally, which makes the timer\ndisfunctional.\n\nThis is only a problem in debug_object_assert_init() and\ndebug_object_activate() as both have to handle statically initialized\nobjects and therefore must handle the error pointer return case\ngracefully. All other places only handle the found/not found case and the\nNULL pointer return is a signal for OOM. Otherwise they get a valid shadow\nobject.\n\nPlug the hole by checking whether debug objects are still enabled before\ninvoking the print and fixup function in those two places."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"b84d435cc228e87951f3bbabf6cc4a5f25d5fb16","status":"affected","lessThan":"2d5e320b7ab9b25229ac4331541964a58b5e1d29","versionType":"git"},{"version":"b84d435cc228e87951f3bbabf6cc4a5f25d5fb16","status":"affected","lessThan":"203a965bf2ab43130778d8214fb0c3c8c2d19cdf","versionType":"git"},{"version":"b84d435cc228e87951f3bbabf6cc4a5f25d5fb16","status":"affected","lessThan":"23da32e88627e63e0864f59f4c63a2dc0ab851a3","versionType":"git"},{"version":"b84d435cc228e87951f3bbabf6cc4a5f25d5fb16","status":"affected","lessThan":"d663fbf28b2eebe665bb9cf828d7d528e5a8707e","versionType":"git"},{"version":"b84d435cc228e87951f3bbabf6cc4a5f25d5fb16","status":"affected","lessThan":"e2e255d07723c330dded8e576ce28a8d23a692ce","versionType":"git"},{"version":"b84d435cc228e87951f3bbabf6cc4a5f25d5fb16","status":"affected","lessThan":"c00164c9e7fa6145886ad666806cb5347895de5c","versionType":"git"},{"version":"b84d435cc228e87951f3bbabf6cc4a5f25d5fb16","status":"affected","lessThan":"1f4f02b336c3be125c8fcf87df73db2e0e028b8b","versionType":"git"},{"version":"b84d435cc228e87951f3bbabf6cc4a5f25d5fb16","status":"affected","lessThan":"b81dde13cc163450dcb402dcc915ef13ba241e01","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["lib/debugobjects.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"3.3","status":"affected"},{"version":"0","status":"unaffected","lessThan":"3.3","versionType":"semver"},{"version":"5.10.261","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.212","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.178","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.145","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.96","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.39","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.1.4","status":"unaffected","lessThanOrEqual":"7.1.*","versionType":"semver"},{"version":"7.2","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["lib/debugobjects.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/2d5e320b7ab9b25229ac4331541964a58b5e1d29"},{"url":"https://git.kernel.org/stable/c/203a965bf2ab43130778d8214fb0c3c8c2d19cdf"},{"url":"https://git.kernel.org/stable/c/23da32e88627e63e0864f59f4c63a2dc0ab851a3"},{"url":"https://git.kernel.org/stable/c/d663fbf28b2eebe665bb9cf828d7d528e5a8707e"},{"url":"https://git.kernel.org/stable/c/e2e255d07723c330dded8e576ce28a8d23a692ce"},{"url":"https://git.kernel.org/stable/c/c00164c9e7fa6145886ad666806cb5347895de5c"},{"url":"https://git.kernel.org/stable/c/1f4f02b336c3be125c8fcf87df73db2e0e028b8b"},{"url":"https://git.kernel.org/stable/c/b81dde13cc163450dcb402dcc915ef13ba241e01"}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-08-17T04:58:38.177Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.3","versionEndExcluding":"5.10.261"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.3","versionEndExcluding":"5.15.212"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.3","versionEndExcluding":"6.1.178"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.3","versionEndExcluding":"6.6.145"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.3","versionEndExcluding":"6.12.96"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.3","versionEndExcluding":"6.18.39"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.3","versionEndExcluding":"7.1.4"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.3","versionEndExcluding":"7.2"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}