Your example is from the Linux kernel. The kernel is a special program.
Many of its header files form part of the operating system's user-space SDK. So any kernel header files exported to user space need to use implementation-reserved identifiers for macro implementation details.
Also, since the kernel doesn't use the standard C library/runtime anyway, it can't run into conflicts with reserved identifiers used by the standard C library header files (except for any header files that are actually part of the kernel source code itself).
Also, the kernel source code needs to be written with awareness of many compiler implementations details to compile and run properly, so the authors are likely aware of the reserved identifiers used by the compiler and able to avoid conflicts with them.
For these reasons, it might be the simplest policy to simply write all kernel macros (regardless of whether they are exported to user space) to use only reserved identifiers internally.