summaryrefslogtreecommitdiff
path: root/arch/x86/kernel/callthunks.c
diff options
context:
space:
mode:
authorPeter Zijlstra <peterz@infradead.org>2022-09-15 14:11:28 +0300
committerPeter Zijlstra <peterz@infradead.org>2022-10-17 17:41:15 +0300
commit3b6c1747da48ff40ab746b0e860cffe83619f5c5 (patch)
treeb9de2a7bca8cbf4df6d9e5020e292dc266ceaa8a /arch/x86/kernel/callthunks.c
parent5d8213864ade86b48fc492584ea86d65a62f892e (diff)
downloadlinux-3b6c1747da48ff40ab746b0e860cffe83619f5c5.tar.xz
x86/retpoline: Add SKL retthunk retpolines
Ensure that retpolines do the proper call accounting so that the return accounting works correctly. Specifically; retpolines are used to replace both 'jmp *%reg' and 'call *%reg', however these two cases do not have the same accounting requirements. Therefore split things up and provide two different retpoline arrays for SKL. The 'jmp *%reg' case needs no accounting, the __x86_indirect_jump_thunk_array[] covers this. The retpoline is changed to not use the return thunk; it's a simple call;ret construct. [ strictly speaking it should do: andq $(~0x1f), PER_CPU_VAR(__x86_call_depth) but we can argue this can be covered by the fuzz we already have in the accounting depth (12) vs the RSB depth (16) ] The 'call *%reg' case does need accounting, the __x86_indirect_call_thunk_array[] covers this. Again, this retpoline avoids the use of the return-thunk, in this case to avoid double accounting. Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Link: https://lore.kernel.org/r/20220915111147.996634749@infradead.org
Diffstat (limited to 'arch/x86/kernel/callthunks.c')
0 files changed, 0 insertions, 0 deletions