diff --git a/src/core/support/cpu_linux.c b/src/core/support/cpu_linux.c
index 4d538a5b1b3f879a1d0395104f629e119b048bf9..922b61c3c5861c8aa04f402fe6be7471c9febb9b 100644
--- a/src/core/support/cpu_linux.c
+++ b/src/core/support/cpu_linux.c
@@ -37,13 +37,37 @@
 
 #include "src/core/support/cpu.h"
 
+#ifndef _GNU_SOURCE
 #define _GNU_SOURCE
+#define GRPC_GNU_SOURCE
+#endif
+
+#ifndef __USE_GNU
 #define __USE_GNU
+#define GRPC_USE_GNU
+#endif
+
+#ifndef __USE_MISC
 #define __USE_MISC
+#define GRPC_USE_MISC
+#endif
+
 #include <sched.h>
+
+#ifdef GRPC_GNU_SOURCE
 #undef _GNU_SOURCE
+#undef GRPC_GNU_SOURCE
+#endif
+
+#ifdef GRPC_USE_GNU
 #undef __USE_GNU
+#undef GRPC_USE_GNU
+#endif
+
+#ifdef GRPC_USE_MISC
 #undef __USE_MISC
+#undef GRPC_USE_MISC
+#endif
 
 #include <errno.h>
 #include <unistd.h>