diff options
Diffstat (limited to 'kernel/trace')
-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; |