X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=inline;f=include%2Flinux%2Fpersonality.h;h=012cd558189b443e6f3856426313cd783c6a36ce;hb=a2f44b27303a5353859d77a3e96a1d3f33f56ab7;hp=7efc05ea7efc756dd39ec8e2085cd208c31a2666;hpb=48ed9e9ed158dedf557fbe4b9e8b09f109e2a79a;p=linux-2.6.git diff --git a/include/linux/personality.h b/include/linux/personality.h index 7efc05ea7..012cd5581 100644 --- a/include/linux/personality.h +++ b/include/linux/personality.h @@ -1,6 +1,8 @@ #ifndef _LINUX_PERSONALITY_H #define _LINUX_PERSONALITY_H +#ifdef __KERNEL__ + /* * Handling of different ABIs (personalities). */ @@ -12,16 +14,7 @@ extern int register_exec_domain(struct exec_domain *); extern int unregister_exec_domain(struct exec_domain *); extern int __set_personality(unsigned long); - -/* - * Sysctl variables related to binary emulation. - */ -extern unsigned long abi_defhandler_coff; -extern unsigned long abi_defhandler_elf; -extern unsigned long abi_defhandler_lcall7; -extern unsigned long abi_defhandler_libcso; -extern int abi_fake_utsname; - +#endif /* __KERNEL__ */ /* * Flags for bug emulation. @@ -29,6 +22,10 @@ extern int abi_fake_utsname; * These occupy the top three bytes. */ enum { + ADDR_NO_RANDOMIZE = 0x0040000, /* disable randomization of VA space */ + FDPIC_FUNCPTRS = 0x0080000, /* userspace function ptrs point to descriptors + * (signal handling) + */ MMAP_PAGE_ZERO = 0x0100000, ADDR_COMPAT_LAYOUT = 0x0200000, READ_IMPLIES_EXEC = 0x0400000, @@ -43,7 +40,7 @@ enum { * Security-relevant compatibility flags that must be * cleared upon setuid or setgid exec: */ -#define PER_CLEAR_ON_SETID (READ_IMPLIES_EXEC) +#define PER_CLEAR_ON_SETID (READ_IMPLIES_EXEC|ADDR_NO_RANDOMIZE) /* * Personality types. @@ -54,6 +51,7 @@ enum { enum { PER_LINUX = 0x0000, PER_LINUX_32BIT = 0x0000 | ADDR_LIMIT_32BIT, + PER_LINUX_FDPIC = 0x0000 | FDPIC_FUNCPTRS, PER_SVR4 = 0x0001 | STICKY_TIMEOUTS | MMAP_PAGE_ZERO, PER_SVR3 = 0x0002 | STICKY_TIMEOUTS | SHORT_INODE, PER_SCOSVR3 = 0x0003 | STICKY_TIMEOUTS | @@ -77,6 +75,7 @@ enum { PER_MASK = 0x00ff, }; +#ifdef __KERNEL__ /* * Description of an execution domain. @@ -115,6 +114,8 @@ struct exec_domain { * Change personality of the currently running process. */ #define set_personality(pers) \ - ((current->personality == pers) ? 0 : __set_personality(pers)) + ((current->personality == (pers)) ? 0 : __set_personality(pers)) + +#endif /* __KERNEL__ */ #endif /* _LINUX_PERSONALITY_H */