Re: [PATCH 4/5 v3] ftrace/x86_32: Clean up ftrace_regs_caller

From: Linus Torvalds
Date: Thu Mar 16 2017 - 14:21:15 EST


On Thu, Mar 16, 2017 at 11:09 AM, Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:
> +
> + /* Since we don't care about cs, move flags there to simplify return */
> + movl 14*4(%esp), %eax
> + movl %eax, 13*4(%esp)
> +
> + /* Move return ip back to its original location */
> + movl 12*4(%esp), %eax
> + movl %eax, 14*4(%esp)

Could this perhaps be removed entirely?

The return code could instead do:

... restore all the normal registers ..

# Now restore flags that is under the return address and our
fake __KERNEL_CS
pushl 8(%esp)
popfl

# and then return, skipping __KERNEL_CS and %flasg
ret $8

which is smaller and simpler than (again) playing games with stack entries.

Linus