[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAMuHMdXyhcZY3zaKGpvT9hE=4tp8UFr1HmQjEz4F=NiYeFcLsA@mail.gmail.com>
Date: Mon, 20 Feb 2012 21:01:45 +0100
From: Geert Uytterhoeven <geert@...ux-m68k.org>
To: "H. Peter Anvin" <hpa@...or.com>
Cc: linux-kernel@...r.kernel.org, linux-arch@...r.kernel.org,
mingo@...nel.org, tglx@...utronix.de,
torvalds@...ux-foundation.org, akpm@...ux-foundation.org,
hjl.tools@...il.com
Subject: Re: [PATCH 06/30] sysinfo: Use explicit types in <linux/sysinfo.h>
On Mon, Feb 20, 2012 at 18:29, H. Peter Anvin <hpa@...or.com> wrote:
> Not really... it comes down to "implicit padding in kernel ABI structures is bad". They can easily become security holes.
On 64-bit platforms with natural alignment of long, there's an implicit padding.
> Geert Uytterhoeven <geert@...ux-m68k.org> wrote:
>
>>On Mon, Feb 20, 2012 at 01:07, H. Peter Anvin <hpa@...or.com> wrote:
>>> --- a/include/linux/sysinfo.h
>>> +++ b/include/linux/sysinfo.h
>>> @@ -1,22 +1,24 @@
>>> #ifndef _LINUX_SYSINFO_H
>>> #define _LINUX_SYSINFO_H
>>>
>>> +#include <linux/types.h>
>>> +
>>> #define SI_LOAD_SHIFT 16
>>> struct sysinfo {
>>> - long uptime; /* Seconds since boot */
>>> - unsigned long loads[3]; /* 1, 5, and 15 minute load
>>averages */
>>> - unsigned long totalram; /* Total usable main memory
>>size */
>>> - unsigned long freeram; /* Available memory size */
>>> - unsigned long sharedram; /* Amount of shared memory */
>>> - unsigned long bufferram; /* Memory used by buffers */
>>> - unsigned long totalswap; /* Total swap space size */
>>> - unsigned long freeswap; /* swap space still available
>>*/
>>> - unsigned short procs; /* Number of current
>>processes */
>>> - unsigned short pad; /* explicit padding for m68k
>>*/
>>> - unsigned long totalhigh; /* Total high memory size */
>>> - unsigned long freehigh; /* Available high memory size
>>*/
>>> - unsigned int mem_unit; /* Memory unit size in bytes
>>*/
>>> - char _f[20-2*sizeof(long)-sizeof(int)]; /* Padding: libc5
>>uses this.. */
>>> + __kernel_long_t uptime; /* Seconds since boot */
>>> + __kernel_ulong_t loads[3]; /* 1, 5, and 15 minute load
>>averages */
>>> + __kernel_ulong_t totalram; /* Total usable main memory
>>size */
>>> + __kernel_ulong_t freeram; /* Available memory size */
>>> + __kernel_ulong_t sharedram; /* Amount of shared memory */
>>> + __kernel_ulong_t bufferram; /* Memory used by buffers */
>>> + __kernel_ulong_t totalswap; /* Total swap space size */
>>> + __kernel_ulong_t freeswap; /* swap space still available
>>*/
>>> + __u16 procs; /* Number of current
>>processes */
>>> + __u16 pad; /* Explicit padding for m68k
>>*/
>>
>>Fueling the discussion about natural vs. 4-byte alignment?
>>
>>> + __kernel_ulong_t totalhigh; /* Total high memory size */
>>> + __kernel_ulong_t freehigh; /* Available high memory size
>>*/
>>> + __u32 mem_unit; /* Memory unit size in bytes
>>*/
>>> + char _f[20-2*sizeof(__kernel_ulong_t)-sizeof(__u32)]; /*
>>Padding: libc5 uses this.. */
>>> };
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@...ux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
--
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