lkml.org 
[lkml]   [2023]   [Dec]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
Subjectcast inside __pcpu_cast_1 macro
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))

\
 
 \ /
  Last update: 2023-12-12 12:49    [W:0.088 / U:0.160 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site