diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-05-21 23:27:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-05-21 23:27:36 -0400 |
commit | cb60e3e65c1b96a4d6444a7a13dc7dd48bc15a2b (patch) | |
tree | 4322be35db678f6299348a76ad60a2023954af7d /include/asm-generic | |
parent | 99262a3dafa3290866512ddfb32609198f8973e9 (diff) | |
parent | ff2bb047c4bce9742e94911eeb44b4d6ff4734ab (diff) |
Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security
Pull security subsystem updates from James Morris:
"New notable features:
- The seccomp work from Will Drewry
- PR_{GET,SET}_NO_NEW_PRIVS from Andy Lutomirski
- Longer security labels for Smack from Casey Schaufler
- Additional ptrace restriction modes for Yama by Kees Cook"
Fix up trivial context conflicts in arch/x86/Kconfig and include/linux/filter.h
* 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security: (65 commits)
apparmor: fix long path failure due to disconnected path
apparmor: fix profile lookup for unconfined
ima: fix filename hint to reflect script interpreter name
KEYS: Don't check for NULL key pointer in key_validate()
Smack: allow for significantly longer Smack labels v4
gfp flags for security_inode_alloc()?
Smack: recursive tramsmute
Yama: replace capable() with ns_capable()
TOMOYO: Accept manager programs which do not start with / .
KEYS: Add invalidation support
KEYS: Do LRU discard in full keyrings
KEYS: Permit in-place link replacement in keyring list
KEYS: Perform RCU synchronisation on keys prior to key destruction
KEYS: Announce key type (un)registration
KEYS: Reorganise keys Makefile
KEYS: Move the key config into security/keys/Kconfig
KEYS: Use the compat keyctl() syscall wrapper on Sparc64 for Sparc32 compat
Yama: remove an unused variable
samples/seccomp: fix dependencies on arch macros
Yama: add additional ptrace scopes
...
Diffstat (limited to 'include/asm-generic')
-rw-r--r-- | include/asm-generic/siginfo.h | 22 | ||||
-rw-r--r-- | include/asm-generic/syscall.h | 14 |
2 files changed, 36 insertions, 0 deletions
diff --git a/include/asm-generic/siginfo.h b/include/asm-generic/siginfo.h index 5e5e3865f1ed..8ed67779fc09 100644 --- a/include/asm-generic/siginfo.h +++ b/include/asm-generic/siginfo.h | |||
@@ -98,9 +98,18 @@ typedef struct siginfo { | |||
98 | __ARCH_SI_BAND_T _band; /* POLL_IN, POLL_OUT, POLL_MSG */ | 98 | __ARCH_SI_BAND_T _band; /* POLL_IN, POLL_OUT, POLL_MSG */ |
99 | int _fd; | 99 | int _fd; |
100 | } _sigpoll; | 100 | } _sigpoll; |
101 | |||
102 | /* SIGSYS */ | ||
103 | struct { | ||
104 | void __user *_call_addr; /* calling user insn */ | ||
105 | int _syscall; /* triggering system call number */ | ||
106 | unsigned int _arch; /* AUDIT_ARCH_* of syscall */ | ||
107 | } _sigsys; | ||
101 | } _sifields; | 108 | } _sifields; |
102 | } __ARCH_SI_ATTRIBUTES siginfo_t; | 109 | } __ARCH_SI_ATTRIBUTES siginfo_t; |
103 | 110 | ||
111 | /* If the arch shares siginfo, then it has SIGSYS. */ | ||
112 | #define __ARCH_SIGSYS | ||
104 | #endif | 113 | #endif |
105 | 114 | ||
106 | /* | 115 | /* |
@@ -124,6 +133,11 @@ typedef struct siginfo { | |||
124 | #define si_addr_lsb _sifields._sigfault._addr_lsb | 133 | #define si_addr_lsb _sifields._sigfault._addr_lsb |
125 | #define si_band _sifields._sigpoll._band | 134 | #define si_band _sifields._sigpoll._band |
126 | #define si_fd _sifields._sigpoll._fd | 135 | #define si_fd _sifields._sigpoll._fd |
136 | #ifdef __ARCH_SIGSYS | ||
137 | #define si_call_addr _sifields._sigsys._call_addr | ||
138 | #define si_syscall _sifields._sigsys._syscall | ||
139 | #define si_arch _sifields._sigsys._arch | ||
140 | #endif | ||
127 | 141 | ||
128 | #ifdef __KERNEL__ | 142 | #ifdef __KERNEL__ |
129 | #define __SI_MASK 0xffff0000u | 143 | #define __SI_MASK 0xffff0000u |
@@ -134,6 +148,7 @@ typedef struct siginfo { | |||
134 | #define __SI_CHLD (4 << 16) | 148 | #define __SI_CHLD (4 << 16) |
135 | #define __SI_RT (5 << 16) | 149 | #define __SI_RT (5 << 16) |
136 | #define __SI_MESGQ (6 << 16) | 150 | #define __SI_MESGQ (6 << 16) |
151 | #define __SI_SYS (7 << 16) | ||
137 | #define __SI_CODE(T,N) ((T) | ((N) & 0xffff)) | 152 | #define __SI_CODE(T,N) ((T) | ((N) & 0xffff)) |
138 | #else | 153 | #else |
139 | #define __SI_KILL 0 | 154 | #define __SI_KILL 0 |
@@ -143,6 +158,7 @@ typedef struct siginfo { | |||
143 | #define __SI_CHLD 0 | 158 | #define __SI_CHLD 0 |
144 | #define __SI_RT 0 | 159 | #define __SI_RT 0 |
145 | #define __SI_MESGQ 0 | 160 | #define __SI_MESGQ 0 |
161 | #define __SI_SYS 0 | ||
146 | #define __SI_CODE(T,N) (N) | 162 | #define __SI_CODE(T,N) (N) |
147 | #endif | 163 | #endif |
148 | 164 | ||
@@ -240,6 +256,12 @@ typedef struct siginfo { | |||
240 | #define NSIGPOLL 6 | 256 | #define NSIGPOLL 6 |
241 | 257 | ||
242 | /* | 258 | /* |
259 | * SIGSYS si_codes | ||
260 | */ | ||
261 | #define SYS_SECCOMP (__SI_SYS|1) /* seccomp triggered */ | ||
262 | #define NSIGSYS 1 | ||
263 | |||
264 | /* | ||
243 | * sigevent definitions | 265 | * sigevent definitions |
244 | * | 266 | * |
245 | * It seems likely that SIGEV_THREAD will have to be handled from | 267 | * It seems likely that SIGEV_THREAD will have to be handled from |
diff --git a/include/asm-generic/syscall.h b/include/asm-generic/syscall.h index 5c122ae6bfa6..5b09392db673 100644 --- a/include/asm-generic/syscall.h +++ b/include/asm-generic/syscall.h | |||
@@ -142,4 +142,18 @@ void syscall_set_arguments(struct task_struct *task, struct pt_regs *regs, | |||
142 | unsigned int i, unsigned int n, | 142 | unsigned int i, unsigned int n, |
143 | const unsigned long *args); | 143 | const unsigned long *args); |
144 | 144 | ||
145 | /** | ||
146 | * syscall_get_arch - return the AUDIT_ARCH for the current system call | ||
147 | * @task: task of interest, must be in system call entry tracing | ||
148 | * @regs: task_pt_regs() of @task | ||
149 | * | ||
150 | * Returns the AUDIT_ARCH_* based on the system call convention in use. | ||
151 | * | ||
152 | * It's only valid to call this when @task is stopped on entry to a system | ||
153 | * call, due to %TIF_SYSCALL_TRACE, %TIF_SYSCALL_AUDIT, or %TIF_SECCOMP. | ||
154 | * | ||
155 | * Architectures which permit CONFIG_HAVE_ARCH_SECCOMP_FILTER must | ||
156 | * provide an implementation of this. | ||
157 | */ | ||
158 | int syscall_get_arch(struct task_struct *task, struct pt_regs *regs); | ||
145 | #endif /* _ASM_SYSCALL_H */ | 159 | #endif /* _ASM_SYSCALL_H */ |