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))