Files
kernel-tenderloin-3.0/include/linux
Balbir Singh 7e40f2ab0a Taskstats fix the structure members alignment issue
We broke the the alignment of members of taskstats to the 8 byte boundary
with the CSA patches.  In the current kernel, the taskstats structure is
not suitable for use by 32 bit applications in a 64 bit kernel.

On x86_64

Offsets of taskstats' members (64 bit kernel, 64 bit application)

@taskstats'offsetof[@taskstats'indices] = (
        0,      # version
        4,      # ac_exitcode
        8,      # ac_flag
        9,      # ac_nice
        16,     # cpu_count
        24,     # cpu_delay_total
        32,     # blkio_count
        40,     # blkio_delay_total
        48,     # swapin_count
        56,     # swapin_delay_total
        64,     # cpu_run_real_total
        72,     # cpu_run_virtual_total
        80,     # ac_comm
        112,    # ac_sched
        113,    # ac_pad
        116,    # ac_uid
        120,    # ac_gid
        124,    # ac_pid
        128,    # ac_ppid
        132,    # ac_btime
        136,    # ac_etime
        144,    # ac_utime
        152,    # ac_stime
        160,    # ac_minflt
        168,    # ac_majflt
        176,    # coremem
        184,    # virtmem
        192,    # hiwater_rss
        200,    # hiwater_vm
        208,    # read_char
        216,    # write_char
        224,    # read_syscalls
        232,    # write_syscalls
        240,    # read_bytes
        248,    # write_bytes
        256,    # cancelled_write_bytes
    );

Offsets of taskstats' members (64 bit kernel, 32 bit application)

@taskstats'offsetof[@taskstats'indices] = (
        0,      # version
        4,      # ac_exitcode
        8,      # ac_flag
        9,      # ac_nice
        12,     # cpu_count
        20,     # cpu_delay_total
        28,     # blkio_count
        36,     # blkio_delay_total
        44,     # swapin_count
        52,     # swapin_delay_total
        60,     # cpu_run_real_total
        68,     # cpu_run_virtual_total
        76,     # ac_comm
        108,    # ac_sched
        109,    # ac_pad
        112,    # ac_uid
        116,    # ac_gid
        120,    # ac_pid
        124,    # ac_ppid
        128,    # ac_btime
        132,    # ac_etime
        140,    # ac_utime
        148,    # ac_stime
        156,    # ac_minflt
        164,    # ac_majflt
        172,    # coremem
        180,    # virtmem
        188,    # hiwater_rss
        196,    # hiwater_vm
        204,    # read_char
        212,    # write_char
        220,    # read_syscalls
        228,    # write_syscalls
        236,    # read_bytes
        244,    # write_bytes
        252,    # cancelled_write_bytes
    );

This is one way to solve the problem without re-arranging structure members
is to pack the structure.  The patch adds an __attribute__((aligned(8))) to
the taskstats structure members so that 32 bit applications using taskstats
can work with a 64 bit kernel.

Using __attribute__((packed)) would break the 64 bit alignment of members.

The fix was tested on x86_64. After the fix, we got

Offsets of taskstats' members (64 bit kernel, 64 bit application)

@taskstats'offsetof[@taskstats'indices] = (
        0,      # version
        4,      # ac_exitcode
        8,      # ac_flag
        9,      # ac_nice
        16,     # cpu_count
        24,     # cpu_delay_total
        32,     # blkio_count
        40,     # blkio_delay_total
        48,     # swapin_count
        56,     # swapin_delay_total
        64,     # cpu_run_real_total
        72,     # cpu_run_virtual_total
        80,     # ac_comm
        112,    # ac_sched
        113,    # ac_pad
        120,    # ac_uid
        124,    # ac_gid
        128,    # ac_pid
        132,    # ac_ppid
        136,    # ac_btime
        144,    # ac_etime
        152,    # ac_utime
        160,    # ac_stime
        168,    # ac_minflt
        176,    # ac_majflt
        184,    # coremem
        192,    # virtmem
        200,    # hiwater_rss
        208,    # hiwater_vm
        216,    # read_char
        224,    # write_char
        232,    # read_syscalls
        240,    # write_syscalls
        248,    # read_bytes
        256,    # write_bytes
        264,    # cancelled_write_bytes
    );

Offsets of taskstats' members (64 bit kernel, 32 bit application)

@taskstats'offsetof[@taskstats'indices] = (
        0,      # version
        4,      # ac_exitcode
        8,      # ac_flag
        9,      # ac_nice
        16,     # cpu_count
        24,     # cpu_delay_total
        32,     # blkio_count
        40,     # blkio_delay_total
        48,     # swapin_count
        56,     # swapin_delay_total
        64,     # cpu_run_real_total
        72,     # cpu_run_virtual_total
        80,     # ac_comm
        112,    # ac_sched
        113,    # ac_pad
        120,    # ac_uid
        124,    # ac_gid
        128,    # ac_pid
        132,    # ac_ppid
        136,    # ac_btime
        144,    # ac_etime
        152,    # ac_utime
        160,    # ac_stime
        168,    # ac_minflt
        176,    # ac_majflt
        184,    # coremem
        192,    # virtmem
        200,    # hiwater_rss
        208,    # hiwater_vm
        216,    # read_char
        224,    # write_char
        232,    # read_syscalls
        240,    # write_syscalls
        248,    # read_bytes
        256,    # write_bytes
        264,    # cancelled_write_bytes
    );

Signed-off-by: Balbir Singh <balbir@linux.vnet.ibm.com>
Cc: Jay Lan <jlan@engr.sgi.com>
Cc: Shailabh Nagar <nagar@watson.ibm.com>
Cc: <stable@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-04-24 08:23:08 -07:00
..
2006-09-26 17:40:24 -04:00
2006-12-04 02:00:22 -05:00
2006-10-03 23:01:26 +02:00
2006-12-02 21:22:55 -08:00
2006-12-02 21:22:55 -08:00
2007-02-20 17:10:15 -08:00
2006-10-03 23:01:26 +02:00
2006-12-08 08:28:39 -08:00
2006-12-07 08:39:20 -08:00
2006-12-08 08:28:39 -08:00
2007-01-30 08:26:45 -08:00
2007-02-20 17:10:14 -08:00
2006-12-11 14:35:00 -08:00
2007-02-16 15:19:17 -08:00
2006-12-07 08:39:25 -08:00
2007-02-09 17:39:36 -05:00
2007-02-11 11:18:07 -08:00
2007-02-01 16:17:06 -08:00
2006-09-26 08:48:54 -07:00
2007-03-27 09:05:15 -07:00
2006-12-07 08:39:32 -08:00
2006-12-10 09:55:41 -08:00
2006-10-02 07:57:12 -07:00
2006-09-26 17:40:24 -04:00
2007-01-08 19:49:54 +00:00
2007-04-07 10:03:43 -07:00
2007-02-13 22:09:01 +01:00
2006-12-10 21:21:29 +01:00
2006-09-28 18:02:13 -07:00
2007-03-02 20:44:51 -08:00
2007-03-06 06:08:11 -05:00
2006-12-02 21:21:21 -08:00
2006-09-28 18:02:29 -07:00
2006-10-10 15:37:22 -07:00
2007-02-09 17:39:36 -05:00
2006-12-02 21:21:21 -08:00
2006-12-07 08:39:47 -08:00
2006-12-07 08:39:47 -08:00
2006-12-07 08:39:47 -08:00
2006-10-04 00:31:09 -07:00
2006-12-02 21:21:21 -08:00
2007-03-01 14:53:38 -08:00
2006-12-08 08:28:57 -08:00
2006-11-30 05:24:39 +01:00
2007-02-12 09:48:30 -08:00
2007-02-16 14:37:06 +00:00
2007-02-07 10:37:14 -08:00
2007-03-16 19:25:07 -07:00
2007-03-04 11:12:42 +02:00
2007-02-17 19:17:37 +01:00
2007-03-01 14:53:35 -08:00
2006-11-30 04:40:22 +01:00
2006-09-28 18:02:22 -07:00
2007-03-12 16:31:50 -07:00
2007-01-23 00:34:54 -05:00
2007-02-08 13:51:54 -08:00
2007-03-16 19:25:05 -07:00
2007-02-09 08:06:14 -08:00
2007-03-12 16:31:50 -07:00
2007-03-27 08:55:47 +02:00
2007-04-17 16:36:26 -07:00
2007-02-11 10:51:28 -08:00
2006-12-04 02:00:36 -05:00
2006-10-03 23:01:26 +02:00
2007-01-11 18:18:21 -08:00
2007-02-11 10:51:28 -08:00
2006-09-26 08:49:04 -07:00
2006-12-22 08:55:49 -08:00
2006-12-10 09:55:40 -08:00
2007-03-05 07:57:51 -08:00
2007-02-17 19:07:33 +01:00
2006-12-07 08:39:35 -08:00
2006-12-13 09:05:49 -08:00
2007-02-20 17:10:14 -08:00
2007-02-20 17:10:14 -08:00
2006-10-10 16:15:34 -07:00
2006-10-01 00:39:18 -07:00
2006-10-01 00:39:19 -07:00
2007-02-12 09:48:41 -08:00
2007-02-11 10:51:18 -08:00
2007-02-20 17:10:13 -08:00
2006-10-11 11:14:21 -07:00
2007-02-07 14:03:19 +11:00
2006-11-30 05:32:19 +01:00
2007-02-16 08:13:57 -08:00
2007-02-16 08:13:56 -08:00
2006-12-02 21:21:08 -08:00
2007-03-05 07:57:51 -08:00
2006-09-28 17:53:59 -07:00
2006-12-15 08:47:51 -08:00
2006-10-01 00:39:19 -07:00
2007-02-11 10:51:25 -08:00
2007-02-11 11:18:05 -08:00