Re: [PATCH v3] ARM: kprobes: move __kretprobe_trampoline to out of line assembler

From: Chen Zhongjin
Date: Fri Oct 07 2022 - 23:10:53 EST


Hi,

Sorry for late reply because I just found this thread before the long vacation so I didn't have much time to deal with it.

On 2022/10/7 4:35, Nick Desaulniers wrote:
On Fri, Sep 30, 2022 at 2:15 PM Nick Desaulniers
<ndesaulniers@xxxxxxxxxx> wrote:
commit 1069c1dd20a3 ("ARM: 9231/1: Recover kretprobes return address for
EABI stack unwinder")
tickled a bug in clang's integrated assembler where the .save and .pad
directives must have corresponding .fnstart directives. The integrated
assembler is unaware that the compiler will be generating the .fnstart
directive.

arch/arm/probes/kprobes/core.c:409:30: error: .fnstart must precede
.save or .vsave directives
<inline asm>:3:2: note: instantiated into assembly here
.save {sp, lr, pc}
^
arch/arm/probes/kprobes/core.c:412:29: error: .fnstart must precede
.pad directive
<inline asm>:6:2: note: instantiated into assembly here
.pad #52
^

Chen, I noticed that your patch was discarded; it's not in linux-next today.
https://lore.kernel.org/linux-arm-kernel/YzHPGvhLkdQcDYzx@xxxxxxxxxxxxxxxxxxxxx/
https://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=9231/1
How would you like to proceed here?

Since 6.1 is closing now. Let's reorganize everything and queue it up for -next for 6.2

I think moving this out of line, incorporating Ard's feedback, then
putting the UNWIND directives on top might be the way to go. What do
you think?

This way looks good to me.

How about making a set for this,  to make everything more clear:

1. Move this out of line

2. Apply the feature, test with gcc & clang

3. Other cleaning, or merge with 2 if the cleaning is tiny.

I'll send another version for this, rebased to 6.1-rc1

Thanks for your time!


Best,

Chen