CRED: Wrap current->cred and a few other accessors
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / include / linux / securebits.h
CommitLineData
1da177e4
LT
1#ifndef _LINUX_SECUREBITS_H
2#define _LINUX_SECUREBITS_H 1
3
4#define SECUREBITS_DEFAULT 0x00000000
5
1da177e4
LT
6/* When set UID 0 has no special privileges. When unset, we support
7 inheritance of root-permissions and suid-root executable under
8 compatibility mode. We raise the effective and inheritable bitmasks
9 *of the executable file* if the effective uid of the new process is
086f7316 10 0. If the real uid is 0, we raise the effective (legacy) bit of the
1da177e4 11 executable file. */
3898b1b4
AM
12#define SECURE_NOROOT 0
13#define SECURE_NOROOT_LOCKED 1 /* make bit-0 immutable */
1da177e4 14
086f7316
AM
15/* When set, setuid to/from uid 0 does not trigger capability-"fixup".
16 When unset, to provide compatiblility with old programs relying on
17 set*uid to gain/lose privilege, transitions to/from uid 0 cause
18 capabilities to be gained/lost. */
3898b1b4
AM
19#define SECURE_NO_SETUID_FIXUP 2
20#define SECURE_NO_SETUID_FIXUP_LOCKED 3 /* make bit-2 immutable */
21
22/* When set, a process can retain its capabilities even after
23 transitioning to a non-root user (the set-uid fixup suppressed by
24 bit 2). Bit-4 is cleared when a process calls exec(); setting both
25 bit 4 and 5 will create a barrier through exec that no exec()'d
26 child can use this feature again. */
27#define SECURE_KEEP_CAPS 4
28#define SECURE_KEEP_CAPS_LOCKED 5 /* make bit-4 immutable */
1da177e4 29
086f7316 30/* Each securesetting is implemented using two bits. One bit specifies
1da177e4 31 whether the setting is on or off. The other bit specify whether the
086f7316
AM
32 setting is locked or not. A setting which is locked cannot be
33 changed from user-level. */
3898b1b4 34#define issecure_mask(X) (1 << (X))
86a264ab 35#define issecure(X) (issecure_mask(X) & current_cred_xxx(securebits))
1da177e4 36
3898b1b4
AM
37#define SECURE_ALL_BITS (issecure_mask(SECURE_NOROOT) | \
38 issecure_mask(SECURE_NO_SETUID_FIXUP) | \
39 issecure_mask(SECURE_KEEP_CAPS))
40#define SECURE_ALL_LOCKS (SECURE_ALL_BITS << 1)
1da177e4
LT
41
42#endif /* !_LINUX_SECUREBITS_H */