Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[S390] vdso: fix per cpu vdso pointer in lowcore

The vdso_per_cpu_data entry in the lowcore structure uses __u32
instead of __u64. If the data page is above 4GB the pointer is
truncated and the kernel crashes.

Reported-by: Mijo Safradin <mijo@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>

+2 -2
+2 -2
arch/s390/include/asm/lowcore.h
··· 384 384 __u32 panic_magic; /* 0xe00 */ 385 385 386 386 /* Per cpu primary space access list */ 387 - __u8 pad_0xe04[0xe3c-0xe04]; /* 0xe04 */ 388 - __u32 vdso_per_cpu_data; /* 0xe3c */ 387 + __u8 pad_0xe04[0xe38-0xe04]; /* 0xe04 */ 388 + __u64 vdso_per_cpu_data; /* 0xe38 */ 389 389 __u32 paste[16]; /* 0xe40 */ 390 390 391 391 __u8 pad13[0x11b8-0xe80]; /* 0xe80 */