diff options
Diffstat (limited to 'kernel/trace')
| -rw-r--r-- | kernel/trace/ftrace.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c index 1e6640f80454..3d90661a5f40 100644 --- a/kernel/trace/ftrace.c +++ b/kernel/trace/ftrace.c | |||
| @@ -1025,6 +1025,21 @@ static void ftrace_bug(int failed, unsigned long ip) | |||
| 1025 | } | 1025 | } |
| 1026 | 1026 | ||
| 1027 | 1027 | ||
| 1028 | /* Return 1 if the address range is reserved for ftrace */ | ||
| 1029 | int ftrace_text_reserved(void *start, void *end) | ||
| 1030 | { | ||
| 1031 | struct dyn_ftrace *rec; | ||
| 1032 | struct ftrace_page *pg; | ||
| 1033 | |||
| 1034 | do_for_each_ftrace_rec(pg, rec) { | ||
| 1035 | if (rec->ip <= (unsigned long)end && | ||
| 1036 | rec->ip + MCOUNT_INSN_SIZE > (unsigned long)start) | ||
| 1037 | return 1; | ||
| 1038 | } while_for_each_ftrace_rec(); | ||
| 1039 | return 0; | ||
| 1040 | } | ||
| 1041 | |||
| 1042 | |||
| 1028 | static int | 1043 | static int |
| 1029 | __ftrace_replace_code(struct dyn_ftrace *rec, int enable) | 1044 | __ftrace_replace_code(struct dyn_ftrace *rec, int enable) |
| 1030 | { | 1045 | { |
