lkml.org 
[lkml]   [2012]   [Feb]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
SubjectRe: [PATCH 06/30] sysinfo: Use explicit types in <linux/sysinfo.h>
From
On Mon, Feb 20, 2012 at 18:29, H. Peter Anvin <hpa@zytor.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@linux-m68k.org> wrote:
>
>>On Mon, Feb 20, 2012 at 01:07, H. Peter Anvin <hpa@zytor.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@linux-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@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2012-02-20 21:03    [W:0.082 / U:0.676 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site