lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <497670C6.7010304@zytor.com>
Date:	Tue, 20 Jan 2009 16:48:06 -0800
From:	"H. Peter Anvin" <hpa@...or.com>
To:	David Miller <davem@...emloft.net>
CC:	jaswinder@...nel.org, mingo@...e.hu, x86@...nel.org,
	linux-kernel@...r.kernel.org
Subject: Re: Confusion in usr/include/asm-generic/fcntl.h

David Miller wrote:
> From: Jaswinder Singh Rajput <jaswinder@...nel.org>
> Date: Wed, 21 Jan 2009 05:34:17 +0530
> 
>> usr/include/asm-generic/fcntl.h is giving 2 'make headers_check' warnings:
>>  usr/include/asm-generic/fcntl.h:127: leaks CONFIG_64BIT to userspace where it is not valid
>>  usr/include/asm-generic/fcntl.h:149: leaks CONFIG_64BIT to userspace where it is not valid
>>
>> usr/include/asm-generic/fcntl.h:
> ...
>> #ifndef CONFIG_64BIT will always be true for userspace. So what is the use of #ifndef CONFIG_64BIT ?
> 
> Good catch.
> 
> This file needs to test for 64-bit'ness using some non-CONFIG_*
> test.  And the standard built-in CPP macros which can be used
> to check for that are different on every platform.
> 

There are a few ways to check for 64-bitness that are 
platform-independent, unfortunately each of them have drawbacks.

a) the gcc-specific way:

	#if __SIZEOF_POINTER__ == 8

    or

	#ifdef __LP64__

    or any other number of variants.

    It has the obvious disadvantage of being gcc-specific, although
    it seems rather likely that other Linux-supporting compilers might
    also define these macros.

b) the standard C way:

	#include <limits.h>

	#if LONG_MAX > 2147483647L

    it has the obvious disadvantage of needing to include <limits.h>...

We can, of course, also do our own thing as DaveM suggested; this is 
probably the best option.  FWIW, glibc has _WORDSIZE which is equivalent 
to what we call BITS_PER_LONG.  We might as well export it under that 
name (presumably under #ifndef).

	-hpa
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ