diff options
| -rw-r--r-- | kernel/trace/ftrace.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c index eda69c9f78d0..6ef1989c2b2e 100644 --- a/kernel/trace/ftrace.c +++ b/kernel/trace/ftrace.c | |||
| @@ -2208,6 +2208,14 @@ static int ftrace_save_ops_tramp_hash(struct ftrace_ops *ops) | |||
| 2208 | if (ftrace_rec_count(rec) == 1 && | 2208 | if (ftrace_rec_count(rec) == 1 && |
| 2209 | ftrace_ops_test(ops, rec->ip, rec)) { | 2209 | ftrace_ops_test(ops, rec->ip, rec)) { |
| 2210 | 2210 | ||
| 2211 | /* | ||
| 2212 | * If another ops adds to a rec, the rec will | ||
| 2213 | * lose its trampoline and never get it back | ||
| 2214 | * until all ops are off of it. | ||
| 2215 | */ | ||
| 2216 | if (!(rec->flags & FTRACE_FL_TRAMP)) | ||
| 2217 | continue; | ||
| 2218 | |||
| 2211 | /* This record had better have a trampoline */ | 2219 | /* This record had better have a trampoline */ |
| 2212 | if (FTRACE_WARN_ON(!(rec->flags & FTRACE_FL_TRAMP_EN))) | 2220 | if (FTRACE_WARN_ON(!(rec->flags & FTRACE_FL_TRAMP_EN))) |
| 2213 | return -1; | 2221 | return -1; |
