[PATCH 3/7] MIPS: signal.c: Fix an invalid cast in ISA mode bit handling

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

 



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;





[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux