mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-03-21 23:16:50 +08:00
Merge tag 'probes-fixes-v7.0-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace
Pull probes fixes from Masami Hiramatsu: - Avoid crash when rmmod/insmod after ftrace killed This fixes a kernel crash caused by kprobes on the symbol in a module which is unloaded after ftrace_kill() is called. - Remove unneeded warnings from __arm_kprobe_ftrace() Remove unneeded WARN messages which can be triggered if the kprobe is using ftrace and it fails to enable the ftrace. Since kprobes correctly handle such failure, we don't need to warn it. * tag 'probes-fixes-v7.0-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace: kprobes: Remove unneeded warnings from __arm_kprobe_ftrace() kprobes: avoid crash when rmmod/insmod after ftrace killed
This commit is contained in:
@@ -1144,12 +1144,12 @@ static int __arm_kprobe_ftrace(struct kprobe *p, struct ftrace_ops *ops,
|
||||
lockdep_assert_held(&kprobe_mutex);
|
||||
|
||||
ret = ftrace_set_filter_ip(ops, (unsigned long)p->addr, 0, 0);
|
||||
if (WARN_ONCE(ret < 0, "Failed to arm kprobe-ftrace at %pS (error %d)\n", p->addr, ret))
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
if (*cnt == 0) {
|
||||
ret = register_ftrace_function(ops);
|
||||
if (WARN(ret < 0, "Failed to register kprobe-ftrace (error %d)\n", ret)) {
|
||||
if (ret < 0) {
|
||||
/*
|
||||
* At this point, sinec ops is not registered, we should be sefe from
|
||||
* registering empty filter.
|
||||
@@ -1178,6 +1178,10 @@ static int __disarm_kprobe_ftrace(struct kprobe *p, struct ftrace_ops *ops,
|
||||
int ret;
|
||||
|
||||
lockdep_assert_held(&kprobe_mutex);
|
||||
if (unlikely(kprobe_ftrace_disabled)) {
|
||||
/* Now ftrace is disabled forever, disarm is already done. */
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (*cnt == 1) {
|
||||
ret = unregister_ftrace_function(ops);
|
||||
|
||||
Reference in New Issue
Block a user