Back to igraltist's experiences
diff -u --recursive rsbac_2.6.31.5/fs/exec.c rsbac_2.6.31.5_r802/fs/exec.c --- rsbac_2.6.31.5/fs/exec.c 2009-10-28 23:55:52.844771089 +0100 +++ rsbac_2.6.31.5_r802/fs/exec.c 2009-10-28 23:43:38.169770699 +0100 @@ -55,12 +55,23 @@ #include <linux/kmod.h> #include <linux/fsnotify.h> #include <linux/fs_struct.h> +#include <linux/random.h> +#include <linux/seq_file.h> +#ifdef CONFIG_PAX_REFCOUNT +#include <linux/kallsyms.h> +#include <linux/kdebug.h> +#endif #include <asm/uaccess.h> #include <asm/mmu_context.h> #include <asm/tlb.h> #include "internal.h" +#ifdef CONFIG_PAX_HOOK_ACL_FLAGS +void (*pax_set_initial_flags_func)(struct linux_binprm *bprm); +EXPORT_SYMBOL(pax_set_initial_flags_func); +#endif + #include <rsbac/hooks.h> int core_uses_pid; diff -u --recursive rsbac_2.6.31.5/fs/pipe.c rsbac_2.6.31.5_r802/fs/pipe.c --- rsbac_2.6.31.5/fs/pipe.c 2009-10-28 23:55:54.697835298 +0100 +++ rsbac_2.6.31.5_r802/fs/pipe.c 2009-10-28 23:42:44.939358139 +0100 @@ -776,10 +776,10 @@ mutex_lock(&inode->i_mutex); pipe = inode->i_pipe; - pipe->readers -= decr; - pipe->writers -= decw; - - if (!pipe->readers && !pipe->writers) { + atomic_sub(decr, &pipe->readers); + atomic_sub(decw, &pipe->writers); + + if (!atomic_read(&pipe->readers) && !atomic_read(&pipe->writers)) { #ifdef CONFIG_RSBAC union rsbac_target_id_t rsbac_target_id; diff -u --recursive rsbac_2.6.31.5/init/do_mounts.c rsbac_2.6.31.5_r802/init/do_mounts.c --- rsbac_2.6.31.5/init/do_mounts.c 2009-10-28 23:55:57.681869144 +0100 +++ rsbac_2.6.31.5_r802/init/do_mounts.c 2009-10-28 23:43:38.169770699 +0100 @@ -423,8 +423,8 @@ mount_root(); out: - sys_mount(".", "/", NULL, MS_MOVE, NULL); - sys_chroot("."); + sys_mount((char __user *)".", (char __user *)"/", NULL, MS_MOVE, NULL); + sys_chroot((char __user *)"."); /* RSBAC: OK, most stuff initialized and root mounted: Init RSBAC. */ #ifdef CONFIG_RSBAC diff -u --recursive rsbac_2.6.31.5/mm/mprotect.c rsbac_2.6.31.5_r802/mm/mprotect.c --- rsbac_2.6.31.5/mm/mprotect.c 2009-10-28 23:55:59.767198890 +0100 +++ rsbac_2.6.31.5_r802/mm/mprotect.c 2009-10-28 23:43:38.196557623 +0100 @@ -24,10 +24,17 @@ #include <linux/mmu_notifier.h> #include <linux/migrate.h> #include <linux/perf_counter.h> + +#ifdef CONFIG_PAX_MPROTECT +#include <linux/elf.h> +#endif + #include <asm/uaccess.h> #include <asm/pgtable.h> #include <asm/cacheflush.h> #include <asm/tlbflush.h> +#include <asm/mmu_context.h> + #include <rsbac/hooks.h> #ifndef pgprot_modify