cast inside __pcpu_cast_1 macro

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

 



Hi, Brian.

You've added the following macros in

	commit 6865dc3ae93b9acb336ca48bd7b2db3446d89370
	x86/percpu: Introduce size abstraction macros

+#define __pcpu_cast_1(val) ((u8)(((unsigned long) val) & 0xff))
+#define __pcpu_cast_2(val) ((u16)(((unsigned long) val) & 0xffff))
+#define __pcpu_cast_4(val) ((u32)(((unsigned long) val) & 0xffffffff))
+#define __pcpu_cast_8(val) ((u64)(val))

They break complation if "val" is something complex like

	this_cpu_write(pcp, *x = 1);

Only __pcpu_cast_8() is correct in this regard.
"val" should be in parenthesis at least.

Is there a reason for casts to "unsigned long"?

Why not just

	#define __pcpu_cast_1(val)	((u8)(val))




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux