As glibc versions before v2.24 couldn't safely include <linux/in6.h>, commit 8af595b7 (mount: support compiling with old glibc, 2017-07-26) introduced some preprocessor checks to special-case such old versions. While there is a check whether __GLIBC__ is defined at all, it only applies to the first comparison `__GLIBC__ < 2`, but doesn't apply to the second check due to operator precedence. Thus the preprocessor may use an undefined value and thus generate an error if __GLIBC__ is not defined. Fix the issue by wrapping the version check in braces. Signed-off-by: Patrick Steinhardt <ps@xxxxxx> --- utils/mount/network.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/mount/network.c b/utils/mount/network.c index e166a823..6ac913d9 100644 --- a/utils/mount/network.c +++ b/utils/mount/network.c @@ -39,7 +39,7 @@ #include <sys/socket.h> #include <sys/wait.h> #include <sys/stat.h> -#if defined(__GLIBC__) && (__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 24) +#if defined(__GLIBC__) && ((__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 24)) /* Cannot safely include linux/in6.h in old glibc, so hardcode the needed values */ # define IPV6_PREFER_SRC_PUBLIC 2 # define IPV6_ADDR_PREFERENCES 72 -- 2.23.0