Index: security-sequence/include/linux/sysctl.h =================================================================== RCS file: /home/andrea/crypto/cvs/linux-2.5/include/linux/sysctl.h,v retrieving revision 1.75 diff -u -p -r1.75 sysctl.h --- security-sequence/include/linux/sysctl.h 24 Jun 2004 15:54:04 -0000 1.75 +++ security-sequence/include/linux/sysctl.h 1 Aug 2004 09:20:58 -0000 @@ -133,6 +133,7 @@ enum KERN_NGROUPS_MAX=63, /* int: NGROUPS_MAX */ KERN_SPARC_SCONS_PWROFF=64, /* int: serial console power-off halt */ KERN_HZ_TIMER=65, /* int: hz timer on or off */ + KERN_SECURITY_SEQUENCE=66, /* int: security sequence number */ }; Index: security-sequence/kernel/sysctl.c =================================================================== RCS file: /home/andrea/crypto/cvs/linux-2.5/kernel/sysctl.c,v retrieving revision 1.83 diff -u -p -r1.83 sysctl.c --- security-sequence/kernel/sysctl.c 31 Jul 2004 05:49:36 -0000 1.83 +++ security-sequence/kernel/sysctl.c 1 Aug 2004 09:55:44 -0000 @@ -71,6 +71,15 @@ static int minolduid; static int ngroups_max = NGROUPS_MAX; +/* + * bump this sequence number after fixing any kernel security bug + * that could render insecure some userspace application. This + * way future versions of the userpace application will be able + * to reliably make sure to run on a secure kernel. + * I hope 31bit are enough... ;). + */ +static int security_sequence; + #ifdef CONFIG_KMOD extern char modprobe_path[]; #endif @@ -620,6 +629,14 @@ static ctl_table kern_table[] = { .mode = 0444, .proc_handler = &proc_dointvec, }, + { + .ctl_name = KERN_SECURITY_SEQUENCE, + .procname = "security_sequence", + .data = &security_sequence, + .maxlen = sizeof (int), + .mode = 0444, + .proc_handler = &proc_dointvec, + }, { .ctl_name = 0 } };