Re: [PATCH] Read only syscall tables for x86_64 and i386

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 28 Jun 2005, Arjan van de Ven wrote:

> I like it.. however I think the 32 bit compat syscall table on x86-64
> deserves the same treatment....

Ok.

---

Place x86_64 and i386 syscall table into the read only section.

Remove the syscall tables from the data section and place them into the 
readonly section (like IA64). Includes the ia32 syscall table on x86_64.

Note that AFS seems to be modifying the syscall table. Is that legit?

Signed-off-by: Christoph Lameter <[email protected]>

Index: linux-2.6.12-mm2/arch/i386/kernel/entry.S
===================================================================
--- linux-2.6.12-mm2.orig/arch/i386/kernel/entry.S	2005-06-28 18:34:11.000000000 +0000
+++ linux-2.6.12-mm2/arch/i386/kernel/entry.S	2005-06-28 19:06:42.000000000 +0000
@@ -680,6 +680,7 @@ ENTRY(spurious_interrupt_bug)
 	pushl $do_spurious_interrupt_bug
 	jmp error_code
 
+.section .rodata,"a"
 #include "syscall_table.S"
 
 syscall_table_size=(.-sys_call_table)
Index: linux-2.6.12-mm2/arch/i386/kernel/syscall_table.S
===================================================================
--- linux-2.6.12-mm2.orig/arch/i386/kernel/syscall_table.S	2005-06-28 18:34:11.000000000 +0000
+++ linux-2.6.12-mm2/arch/i386/kernel/syscall_table.S	2005-06-28 19:06:42.000000000 +0000
@@ -1,4 +1,3 @@
-.data
 ENTRY(sys_call_table)
 	.long sys_restart_syscall	/* 0 - old "setup()" system call, used for restarting */
 	.long sys_exit
Index: linux-2.6.12-mm2/arch/x86_64/kernel/syscall.c
===================================================================
--- linux-2.6.12-mm2.orig/arch/x86_64/kernel/syscall.c	2005-06-28 18:34:11.000000000 +0000
+++ linux-2.6.12-mm2/arch/x86_64/kernel/syscall.c	2005-06-28 19:06:42.000000000 +0000
@@ -19,7 +19,7 @@ typedef void (*sys_call_ptr_t)(void); 
 
 extern void sys_ni_syscall(void);
 
-sys_call_ptr_t sys_call_table[__NR_syscall_max+1] __cacheline_aligned = { 
+const sys_call_ptr_t sys_call_table[__NR_syscall_max+1] = { 
 	/* Smells like a like a compiler bug -- it doesn't work when the & below is removed. */ 
 	[0 ... __NR_syscall_max] = &sys_ni_syscall,
 #include <asm-x86_64/unistd.h>
Index: linux-2.6.12-mm2/arch/x86_64/ia32/ia32entry.S
===================================================================
--- linux-2.6.12-mm2.orig/arch/x86_64/ia32/ia32entry.S	2005-06-28 17:46:31.000000000 +0000
+++ linux-2.6.12-mm2/arch/x86_64/ia32/ia32entry.S	2005-06-28 19:13:20.000000000 +0000
@@ -298,7 +298,7 @@ ENTRY(ia32_ptregs_common)
 	jmp  ia32_sysret	/* misbalances the return cache */
 	CFI_ENDPROC
 
-	.data
+	.section .rodata,"a"
 	.align 8
 	.globl ia32_sys_call_table
 ia32_sys_call_table:
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux