Blame view
include/linux/personality.h
3.45 KB
1da177e4c Linux-2.6.12-rc2 |
1 2 |
#ifndef _LINUX_PERSONALITY_H #define _LINUX_PERSONALITY_H |
34e856e6a [PATCH] Make <lin... |
3 |
#ifdef __KERNEL__ |
1da177e4c Linux-2.6.12-rc2 |
4 5 6 7 8 9 10 11 12 |
/* * Handling of different ABIs (personalities). */ struct exec_domain; struct pt_regs; extern int register_exec_domain(struct exec_domain *); extern int unregister_exec_domain(struct exec_domain *); |
485d52768 sys_personality: ... |
13 |
extern int __set_personality(unsigned int); |
1da177e4c Linux-2.6.12-rc2 |
14 |
|
34e856e6a [PATCH] Make <lin... |
15 |
#endif /* __KERNEL__ */ |
1da177e4c Linux-2.6.12-rc2 |
16 17 18 19 20 21 |
/* * Flags for bug emulation. * * These occupy the top three bytes. */ enum { |
be27425dc Add a personality... |
22 |
UNAME26 = 0x0020000, |
1da177e4c Linux-2.6.12-rc2 |
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
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, ADDR_LIMIT_32BIT = 0x0800000, SHORT_INODE = 0x1000000, WHOLE_SECONDS = 0x2000000, STICKY_TIMEOUTS = 0x4000000, ADDR_LIMIT_3GB = 0x8000000, }; /* * Security-relevant compatibility flags that must be * cleared upon setuid or setgid exec: */ |
f9fabcb58 personality: fix ... |
41 42 43 44 |
#define PER_CLEAR_ON_SETID (READ_IMPLIES_EXEC | \ ADDR_NO_RANDOMIZE | \ ADDR_COMPAT_LAYOUT | \ MMAP_PAGE_ZERO) |
1da177e4c Linux-2.6.12-rc2 |
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
/* * Personality types. * * These go in the low byte. Avoid using the top bit, it will * conflict with error returns. */ 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 | WHOLE_SECONDS | SHORT_INODE, PER_OSR5 = 0x0003 | STICKY_TIMEOUTS | WHOLE_SECONDS, PER_WYSEV386 = 0x0004 | STICKY_TIMEOUTS | SHORT_INODE, PER_ISCR4 = 0x0005 | STICKY_TIMEOUTS, PER_BSD = 0x0006, PER_SUNOS = 0x0006 | STICKY_TIMEOUTS, PER_XENIX = 0x0007 | STICKY_TIMEOUTS | SHORT_INODE, PER_LINUX32 = 0x0008, PER_LINUX32_3GB = 0x0008 | ADDR_LIMIT_3GB, PER_IRIX32 = 0x0009 | STICKY_TIMEOUTS,/* IRIX5 32-bit */ PER_IRIXN32 = 0x000a | STICKY_TIMEOUTS,/* IRIX6 new 32-bit */ PER_IRIX64 = 0x000b | STICKY_TIMEOUTS,/* IRIX6 64-bit */ PER_RISCOS = 0x000c, PER_SOLARIS = 0x000d | STICKY_TIMEOUTS, PER_UW7 = 0x000e | STICKY_TIMEOUTS | MMAP_PAGE_ZERO, PER_OSF4 = 0x000f, /* OSF/1 v4 */ PER_HPUX = 0x0010, PER_MASK = 0x00ff, }; |
34e856e6a [PATCH] Make <lin... |
78 |
#ifdef __KERNEL__ |
1da177e4c Linux-2.6.12-rc2 |
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
/* * Description of an execution domain. * * The first two members are refernced from assembly source * and should stay where they are unless explicitly needed. */ typedef void (*handler_t)(int, struct pt_regs *); struct exec_domain { const char *name; /* name of the execdomain */ handler_t handler; /* handler for syscalls */ unsigned char pers_low; /* lowest personality */ unsigned char pers_high; /* highest personality */ unsigned long *signal_map; /* signal mapping */ unsigned long *signal_invmap; /* reverse signal mapping */ struct map_segment *err_map; /* error mapping */ struct map_segment *socktype_map; /* socket type mapping */ struct map_segment *sockopt_map; /* socket option mapping */ struct map_segment *af_map; /* address family mapping */ struct module *module; /* module context of the ed. */ struct exec_domain *next; /* linked list (internal) */ }; /* * Return the base personality without flags. */ #define personality(pers) (pers & PER_MASK) |
1da177e4c Linux-2.6.12-rc2 |
107 108 109 110 111 |
/* * Change personality of the currently running process. */ #define set_personality(pers) \ |
d8b295f29 [PATCH] Fix missi... |
112 |
((current->personality == (pers)) ? 0 : __set_personality(pers)) |
1da177e4c Linux-2.6.12-rc2 |
113 |
|
34e856e6a [PATCH] Make <lin... |
114 |
#endif /* __KERNEL__ */ |
1da177e4c Linux-2.6.12-rc2 |
115 |
#endif /* _LINUX_PERSONALITY_H */ |