aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/personality.h
blob: 126120819a0dba4aeb931094094c27d3d80f9aa0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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
78
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#ifndef _LINUX_PERSONALITY_H
#define _LINUX_PERSONALITY_H

#ifdef __KERNEL__

/*
 * 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 *);
extern int		__set_personality(unsigned long);

#endif /* __KERNEL__ */

/*
 * Flags for bug emulation.
 *
 * 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,
	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:
 */
#define PER_CLEAR_ON_SETID (READ_IMPLIES_EXEC  | \
			    ADDR_NO_RANDOMIZE  | \
			    ADDR_COMPAT_LAYOUT | \
			    MMAP_PAGE_ZERO)

/*
 * 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,
};

#ifdef __KERNEL__

/*
 * 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)


/*
 * Change personality of the currently running process.
 */
#define set_personality(pers) \
	((current->personality == (pers)) ? 0 : __set_personality(pers))

#endif /* __KERNEL__ */

#endif /* _LINUX_PERSONALITY_H */
1:56:27 -0400 committer Greg Kroah-Hartman <gregkh@suse.de> 2010-09-22 11:24:30 -0400 Staging: Add support for Flarion OFDM usb and pcmcia devices.' href='/cgit/cgit.cgi/litmus-rt-imx6.git/commit/drivers/staging/Kconfig?id=f7c1be0cca2aa39dcea68f54287fb00f840a5ff4'>f7c1be0cca2a
c6e3fd22cd53

78fd115e2108

eba499d3e376

32890b983086

4860c73804c6
9d8e18b1e966
f4dc23861d9d

b0406db5b3e4

247e9cffdce0

15a4bc17b7f4

7372add4a154
8feaf0ce1a04
7040e556c90a

2d96650139bf

e692da4d0e58

7b6d45c211a4

68a81291ff66

e5711071ad94

112a35edd6a6

2e82b83dc30e

6f98b1a250cb

535f60a405a0

4b4cdf3979c3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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
78
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143





                                                                        
                                                                         






                                                                       
                                           







                                                                        
 

          
                                       
 

                                        

                                      

                                        

                                        

                                     

                                       

                                          

                                          

                                      

                                          

                                         
                                         
 

                                        

                                        

                                         

                                       

                                      

                                       

                                           

                                       
                                       
 

                                    

                                    
                                     
 

                                         


                                            
 
                                        
 
                                          
 
                                       
 

                                      

                                            

                                           

                                          

                                      

                                    

                                       

                                        

                                         

                                         

                                     
                                      
 

                                        

                                       

                                        

                                    
                                               
 

                                        

                                        

                                        

                                     

                                       

                                         

                                       

                                         

                                         

                                     
               
menuconfig STAGING
	bool "Staging drivers"
	default n
	---help---
	  This option allows you to select a number of drivers that are
	  not of the "normal" Linux kernel quality level.  These drivers
	  are placed here in order to get a wider audience to make use of
	  them.  Please note that these drivers are under heavy
	  development, may or may not work, and may contain userspace
	  interfaces that most likely will be changed in the near
	  future.

	  Using any of these drivers will taint your kernel which might
	  affect support options from both the community, and various
	  commercial support organizations.

	  If you wish to work on these drivers, to help improve them, or
	  to report problems you have with them, please see the
	  driver_name.README file in the drivers/staging/ directory to
	  see what needs to be worked on, and who to contact.

	  If in doubt, say N here.


if STAGING

source "drivers/staging/et131x/Kconfig"

source "drivers/staging/slicoss/Kconfig"

source "drivers/staging/usbip/Kconfig"

source "drivers/staging/winbond/Kconfig"

source "drivers/staging/wlan-ng/Kconfig"

source "drivers/staging/echo/Kconfig"

source "drivers/staging/comedi/Kconfig"

source "drivers/staging/olpc_dcon/Kconfig"

source "drivers/staging/asus_oled/Kconfig"

source "drivers/staging/panel/Kconfig"

source "drivers/staging/rtl8187se/Kconfig"

source "drivers/staging/rtl8192u/Kconfig"

source "drivers/staging/rtl8192e/Kconfig"

source "drivers/staging/rtl8712/Kconfig"

source "drivers/staging/rts5139/Kconfig"

source "drivers/staging/frontier/Kconfig"

source "drivers/staging/phison/Kconfig"

source "drivers/staging/line6/Kconfig"

source "drivers/staging/octeon/Kconfig"

source "drivers/staging/serqt_usb2/Kconfig"

source "drivers/staging/vt6655/Kconfig"

source "drivers/staging/vt6656/Kconfig"

source "drivers/staging/sep/Kconfig"

source "drivers/staging/iio/Kconfig"

source "drivers/staging/zram/Kconfig"

source "drivers/staging/zsmalloc/Kconfig"

source "drivers/staging/wlags49_h2/Kconfig"

source "drivers/staging/wlags49_h25/Kconfig"

source "drivers/staging/sm7xxfb/Kconfig"

source "drivers/staging/crystalhd/Kconfig"

source "drivers/staging/cxt1e1/Kconfig"

source "drivers/staging/xgifb/Kconfig"

source "drivers/staging/tidspbridge/Kconfig"

source "drivers/staging/quickstart/Kconfig"

source "drivers/staging/sbe-2t3e3/Kconfig"

source "drivers/staging/keucr/Kconfig"

source "drivers/staging/bcm/Kconfig"

source "drivers/staging/ft1000/Kconfig"

source "drivers/staging/speakup/Kconfig"

source "drivers/staging/cptm1217/Kconfig"

source "drivers/staging/ste_rmi4/Kconfig"

source "drivers/staging/nvec/Kconfig"

source "drivers/staging/media/Kconfig"

source "drivers/staging/android/Kconfig"

source "drivers/staging/ozwpan/Kconfig"

source "drivers/staging/gdm72xx/Kconfig"

source "drivers/staging/csr/Kconfig"

source "drivers/staging/ti-soc-thermal/Kconfig"

source "drivers/staging/silicom/Kconfig"

source "drivers/staging/ced1401/Kconfig"

source "drivers/staging/imx-drm/Kconfig"

source "drivers/staging/dgrp/Kconfig"

source "drivers/staging/sb105x/Kconfig"

source "drivers/staging/fwserial/Kconfig"

source "drivers/staging/zcache/Kconfig"

source "drivers/staging/goldfish/Kconfig"

source "drivers/staging/netlogic/Kconfig"

source "drivers/staging/dwc2/Kconfig"

endif # STAGING