{"id":"CVE-2026-98552","revision":"bf77cbff13994b6984610c037b0e1d2f","records":[{"revision":"bf77cbff13994b6984610c037b0e1d2f","observedAt":"2026-10-23T15:48:27.903+00:00","statement":{"source":"cve-program","id":"CVE-2026-98552","aliases":[],"title":"perf/core: Fix a refcount leak in attach_perf_ctx_data()","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nperf/core: Fix a refcount leak in attach_perf_ctx_data()\n\nThe attach_perf_ctx_data() can race on global and !global cases.  The\nglobal case is protected by global_ctx_data_rwsem and shares a single\nreference count using perf_ctx_data.global field.\n\nBut when it races with !global case, it may miss to set the global field\nand result in a reference count leak.\n\n CPU1                                  CPU2\n ----------------------------------------------------------------\n attach_task_ctx_data(.global=1)       attach_task_ctx_data(.global=0)\n   cd1 = alloc_perf_ctx_data();          cd2 = alloc_perf_ctx_data();\n                                         //    { .global = 0, .refcount = 1 };\n\n                                         try_cmpxchg(); // success,\n                                         // task->perf_ctx_data = cd2\n   try_cmpxhg(); // fail; old = cd2\n   refcount_inc_not_zero(&old->refcount); // success\n     // old.refcount = 2\n   free_perf_ctx_data(cd1);\n\nThen later detach_global_ctx_data() will see the data but it's not\nmarked as global, so it won't call detach_task_ctx_data().","state":0,"publishedAt":"2026-10-18T15:18:19.81+00:00","modifiedAt":"2026-10-19T09:21:35.261+00:00","affected":[{"ecosystem":"Vendor product","name":"Linux","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"product\": \"Linux\",\n                    \"vendor\": \"Linux\",\n                    \"defaultStatus\": \"unaffected\",\n                    \"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\n                    \"programFiles\": [\n                        \"kernel/events/core.c\"\n                    ],\n                    \"versions\": [\n                        {\n                            \"version\": \"506e64e710ff9573fd2b86686528762b7901b5e4\",\n                            \"lessThan\": \"23250517cd475367653f1e99396967f54c6f1b7c\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"506e64e710ff9573fd2b86686528762b7901b5e4\",\n                            \"lessThan\": \"5286d4eb5cd7e10d7d93c3cc596e18bc8ad80f72\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"506e64e710ff9573fd2b86686528762b7901b5e4\",\n                            \"lessThan\": \"cca4980630b3c7a85f53cb43c6018184ce5d4e37\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        }\n                    ]\n                }"},{"ecosystem":"Vendor product","name":"Linux","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"product\": \"Linux\",\n                    \"vendor\": \"Linux\",\n                    \"defaultStatus\": \"affected\",\n                    \"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\n                    \"programFiles\": [\n                        \"kernel/events/core.c\"\n                    ],\n                    \"versions\": [\n                        {\n                            \"version\": \"6.15\",\n                            \"status\": \"affected\"\n                        },\n                        {\n                            \"version\": \"0\",\n                            \"lessThan\": \"6.15\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"6.18.55\",\n                            \"lessThanOrEqual\": \"6.18.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"7.2.9\",\n                            \"lessThanOrEqual\": \"7.2.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"7.3\",\n                            \"lessThanOrEqual\": \"*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"original_commit_for_fix\"\n                        }\n                    ]\n                }"}],"metrics":[],"references":["https://git.kernel.org/stable/c/23250517cd475367653f1e99396967f54c6f1b7c","https://git.kernel.org/stable/c/5286d4eb5cd7e10d7d93c3cc596e18bc8ad80f72","https://git.kernel.org/stable/c/cca4980630b3c7a85f53cb43c6018184ce5d4e37"],"sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2026-98552","license":"CVE Program Terms of Use","key":"cve-program:CVE-2026-98552","identifiers":["CVE-2026-98552"]},"retained":false,"historicalAffected":[]}],"coverage":[]}