#include <linux/types.h>
#include <linux/kallsyms.h>
#include <linux/bitops.h>
+#include <linux/sched.h>
#ifdef CONFIG_FUNCTION_TRACER
extern void ftrace_graph_init_task(struct task_struct *t);
extern void ftrace_graph_exit_task(struct task_struct *t);
+
+static inline int task_curr_ret_stack(struct task_struct *t)
+{
+ return t->curr_ret_stack;
+}
#else
static inline void ftrace_graph_init_task(struct task_struct *t) { }
static inline void ftrace_graph_exit_task(struct task_struct *t) { }
+
+static inline int task_curr_ret_stack(struct task_struct *tsk)
+{
+ return -1;
+}
#endif
#ifdef CONFIG_TRACING
return 0;
va_start(ap, fmt);
-
-#ifdef CONFIG_FUNCTION_GRAPH_TRACER
- ret = trace_vprintk(ip, current->curr_ret_stack, fmt, ap);
-#else
- ret = trace_vprintk(ip, -1, fmt, ap);
-#endif
-
+ ret = trace_vprintk(ip, task_curr_ret_stack(current), fmt, ap);
va_end(ap);
return ret;
}