summaryrefslogtreecommitdiff
blob: 845ea08afc544aa6d4a01de31bc0a8bfd937d8be (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
From 225a49a40941e350899e456366265cf82b87ad25 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?T=C3=A9rence=20Clastres?= <t.clastres@gmail.com>
Date: Sun, 31 Jan 2021 20:22:00 +0100
Subject: [PATCH] [core] add support for linux 5.11

This approach maintains compatibility with previous kernel versions.

Thanks to @justinkb for finding the commit that broke it (torvalds/linux@d19ad07).
---
 dkms.conf    | 2 +-
 src/ftrace.c | 8 ++++++++
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/dkms.conf b/dkms.conf
index 396abd3..09fbcf0 100644
--- a/dkms.conf
+++ b/dkms.conf
@@ -1,5 +1,5 @@
 PACKAGE_NAME="vendor-reset"
-PACKAGE_VERSION="0.1.0"
+PACKAGE_VERSION="0.1.1"
 BUILT_MODULE_NAME[0]="${PACKAGE_NAME}"
 MAKE[0]="make KDIR=${kernel_source_dir}"
 CLEAN="make KDIR=${kernel_source_dir} clean"
diff --git a/src/ftrace.c b/src/ftrace.c
index 80bb4aa..7eed223 100644
--- a/src/ftrace.c
+++ b/src/ftrace.c
@@ -22,6 +22,7 @@ Place, Suite 330, Boston, MA 02111-1307 USA
 #include <linux/ftrace.h>
 #include <linux/kprobes.h>
 #include <linux/pci.h>
+#include <linux/version.h>
 
 #include "ftrace.h"
 
@@ -48,8 +49,15 @@ static int resolve_hook_address(struct ftrace_hook *hook)
   return 0;
 }
 
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 11, 0))
 static void notrace fh_trace_thunk(unsigned long ip, unsigned long parent_ip, struct ftrace_ops *ops, struct pt_regs *regs)
 {
+#else
+static void notrace fh_trace_thunk(unsigned long ip, unsigned long parent_ip, struct ftrace_ops *ops, struct ftrace_regs *fregs)
+{
+  struct pt_regs *regs;
+  regs = ftrace_get_regs(fregs);
+#endif
   struct ftrace_hook *hook = to_ftrace_hook(ops);
 
   if (!within_module(parent_ip, THIS_MODULE))