Messages in this thread | | | Subject | Re: [PATCH v23 6/9] x86/entry: Introduce ENDBR macro | From | "Yu, Yu-cheng" <> | Date | Tue, 16 Mar 2021 13:26:52 -0700 |
| |
On 3/16/2021 1:15 PM, Peter Zijlstra wrote: > On Tue, Mar 16, 2021 at 01:05:30PM -0700, Yu, Yu-cheng wrote: >> On 3/16/2021 12:57 PM, Peter Zijlstra wrote: >>> On Tue, Mar 16, 2021 at 10:12:39AM -0700, Yu, Yu-cheng wrote: >>>> Alternatively, there is another compiler-defined macro _CET_ENDBR that can >>>> be used. We can put the following in calling.h: >>>> >>>> #ifdef __CET__ >>>> #include <cet.h> >>>> #else >>>> #define _CET_ENDBR >>>> #endif >>>> >>>> and then use _CET_ENDBR in other files. How is that? >>>> >>>> In the future, in case we have kernel-mode IBT, ENDBR macros are also needed >>>> for other assembly files. >>> >>> Can we please call it IBT_ENDBR or just ENDBR. CET is a horrible name, >>> seeing how it is not specific. >>> >> >> _CET_ENDBR is from the compiler and we cannot change it. We can do: >> >> #define ENDBR _CET_ENDBR >> >> How is that? > > Do we really want to include compiler headers? AFAICT it's not a > built-in. Also what about clang? > > This thing seems trivial enough to build our own, it's a single damn > instruction. That also means we don't have to worry about changes to > header files we don't control. >
Then, what about moving what I had earlier to vdso.h? If we don't want __i386__ either, then make it two macros.
+.macro ENDBR +#ifdef CONFIG_X86_CET +#ifdef __i386__ + endbr32 +#else + endbr64 +#endif +#endif +.endm
| |