]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
[S390] Ensure that vmcore_info pointer is never accessed directly
authorMichael Holzheu <holzheu@linux.vnet.ibm.com>
Sun, 11 Mar 2012 15:59:38 +0000 (11:59 -0400)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Sun, 11 Mar 2012 15:59:30 +0000 (11:59 -0400)
Because the vmcore_info pointer is not 8 byte aligned it never should
not be accessed directly. The reason is that the compiler assumes that
64 bit pointer are always double word aligned. To ensure save access,
the vmcore_info type in struct lowcore is changed from u64 to an u8[8]
array and a comment is added.

Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
Reported-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/include/asm/lowcore.h

index a47c6e221a9528c190a5ae979bdd3dadd4390850..47853debb3b9de98eed2a3ac70a0cb95c3a19412 100644 (file)
@@ -302,7 +302,12 @@ struct _lowcore {
         */
        __u64   ipib;                           /* 0x0e00 */
        __u32   ipib_checksum;                  /* 0x0e08 */
-       __u64   vmcore_info;                    /* 0x0e0c */
+       /*
+        * Because the vmcore_info pointer is not 8 byte aligned it never
+        * should not be accessed directly. For accessing the pointer, first
+        * copy it to a local pointer variable.
+        */
+       __u8    vmcore_info[8];                 /* 0x0e0c */
        __u8    pad_0x0e14[0x0e18-0x0e14];      /* 0x0e14 */
        __u64   os_info;                        /* 0x0e18 */
        __u8    pad_0x0e20[0x0f00-0x0e20];      /* 0x0e20 */