From f2ad878e9b6d3d1efe2fcc27fa40e6213719124a Mon Sep 17 00:00:00 2001 From: keytouch Date: Fri, 22 Dec 2023 11:46:46 +0800 Subject: [PATCH] syscall_steal: rename sys_call_table to fix compile error sys_call_table is already declared in arch/x86/include/asm/syscall.h but of cource not exported by the kernel. before this commit, gcc complains as follows: /usr/src/linux-headers-6.1.0-16-common/arch/x86/include/asm/syscall.h:21:29: note: previous declaration of 'sys_call_table' with type 'long int (* const[])(const struct pt_regs *)' 21 | extern const sys_call_ptr_t sys_call_table[]; --- examples/syscall_steal.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/examples/syscall_steal.c b/examples/syscall_steal.c index 129a4bf..4a2f644 100644 --- a/examples/syscall_steal.c +++ b/examples/syscall_steal.c @@ -61,7 +61,7 @@ module_param(sym, ulong, 0644); #endif /* Version < v5.7 */ -static unsigned long **sys_call_table; +static unsigned long **sys_call_table_stolen; /* UID we want to spy on - will be filled from the command line. */ static uid_t uid = -1; @@ -208,16 +208,16 @@ static void disable_write_protection(void) static int __init syscall_steal_start(void) { - if (!(sys_call_table = acquire_sys_call_table())) + if (!(sys_call_table_stolen = acquire_sys_call_table())) return -1; disable_write_protection(); /* keep track of the original open function */ - original_call = (void *)sys_call_table[__NR_openat]; + original_call = (void *)sys_call_table_stolen[__NR_openat]; /* use our openat function instead */ - sys_call_table[__NR_openat] = (unsigned long *)our_sys_openat; + sys_call_table_stolen[__NR_openat] = (unsigned long *)our_sys_openat; enable_write_protection(); @@ -228,11 +228,11 @@ static int __init syscall_steal_start(void) static void __exit syscall_steal_end(void) { - if (!sys_call_table) + if (!sys_call_table_stolen) return; /* Return the system call back to normal */ - if (sys_call_table[__NR_openat] != (unsigned long *)our_sys_openat) { + if (sys_call_table_stolen[__NR_openat] != (unsigned long *)our_sys_openat) { pr_alert("Somebody else also played with the "); pr_alert("open system call\n"); pr_alert("The system may be left in "); @@ -240,7 +240,7 @@ static void __exit syscall_steal_end(void) } disable_write_protection(); - sys_call_table[__NR_openat] = (unsigned long *)original_call; + sys_call_table_stolen[__NR_openat] = (unsigned long *)original_call; enable_write_protection(); msleep(2000);