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: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <201305090113.19684.vapier@gentoo.org>
Date:	Thu, 9 May 2013 01:13:17 -0400
From:	Mike Frysinger <vapier@...too.org>
To:	"H. Peter Anvin" <hpa@...or.com>
Cc:	x86@...nel.org, Thomas Gleixner <tglx@...utronix.de>,
	Ingo Molnar <mingo@...hat.com>, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] x86: make stat/statfs 64-bit for x86_64 kernels

On Thursday 09 May 2013 00:18:15 H. Peter Anvin wrote:
> On 05/08/2013 09:08 PM, Mike Frysinger wrote:
> > On Thursday 09 May 2013 00:04:03 H. Peter Anvin wrote:
> >> On 05/08/2013 09:00 PM, Mike Frysinger wrote:
> >>> When including these headers in the x32 ABI, the structs get
> >>> declared with 32bit sizes which is incorrect.  Use long long
> >>> and such to make it work both with x32 and x86_64.
> >> 
> >> I'm not sure if it is okay to change the types, even within the
> >> same size.  Perhaps use __u64/__s64?
> > 
> > sorry, i don't follow.  changing types isn't ok (unsigned long to
> > unsigned long long), but changing to __u64 is ok (unsigned long to
> > __u64 which is typedefed to unsigned long long) ?
> > 
> > i don't have a problem using __u64/__s64, i just don't understand
> > your logic.
> 
> In userspace, __u64 is often defined as "unsigned long" on 64 bits.

my tests would seem to indicate otherwise, at least for x86:
$ gcc -E - <<<"#include <linux/types.h>" | grep '__u64;'
__extension__ typedef unsigned long long __u64;

$ gcc -m32 -E - <<<"#include <linux/types.h>" | grep '__u64;'
__extension__ typedef unsigned long long __u64;

$ gcc -mx32 -E - <<<"#include <linux/types.h>" | grep '__u64;'
__extension__ typedef unsigned long long __u64;

and doing a printf("%i\n", sizeof(__u64)) shows 8 for each of the above builds
-mike

Download attachment "signature.asc " of type "application/pgp-signature" (837 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ