| From lihuafei1@huawei.com Fri Sep 24 08:10:49 2021 |
| From: Li Huafei <lihuafei1@huawei.com> |
| Date: Fri, 24 Sep 2021 10:54:48 +0800 |
| Subject: tracing/kprobe: Fix kprobe_on_func_entry() modification |
| To: <gregkh@linuxfoundation.org> |
| Cc: <mhiramat@kernel.org>, <rostedt@goodmis.org>, <mingo@redhat.com>, <linux-kernel@vger.kernel.org> |
| Message-ID: <20210924025448.232959-1-lihuafei1@huawei.com> |
| |
| From: Li Huafei <lihuafei1@huawei.com> |
| |
| 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 <lihuafei1@huawei.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| kernel/trace/trace_kprobe.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| --- a/kernel/trace/trace_kprobe.c |
| +++ b/kernel/trace/trace_kprobe.c |
| @@ -836,8 +836,9 @@ static int create_trace_kprobe(int argc, |
| 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; |
| } |