Re: [PATCH 06/30] sysinfo: Use explicit types in <linux/sysinfo.h>

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Not really... it comes down to "implicit padding in kernel ABI structures is bad".  They can easily become security holes.



Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> wrote:

>On Mon, Feb 20, 2012 at 01:07, H. Peter Anvin <hpa@xxxxxxxxx> 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@xxxxxxxxxxxxxx
>
>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

-- 
Sent from my mobile phone. Please excuse my brevity and lack of formatting.
--
To unsubscribe from this list: send the line "unsubscribe linux-arch" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel]     [Kernel Newbies]     [x86 Platform Driver]     [Netdev]     [Linux Wireless]     [Netfilter]     [Bugtraq]     [Linux Filesystems]     [Yosemite Discussion]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]

  Powered by Linux