[PATCH] Fix the bool convert to int issue

From: cgel . zte
Date: Sat Sep 18 2021 - 03:30:50 EST


From: Yang Guang <yang.guang5@xxxxxxxxxx>

The int value which convert from bool true is 0xFFFFFFFF. Causing the
__sc_insn return wrong type.

Signed-off-by: Yang Guang <yang.guang5@xxxxxxxxxx>
---
arch/x86/kernel/static_call.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/kernel/static_call.c b/arch/x86/kernel/static_call.c
index ea028e736831..f608e6710300 100644
--- a/arch/x86/kernel/static_call.c
+++ b/arch/x86/kernel/static_call.c
@@ -89,7 +89,7 @@ static inline enum insn_type __sc_insn(bool null, bool tail)
* 1 | 0 | JMP
* 1 | 1 | RET
*/
- return 2*tail + null;
+ return ((tail)?2:0) + ((null)?1:0);
}

void arch_static_call_transform(void *site, void *tramp, void *func, bool tail)
--
2.25.1