Commit be243bac authored by Ze Gao's avatar Ze Gao Committed by Masami Hiramatsu (Google)

rethook: use preempt_{disable, enable}_notrace in rethook_trampoline_handler

This patch replaces preempt_{disable, enable} with its corresponding
notrace version in rethook_trampoline_handler so no worries about stack
recursion or overflow introduced by preempt_count_{add, sub} under
fprobe + rethook context.

Link: https://lore.kernel.org/all/20230517034510.15639-2-zegao@tencent.com/

Fixes: 54ecbe6f ("rethook: Add a generic return hook")
Signed-off-by: default avatarZe Gao <zegao@tencent.com>
Acked-by: default avatarMasami Hiramatsu (Google) <mhiramat@kernel.org>
Cc: <stable@vger.kernel.org>
Signed-off-by: default avatarMasami Hiramatsu (Google) <mhiramat@kernel.org>
parent 6049674b
...@@ -288,7 +288,7 @@ unsigned long rethook_trampoline_handler(struct pt_regs *regs, ...@@ -288,7 +288,7 @@ unsigned long rethook_trampoline_handler(struct pt_regs *regs,
* These loops must be protected from rethook_free_rcu() because those * These loops must be protected from rethook_free_rcu() because those
* are accessing 'rhn->rethook'. * are accessing 'rhn->rethook'.
*/ */
preempt_disable(); preempt_disable_notrace();
/* /*
* Run the handler on the shadow stack. Do not unlink the list here because * Run the handler on the shadow stack. Do not unlink the list here because
...@@ -321,7 +321,7 @@ unsigned long rethook_trampoline_handler(struct pt_regs *regs, ...@@ -321,7 +321,7 @@ unsigned long rethook_trampoline_handler(struct pt_regs *regs,
first = first->next; first = first->next;
rethook_recycle(rhn); rethook_recycle(rhn);
} }
preempt_enable(); preempt_enable_notrace();
return correct_ret_addr; return correct_ret_addr;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment