From: Li Huafei Date: Fri, 24 Sep 2021 02:54:48 +0000 (+0800) Subject: tracing/kprobe: Fix kprobe_on_func_entry() modification X-Git-Tag: v4.19.208~28 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=6cfbbb961bb94de85455fe35140b1350c7ccb76c;p=users%2Fdwmw2%2Flinux.git tracing/kprobe: Fix kprobe_on_func_entry() modification The commit 960434acef37 ("tracing/kprobe: Fix to support kretprobe events on unloaded modules") backport from v5.11, which modifies the return value of kprobe_on_func_entry(). However, there is no adaptation modification in create_trace_kprobe(), resulting in the exact opposite behavior. Now we need to return an error immediately only if kprobe_on_func_entry() returns -EINVAL. Fixes: 960434acef37 ("tracing/kprobe: Fix to support kretprobe events on unloaded modules") Signed-off-by: Li Huafei Signed-off-by: Greg Kroah-Hartman --- diff --git a/kernel/trace/trace_kprobe.c b/kernel/trace/trace_kprobe.c index 61eff45653f57..36dfea29d5fa0 100644 --- a/kernel/trace/trace_kprobe.c +++ b/kernel/trace/trace_kprobe.c @@ -836,8 +836,9 @@ static int create_trace_kprobe(int argc, char **argv) pr_info("Failed to parse either an address or a symbol.\n"); return ret; } + /* Defer the ENOENT case until register kprobe */ if (offset && is_return && - !kprobe_on_func_entry(NULL, symbol, offset)) { + kprobe_on_func_entry(NULL, symbol, offset) == -EINVAL) { pr_info("Given offset is not valid for return probe.\n"); return -EINVAL; }