mirror of https://github.com/OpenIPC/firmware.git
47 lines
2.0 KiB
Diff
47 lines
2.0 KiB
Diff
diff -drupN a/include/linux/ftrace.h b/include/linux/ftrace.h
|
|
--- a/include/linux/ftrace.h 2018-08-06 17:23:04.000000000 +0300
|
|
+++ b/include/linux/ftrace.h 2022-06-12 05:28:14.000000000 +0300
|
|
@@ -244,8 +244,16 @@ static inline int ftrace_function_local_
|
|
return *this_cpu_ptr(ops->disabled);
|
|
}
|
|
|
|
+#ifdef CONFIG_CFI_CLANG
|
|
+/* Use a C stub with the correct type for CFI */
|
|
+static inline void ftrace_stub(unsigned long a0, unsigned long a1,
|
|
+ struct ftrace_ops *op, struct pt_regs *regs)
|
|
+{
|
|
+}
|
|
+#else
|
|
extern void ftrace_stub(unsigned long a0, unsigned long a1,
|
|
struct ftrace_ops *op, struct pt_regs *regs);
|
|
+#endif
|
|
|
|
#else /* !CONFIG_FUNCTION_TRACER */
|
|
/*
|
|
@@ -398,6 +406,7 @@ int ftrace_set_notrace(struct ftrace_ops
|
|
void ftrace_set_global_filter(unsigned char *buf, int len, int reset);
|
|
void ftrace_set_global_notrace(unsigned char *buf, int len, int reset);
|
|
void ftrace_free_filter(struct ftrace_ops *ops);
|
|
+void ftrace_ops_set_global_filter(struct ftrace_ops *ops);
|
|
|
|
int register_ftrace_command(struct ftrace_func_command *cmd);
|
|
int unregister_ftrace_command(struct ftrace_func_command *cmd);
|
|
@@ -645,6 +654,7 @@ static inline unsigned long ftrace_locat
|
|
#define ftrace_set_filter(ops, buf, len, reset) ({ -ENODEV; })
|
|
#define ftrace_set_notrace(ops, buf, len, reset) ({ -ENODEV; })
|
|
#define ftrace_free_filter(ops) do { } while (0)
|
|
+#define ftrace_ops_set_global_filter(ops) do { } while (0)
|
|
|
|
static inline ssize_t ftrace_filter_write(struct file *file, const char __user *ubuf,
|
|
size_t cnt, loff_t *ppos) { return -ENODEV; }
|
|
@@ -734,7 +744,8 @@ static inline unsigned long get_lock_par
|
|
static inline void time_hardirqs_off(unsigned long a0, unsigned long a1) { }
|
|
#endif
|
|
|
|
-#ifdef CONFIG_PREEMPT_TRACER
|
|
+#if defined(CONFIG_PREEMPT_TRACER) || \
|
|
+ (defined(CONFIG_DEBUG_PREEMPT) && defined(CONFIG_PREEMPTIRQ_EVENTS))
|
|
extern void trace_preempt_on(unsigned long a0, unsigned long a1);
|
|
extern void trace_preempt_off(unsigned long a0, unsigned long a1);
|
|
#else
|