diff options
Diffstat (limited to 'include/linux/sched.h')
-rw-r--r-- | include/linux/sched.h | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/include/linux/sched.h b/include/linux/sched.h index c8e0db464206..bee1e93c95ad 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -1352,6 +1352,17 @@ struct task_struct { | |||
1352 | unsigned long default_timer_slack_ns; | 1352 | unsigned long default_timer_slack_ns; |
1353 | 1353 | ||
1354 | struct list_head *scm_work_list; | 1354 | struct list_head *scm_work_list; |
1355 | #ifdef CONFIG_FUNCTION_RET_TRACER | ||
1356 | /* Index of current stored adress in ret_stack */ | ||
1357 | int curr_ret_stack; | ||
1358 | /* Stack of return addresses for return function tracing */ | ||
1359 | struct ftrace_ret_stack *ret_stack; | ||
1360 | /* | ||
1361 | * Number of functions that haven't been traced | ||
1362 | * because of depth overrun. | ||
1363 | */ | ||
1364 | atomic_t trace_overrun; | ||
1365 | #endif | ||
1355 | }; | 1366 | }; |
1356 | 1367 | ||
1357 | /* | 1368 | /* |
@@ -2006,18 +2017,6 @@ static inline void setup_thread_stack(struct task_struct *p, struct task_struct | |||
2006 | { | 2017 | { |
2007 | *task_thread_info(p) = *task_thread_info(org); | 2018 | *task_thread_info(p) = *task_thread_info(org); |
2008 | task_thread_info(p)->task = p; | 2019 | task_thread_info(p)->task = p; |
2009 | |||
2010 | #ifdef CONFIG_FUNCTION_RET_TRACER | ||
2011 | /* | ||
2012 | * When fork() creates a child process, this function is called. | ||
2013 | * But the child task may not inherit the return adresses traced | ||
2014 | * by the return function tracer because it will directly execute | ||
2015 | * in userspace and will not return to kernel functions its parent | ||
2016 | * used. | ||
2017 | */ | ||
2018 | task_thread_info(p)->curr_ret_stack = -1; | ||
2019 | atomic_set(&task_thread_info(p)->trace_overrun, 0); | ||
2020 | #endif | ||
2021 | } | 2020 | } |
2022 | 2021 | ||
2023 | static inline unsigned long *end_of_stack(struct task_struct *p) | 2022 | static inline unsigned long *end_of_stack(struct task_struct *p) |