From da6d1fc0e0aeb1fdb504aced4b0dba0290ec240f Mon Sep 17 00:00:00 2001
From: Thomas Stuefe <stuefe@openjdk.org>
Date: Thu, 30 Jun 2022 06:19:25 +0000
Subject: [PATCH] 8289477: Memory corruption with CPU_ALLOC, CPU_FREE on muslc

Reviewed-by: dholmes, clanger
---
 src/hotspot/os/linux/os_linux.cpp | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/hotspot/os/linux/os_linux.cpp b/src/hotspot/os/linux/os_linux.cpp
index 726926218907..8ee10e201c69 100644
--- a/src/hotspot/os/linux/os_linux.cpp
+++ b/src/hotspot/os/linux/os_linux.cpp
@@ -4591,7 +4591,8 @@ static int _cpu_count(const cpu_set_t* cpus) {
 // dynamic check - see 6515172 for details.
 // If anything goes wrong we fallback to returning the number of online
 // processors - which can be greater than the number available to the process.
-int os::Linux::active_processor_count() {
+static int get_active_processor_count() {
+  // Note: keep this function, with its CPU_xx macros, *outside* the os namespace (see JDK-8289477).
   cpu_set_t cpus;  // can represent at most 1024 (CPU_SETSIZE) processors
   cpu_set_t* cpus_p = &cpus;
   int cpus_size = sizeof(cpu_set_t);
@@ -4663,6 +4664,10 @@ int os::Linux::active_processor_count() {
   return cpu_count;
 }
 
+int os::Linux::active_processor_count() {
+  return get_active_processor_count();
+}
+
 // Determine the active processor count from one of
 // three different sources:
 //
