Fix: arch/mips/kernel/signal.c: In function 'handle_signal': arch/mips/kernel/signal.c:533:21: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast] unsigned int tmp = (unsigned int)current->mm->context.vdso; ^ arch/mips/kernel/signal.c:536:9: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast] vdso = (void *)tmp; ^ cc1: all warnings being treated as errors when building a 64-bit kernel. This is not really a supported configuration, but the cast is wrong either way, Linux makes the assumption that sizeof(void *) equals sizeof(unsigned long) and therefore the latter type is expected to be used where integer operations have to be applied to pointers for some reason. Signed-off-by: Maciej W. Rozycki <macro@xxxxxxxxxxxxxxxx> --- linux-umips-pointer-size.diff Index: linux-3.17-stable-malta64/arch/mips/kernel/signal.c =================================================================== --- linux-3.17-stable-malta64.orig/arch/mips/kernel/signal.c 2014-11-14 04:06:50.000000000 +0000 +++ linux-3.17-stable-malta64/arch/mips/kernel/signal.c 2014-11-14 16:55:05.891621120 +0000 @@ -530,7 +530,7 @@ static void handle_signal(struct ksignal struct mips_abi *abi = current->thread.abi; #ifdef CONFIG_CPU_MICROMIPS void *vdso; - unsigned int tmp = (unsigned int)current->mm->context.vdso; + unsigned long tmp = (unsigned long)current->mm->context.vdso; set_isa16_mode(tmp); vdso = (void *)tmp;