This source file includes following definitions.
- lkdtm_increment_void
- lkdtm_increment_int
- lkdtm_CFI_FORWARD_PROTO
1
2
3
4
5 #include "lkdtm.h"
6
7 static int called_count;
8
9
10 static noinline void lkdtm_increment_void(int *counter)
11 {
12 (*counter)++;
13 }
14
15
16 static noinline int lkdtm_increment_int(int *counter)
17 {
18 (*counter)++;
19
20 return *counter;
21 }
22
23
24
25 void lkdtm_CFI_FORWARD_PROTO(void)
26 {
27
28
29
30
31 void (*func)(int *);
32
33 pr_info("Calling matched prototype ...\n");
34 func = lkdtm_increment_void;
35 func(&called_count);
36
37 pr_info("Calling mismatched prototype ...\n");
38 func = (void *)lkdtm_increment_int;
39 func(&called_count);
40
41 pr_info("Fail: survived mismatched prototype function call!\n");
42 }