diff options
-rw-r--r-- | arch/x86/include/asm/compat.h | 2 | ||||
-rw-r--r-- | drivers/usb/core/devio.c | 4 | ||||
-rw-r--r-- | fs/binfmt_elf.c | 6 | ||||
-rw-r--r-- | fs/coredump.c | 2 | ||||
-rw-r--r-- | fs/fcntl.c | 2 | ||||
-rw-r--r-- | fs/signalfd.c | 6 | ||||
-rw-r--r-- | include/linux/binfmts.h | 2 | ||||
-rw-r--r-- | include/linux/compat.h | 4 | ||||
-rw-r--r-- | include/linux/coredump.h | 4 | ||||
-rw-r--r-- | include/linux/lsm_hooks.h | 4 | ||||
-rw-r--r-- | include/linux/posix-timers.h | 2 | ||||
-rw-r--r-- | include/linux/ptrace.h | 2 | ||||
-rw-r--r-- | include/linux/sched.h | 2 | ||||
-rw-r--r-- | include/linux/sched/signal.h | 18 | ||||
-rw-r--r-- | include/linux/security.h | 6 | ||||
-rw-r--r-- | include/linux/signal.h | 15 | ||||
-rw-r--r-- | include/linux/signal_types.h | 11 | ||||
-rw-r--r-- | include/trace/events/signal.h | 4 | ||||
-rw-r--r-- | ipc/mqueue.c | 2 | ||||
-rw-r--r-- | kernel/ptrace.c | 10 | ||||
-rw-r--r-- | kernel/seccomp.c | 6 | ||||
-rw-r--r-- | kernel/signal.c | 151 | ||||
-rw-r--r-- | kernel/time/posix-timers.c | 2 | ||||
-rw-r--r-- | security/apparmor/lsm.c | 2 | ||||
-rw-r--r-- | security/security.c | 2 | ||||
-rw-r--r-- | security/selinux/hooks.c | 2 | ||||
-rw-r--r-- | security/smack/smack_lsm.c | 2 |
27 files changed, 165 insertions, 110 deletions
diff --git a/arch/x86/include/asm/compat.h b/arch/x86/include/asm/compat.h index fb97cf7c4137..a0f46bdd9f24 100644 --- a/arch/x86/include/asm/compat.h +++ b/arch/x86/include/asm/compat.h | |||
@@ -240,6 +240,6 @@ static inline bool in_compat_syscall(void) | |||
240 | 240 | ||
241 | struct compat_siginfo; | 241 | struct compat_siginfo; |
242 | int __copy_siginfo_to_user32(struct compat_siginfo __user *to, | 242 | int __copy_siginfo_to_user32(struct compat_siginfo __user *to, |
243 | const siginfo_t *from, bool x32_ABI); | 243 | const kernel_siginfo_t *from, bool x32_ABI); |
244 | 244 | ||
245 | #endif /* _ASM_X86_COMPAT_H */ | 245 | #endif /* _ASM_X86_COMPAT_H */ |
diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c index 6ce77b33da61..c260ea8808b0 100644 --- a/drivers/usb/core/devio.c +++ b/drivers/usb/core/devio.c | |||
@@ -582,7 +582,7 @@ static void async_completed(struct urb *urb) | |||
582 | { | 582 | { |
583 | struct async *as = urb->context; | 583 | struct async *as = urb->context; |
584 | struct usb_dev_state *ps = as->ps; | 584 | struct usb_dev_state *ps = as->ps; |
585 | struct siginfo sinfo; | 585 | struct kernel_siginfo sinfo; |
586 | struct pid *pid = NULL; | 586 | struct pid *pid = NULL; |
587 | const struct cred *cred = NULL; | 587 | const struct cred *cred = NULL; |
588 | unsigned long flags; | 588 | unsigned long flags; |
@@ -2599,7 +2599,7 @@ const struct file_operations usbdev_file_operations = { | |||
2599 | static void usbdev_remove(struct usb_device *udev) | 2599 | static void usbdev_remove(struct usb_device *udev) |
2600 | { | 2600 | { |
2601 | struct usb_dev_state *ps; | 2601 | struct usb_dev_state *ps; |
2602 | struct siginfo sinfo; | 2602 | struct kernel_siginfo sinfo; |
2603 | 2603 | ||
2604 | while (!list_empty(&udev->filelist)) { | 2604 | while (!list_empty(&udev->filelist)) { |
2605 | ps = list_entry(udev->filelist.next, struct usb_dev_state, list); | 2605 | ps = list_entry(udev->filelist.next, struct usb_dev_state, list); |
diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c index efae2fb0930a..54207327f98f 100644 --- a/fs/binfmt_elf.c +++ b/fs/binfmt_elf.c | |||
@@ -1580,7 +1580,7 @@ static void fill_auxv_note(struct memelfnote *note, struct mm_struct *mm) | |||
1580 | } | 1580 | } |
1581 | 1581 | ||
1582 | static void fill_siginfo_note(struct memelfnote *note, user_siginfo_t *csigdata, | 1582 | static void fill_siginfo_note(struct memelfnote *note, user_siginfo_t *csigdata, |
1583 | const siginfo_t *siginfo) | 1583 | const kernel_siginfo_t *siginfo) |
1584 | { | 1584 | { |
1585 | mm_segment_t old_fs = get_fs(); | 1585 | mm_segment_t old_fs = get_fs(); |
1586 | set_fs(KERNEL_DS); | 1586 | set_fs(KERNEL_DS); |
@@ -1782,7 +1782,7 @@ static int fill_thread_core_info(struct elf_thread_core_info *t, | |||
1782 | 1782 | ||
1783 | static int fill_note_info(struct elfhdr *elf, int phdrs, | 1783 | static int fill_note_info(struct elfhdr *elf, int phdrs, |
1784 | struct elf_note_info *info, | 1784 | struct elf_note_info *info, |
1785 | const siginfo_t *siginfo, struct pt_regs *regs) | 1785 | const kernel_siginfo_t *siginfo, struct pt_regs *regs) |
1786 | { | 1786 | { |
1787 | struct task_struct *dump_task = current; | 1787 | struct task_struct *dump_task = current; |
1788 | const struct user_regset_view *view = task_user_regset_view(dump_task); | 1788 | const struct user_regset_view *view = task_user_regset_view(dump_task); |
@@ -2031,7 +2031,7 @@ static int elf_note_info_init(struct elf_note_info *info) | |||
2031 | 2031 | ||
2032 | static int fill_note_info(struct elfhdr *elf, int phdrs, | 2032 | static int fill_note_info(struct elfhdr *elf, int phdrs, |
2033 | struct elf_note_info *info, | 2033 | struct elf_note_info *info, |
2034 | const siginfo_t *siginfo, struct pt_regs *regs) | 2034 | const kernel_siginfo_t *siginfo, struct pt_regs *regs) |
2035 | { | 2035 | { |
2036 | struct list_head *t; | 2036 | struct list_head *t; |
2037 | struct core_thread *ct; | 2037 | struct core_thread *ct; |
diff --git a/fs/coredump.c b/fs/coredump.c index 1e2c87acac9b..e42e17e55bfd 100644 --- a/fs/coredump.c +++ b/fs/coredump.c | |||
@@ -536,7 +536,7 @@ static int umh_pipe_setup(struct subprocess_info *info, struct cred *new) | |||
536 | return err; | 536 | return err; |
537 | } | 537 | } |
538 | 538 | ||
539 | void do_coredump(const siginfo_t *siginfo) | 539 | void do_coredump(const kernel_siginfo_t *siginfo) |
540 | { | 540 | { |
541 | struct core_state core_state; | 541 | struct core_state core_state; |
542 | struct core_name cn; | 542 | struct core_name cn; |
diff --git a/fs/fcntl.c b/fs/fcntl.c index 4137d96534a6..083185174c6d 100644 --- a/fs/fcntl.c +++ b/fs/fcntl.c | |||
@@ -735,7 +735,7 @@ static void send_sigio_to_task(struct task_struct *p, | |||
735 | return; | 735 | return; |
736 | 736 | ||
737 | switch (signum) { | 737 | switch (signum) { |
738 | siginfo_t si; | 738 | kernel_siginfo_t si; |
739 | default: | 739 | default: |
740 | /* Queue a rt signal with the appropriate fd as its | 740 | /* Queue a rt signal with the appropriate fd as its |
741 | value. We use SI_SIGIO as the source, not | 741 | value. We use SI_SIGIO as the source, not |
diff --git a/fs/signalfd.c b/fs/signalfd.c index 4fcd1498acf5..757afc7c5895 100644 --- a/fs/signalfd.c +++ b/fs/signalfd.c | |||
@@ -79,7 +79,7 @@ static __poll_t signalfd_poll(struct file *file, poll_table *wait) | |||
79 | * Copied from copy_siginfo_to_user() in kernel/signal.c | 79 | * Copied from copy_siginfo_to_user() in kernel/signal.c |
80 | */ | 80 | */ |
81 | static int signalfd_copyinfo(struct signalfd_siginfo __user *uinfo, | 81 | static int signalfd_copyinfo(struct signalfd_siginfo __user *uinfo, |
82 | siginfo_t const *kinfo) | 82 | kernel_siginfo_t const *kinfo) |
83 | { | 83 | { |
84 | struct signalfd_siginfo new; | 84 | struct signalfd_siginfo new; |
85 | 85 | ||
@@ -163,7 +163,7 @@ static int signalfd_copyinfo(struct signalfd_siginfo __user *uinfo, | |||
163 | return sizeof(*uinfo); | 163 | return sizeof(*uinfo); |
164 | } | 164 | } |
165 | 165 | ||
166 | static ssize_t signalfd_dequeue(struct signalfd_ctx *ctx, siginfo_t *info, | 166 | static ssize_t signalfd_dequeue(struct signalfd_ctx *ctx, kernel_siginfo_t *info, |
167 | int nonblock) | 167 | int nonblock) |
168 | { | 168 | { |
169 | ssize_t ret; | 169 | ssize_t ret; |
@@ -215,7 +215,7 @@ static ssize_t signalfd_read(struct file *file, char __user *buf, size_t count, | |||
215 | struct signalfd_siginfo __user *siginfo; | 215 | struct signalfd_siginfo __user *siginfo; |
216 | int nonblock = file->f_flags & O_NONBLOCK; | 216 | int nonblock = file->f_flags & O_NONBLOCK; |
217 | ssize_t ret, total = 0; | 217 | ssize_t ret, total = 0; |
218 | siginfo_t info; | 218 | kernel_siginfo_t info; |
219 | 219 | ||
220 | count /= sizeof(struct signalfd_siginfo); | 220 | count /= sizeof(struct signalfd_siginfo); |
221 | if (!count) | 221 | if (!count) |
diff --git a/include/linux/binfmts.h b/include/linux/binfmts.h index c05f24fac4f6..e9f5fe69df31 100644 --- a/include/linux/binfmts.h +++ b/include/linux/binfmts.h | |||
@@ -78,7 +78,7 @@ struct linux_binprm { | |||
78 | 78 | ||
79 | /* Function parameter for binfmt->coredump */ | 79 | /* Function parameter for binfmt->coredump */ |
80 | struct coredump_params { | 80 | struct coredump_params { |
81 | const siginfo_t *siginfo; | 81 | const kernel_siginfo_t *siginfo; |
82 | struct pt_regs *regs; | 82 | struct pt_regs *regs; |
83 | struct file *file; | 83 | struct file *file; |
84 | unsigned long limit; | 84 | unsigned long limit; |
diff --git a/include/linux/compat.h b/include/linux/compat.h index 1a3c4f37e908..4565d65b1776 100644 --- a/include/linux/compat.h +++ b/include/linux/compat.h | |||
@@ -452,8 +452,8 @@ long compat_get_bitmap(unsigned long *mask, const compat_ulong_t __user *umask, | |||
452 | unsigned long bitmap_size); | 452 | unsigned long bitmap_size); |
453 | long compat_put_bitmap(compat_ulong_t __user *umask, unsigned long *mask, | 453 | long compat_put_bitmap(compat_ulong_t __user *umask, unsigned long *mask, |
454 | unsigned long bitmap_size); | 454 | unsigned long bitmap_size); |
455 | int copy_siginfo_from_user32(siginfo_t *to, const struct compat_siginfo __user *from); | 455 | int copy_siginfo_from_user32(kernel_siginfo_t *to, const struct compat_siginfo __user *from); |
456 | int copy_siginfo_to_user32(struct compat_siginfo __user *to, const siginfo_t *from); | 456 | int copy_siginfo_to_user32(struct compat_siginfo __user *to, const kernel_siginfo_t *from); |
457 | int get_compat_sigevent(struct sigevent *event, | 457 | int get_compat_sigevent(struct sigevent *event, |
458 | const struct compat_sigevent __user *u_event); | 458 | const struct compat_sigevent __user *u_event); |
459 | 459 | ||
diff --git a/include/linux/coredump.h b/include/linux/coredump.h index 207aed96a5b7..abf4b4e65dbb 100644 --- a/include/linux/coredump.h +++ b/include/linux/coredump.h | |||
@@ -17,9 +17,9 @@ extern int dump_emit(struct coredump_params *cprm, const void *addr, int nr); | |||
17 | extern int dump_align(struct coredump_params *cprm, int align); | 17 | extern int dump_align(struct coredump_params *cprm, int align); |
18 | extern void dump_truncate(struct coredump_params *cprm); | 18 | extern void dump_truncate(struct coredump_params *cprm); |
19 | #ifdef CONFIG_COREDUMP | 19 | #ifdef CONFIG_COREDUMP |
20 | extern void do_coredump(const siginfo_t *siginfo); | 20 | extern void do_coredump(const kernel_siginfo_t *siginfo); |
21 | #else | 21 | #else |
22 | static inline void do_coredump(const siginfo_t *siginfo) {} | 22 | static inline void do_coredump(const kernel_siginfo_t *siginfo) {} |
23 | #endif | 23 | #endif |
24 | 24 | ||
25 | #endif /* _LINUX_COREDUMP_H */ | 25 | #endif /* _LINUX_COREDUMP_H */ |
diff --git a/include/linux/lsm_hooks.h b/include/linux/lsm_hooks.h index 97a020c616ad..bb40f6d34163 100644 --- a/include/linux/lsm_hooks.h +++ b/include/linux/lsm_hooks.h | |||
@@ -672,7 +672,7 @@ | |||
672 | * Return 0 if permission is granted. | 672 | * Return 0 if permission is granted. |
673 | * @task_kill: | 673 | * @task_kill: |
674 | * Check permission before sending signal @sig to @p. @info can be NULL, | 674 | * Check permission before sending signal @sig to @p. @info can be NULL, |
675 | * the constant 1, or a pointer to a siginfo structure. If @info is 1 or | 675 | * the constant 1, or a pointer to a kernel_siginfo structure. If @info is 1 or |
676 | * SI_FROMKERNEL(info) is true, then the signal should be viewed as coming | 676 | * SI_FROMKERNEL(info) is true, then the signal should be viewed as coming |
677 | * from the kernel and should typically be permitted. | 677 | * from the kernel and should typically be permitted. |
678 | * SIGIO signals are handled separately by the send_sigiotask hook in | 678 | * SIGIO signals are handled separately by the send_sigiotask hook in |
@@ -1606,7 +1606,7 @@ union security_list_options { | |||
1606 | int (*task_setscheduler)(struct task_struct *p); | 1606 | int (*task_setscheduler)(struct task_struct *p); |
1607 | int (*task_getscheduler)(struct task_struct *p); | 1607 | int (*task_getscheduler)(struct task_struct *p); |
1608 | int (*task_movememory)(struct task_struct *p); | 1608 | int (*task_movememory)(struct task_struct *p); |
1609 | int (*task_kill)(struct task_struct *p, struct siginfo *info, | 1609 | int (*task_kill)(struct task_struct *p, struct kernel_siginfo *info, |
1610 | int sig, const struct cred *cred); | 1610 | int sig, const struct cred *cred); |
1611 | int (*task_prctl)(int option, unsigned long arg2, unsigned long arg3, | 1611 | int (*task_prctl)(int option, unsigned long arg2, unsigned long arg3, |
1612 | unsigned long arg4, unsigned long arg5); | 1612 | unsigned long arg4, unsigned long arg5); |
diff --git a/include/linux/posix-timers.h b/include/linux/posix-timers.h index ee7e987ea1b4..e96581ca7c9d 100644 --- a/include/linux/posix-timers.h +++ b/include/linux/posix-timers.h | |||
@@ -126,5 +126,5 @@ void set_process_cpu_timer(struct task_struct *task, unsigned int clock_idx, | |||
126 | 126 | ||
127 | void update_rlimit_cpu(struct task_struct *task, unsigned long rlim_new); | 127 | void update_rlimit_cpu(struct task_struct *task, unsigned long rlim_new); |
128 | 128 | ||
129 | void posixtimer_rearm(struct siginfo *info); | 129 | void posixtimer_rearm(struct kernel_siginfo *info); |
130 | #endif | 130 | #endif |
diff --git a/include/linux/ptrace.h b/include/linux/ptrace.h index 1de2235511c8..d19a795100da 100644 --- a/include/linux/ptrace.h +++ b/include/linux/ptrace.h | |||
@@ -341,7 +341,7 @@ extern void user_single_step_report(struct pt_regs *regs); | |||
341 | #else | 341 | #else |
342 | static inline void user_single_step_report(struct pt_regs *regs) | 342 | static inline void user_single_step_report(struct pt_regs *regs) |
343 | { | 343 | { |
344 | siginfo_t info; | 344 | kernel_siginfo_t info; |
345 | clear_siginfo(&info); | 345 | clear_siginfo(&info); |
346 | info.si_signo = SIGTRAP; | 346 | info.si_signo = SIGTRAP; |
347 | info.si_errno = 0; | 347 | info.si_errno = 0; |
diff --git a/include/linux/sched.h b/include/linux/sched.h index 977cb57d7bc9..2ba88082e1ef 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -960,7 +960,7 @@ struct task_struct { | |||
960 | 960 | ||
961 | /* Ptrace state: */ | 961 | /* Ptrace state: */ |
962 | unsigned long ptrace_message; | 962 | unsigned long ptrace_message; |
963 | siginfo_t *last_siginfo; | 963 | kernel_siginfo_t *last_siginfo; |
964 | 964 | ||
965 | struct task_io_accounting ioac; | 965 | struct task_io_accounting ioac; |
966 | #ifdef CONFIG_TASK_XACCT | 966 | #ifdef CONFIG_TASK_XACCT |
diff --git a/include/linux/sched/signal.h b/include/linux/sched/signal.h index 9e07f3521549..13789d10a50e 100644 --- a/include/linux/sched/signal.h +++ b/include/linux/sched/signal.h | |||
@@ -270,12 +270,12 @@ static inline int signal_group_exit(const struct signal_struct *sig) | |||
270 | extern void flush_signals(struct task_struct *); | 270 | extern void flush_signals(struct task_struct *); |
271 | extern void ignore_signals(struct task_struct *); | 271 | extern void ignore_signals(struct task_struct *); |
272 | extern void flush_signal_handlers(struct task_struct *, int force_default); | 272 | extern void flush_signal_handlers(struct task_struct *, int force_default); |
273 | extern int dequeue_signal(struct task_struct *tsk, sigset_t *mask, siginfo_t *info); | 273 | extern int dequeue_signal(struct task_struct *tsk, sigset_t *mask, kernel_siginfo_t *info); |
274 | 274 | ||
275 | static inline int kernel_dequeue_signal(void) | 275 | static inline int kernel_dequeue_signal(void) |
276 | { | 276 | { |
277 | struct task_struct *tsk = current; | 277 | struct task_struct *tsk = current; |
278 | siginfo_t __info; | 278 | kernel_siginfo_t __info; |
279 | int ret; | 279 | int ret; |
280 | 280 | ||
281 | spin_lock_irq(&tsk->sighand->siglock); | 281 | spin_lock_irq(&tsk->sighand->siglock); |
@@ -322,12 +322,12 @@ int force_sig_pkuerr(void __user *addr, u32 pkey); | |||
322 | 322 | ||
323 | int force_sig_ptrace_errno_trap(int errno, void __user *addr); | 323 | int force_sig_ptrace_errno_trap(int errno, void __user *addr); |
324 | 324 | ||
325 | extern int send_sig_info(int, struct siginfo *, struct task_struct *); | 325 | extern int send_sig_info(int, struct kernel_siginfo *, struct task_struct *); |
326 | extern void force_sigsegv(int sig, struct task_struct *p); | 326 | extern void force_sigsegv(int sig, struct task_struct *p); |
327 | extern int force_sig_info(int, struct siginfo *, struct task_struct *); | 327 | extern int force_sig_info(int, struct kernel_siginfo *, struct task_struct *); |
328 | extern int __kill_pgrp_info(int sig, struct siginfo *info, struct pid *pgrp); | 328 | extern int __kill_pgrp_info(int sig, struct kernel_siginfo *info, struct pid *pgrp); |
329 | extern int kill_pid_info(int sig, struct siginfo *info, struct pid *pid); | 329 | extern int kill_pid_info(int sig, struct kernel_siginfo *info, struct pid *pid); |
330 | extern int kill_pid_info_as_cred(int, struct siginfo *, struct pid *, | 330 | extern int kill_pid_info_as_cred(int, struct kernel_siginfo *, struct pid *, |
331 | const struct cred *); | 331 | const struct cred *); |
332 | extern int kill_pgrp(struct pid *pid, int sig, int priv); | 332 | extern int kill_pgrp(struct pid *pid, int sig, int priv); |
333 | extern int kill_pid(struct pid *pid, int sig, int priv); | 333 | extern int kill_pid(struct pid *pid, int sig, int priv); |
@@ -475,8 +475,8 @@ static inline int kill_cad_pid(int sig, int priv) | |||
475 | } | 475 | } |
476 | 476 | ||
477 | /* These can be the second arg to send_sig_info/send_group_sig_info. */ | 477 | /* These can be the second arg to send_sig_info/send_group_sig_info. */ |
478 | #define SEND_SIG_NOINFO ((struct siginfo *) 0) | 478 | #define SEND_SIG_NOINFO ((struct kernel_siginfo *) 0) |
479 | #define SEND_SIG_PRIV ((struct siginfo *) 1) | 479 | #define SEND_SIG_PRIV ((struct kernel_siginfo *) 1) |
480 | 480 | ||
481 | /* | 481 | /* |
482 | * True if we are on the alternate signal stack. | 482 | * True if we are on the alternate signal stack. |
diff --git a/include/linux/security.h b/include/linux/security.h index 75f4156c84d7..d170a5b031f3 100644 --- a/include/linux/security.h +++ b/include/linux/security.h | |||
@@ -35,7 +35,7 @@ | |||
35 | struct linux_binprm; | 35 | struct linux_binprm; |
36 | struct cred; | 36 | struct cred; |
37 | struct rlimit; | 37 | struct rlimit; |
38 | struct siginfo; | 38 | struct kernel_siginfo; |
39 | struct sembuf; | 39 | struct sembuf; |
40 | struct kern_ipc_perm; | 40 | struct kern_ipc_perm; |
41 | struct audit_context; | 41 | struct audit_context; |
@@ -361,7 +361,7 @@ int security_task_setrlimit(struct task_struct *p, unsigned int resource, | |||
361 | int security_task_setscheduler(struct task_struct *p); | 361 | int security_task_setscheduler(struct task_struct *p); |
362 | int security_task_getscheduler(struct task_struct *p); | 362 | int security_task_getscheduler(struct task_struct *p); |
363 | int security_task_movememory(struct task_struct *p); | 363 | int security_task_movememory(struct task_struct *p); |
364 | int security_task_kill(struct task_struct *p, struct siginfo *info, | 364 | int security_task_kill(struct task_struct *p, struct kernel_siginfo *info, |
365 | int sig, const struct cred *cred); | 365 | int sig, const struct cred *cred); |
366 | int security_task_prctl(int option, unsigned long arg2, unsigned long arg3, | 366 | int security_task_prctl(int option, unsigned long arg2, unsigned long arg3, |
367 | unsigned long arg4, unsigned long arg5); | 367 | unsigned long arg4, unsigned long arg5); |
@@ -1020,7 +1020,7 @@ static inline int security_task_movememory(struct task_struct *p) | |||
1020 | } | 1020 | } |
1021 | 1021 | ||
1022 | static inline int security_task_kill(struct task_struct *p, | 1022 | static inline int security_task_kill(struct task_struct *p, |
1023 | struct siginfo *info, int sig, | 1023 | struct kernel_siginfo *info, int sig, |
1024 | const struct cred *cred) | 1024 | const struct cred *cred) |
1025 | { | 1025 | { |
1026 | return 0; | 1026 | return 0; |
diff --git a/include/linux/signal.h b/include/linux/signal.h index de94c159bfb0..70031b10b918 100644 --- a/include/linux/signal.h +++ b/include/linux/signal.h | |||
@@ -11,18 +11,19 @@ struct task_struct; | |||
11 | /* for sysctl */ | 11 | /* for sysctl */ |
12 | extern int print_fatal_signals; | 12 | extern int print_fatal_signals; |
13 | 13 | ||
14 | static inline void copy_siginfo(struct siginfo *to, const struct siginfo *from) | 14 | static inline void copy_siginfo(kernel_siginfo_t *to, |
15 | const kernel_siginfo_t *from) | ||
15 | { | 16 | { |
16 | memcpy(to, from, sizeof(*to)); | 17 | memcpy(to, from, sizeof(*to)); |
17 | } | 18 | } |
18 | 19 | ||
19 | static inline void clear_siginfo(struct siginfo *info) | 20 | static inline void clear_siginfo(kernel_siginfo_t *info) |
20 | { | 21 | { |
21 | memset(info, 0, sizeof(*info)); | 22 | memset(info, 0, sizeof(*info)); |
22 | } | 23 | } |
23 | 24 | ||
24 | int copy_siginfo_to_user(struct siginfo __user *to, const struct siginfo *from); | 25 | int copy_siginfo_to_user(siginfo_t __user *to, const kernel_siginfo_t *from); |
25 | int copy_siginfo_from_user(struct siginfo *to, const struct siginfo __user *from); | 26 | int copy_siginfo_from_user(kernel_siginfo_t *to, const siginfo_t __user *from); |
26 | 27 | ||
27 | enum siginfo_layout { | 28 | enum siginfo_layout { |
28 | SIL_KILL, | 29 | SIL_KILL, |
@@ -258,11 +259,11 @@ struct pt_regs; | |||
258 | enum pid_type; | 259 | enum pid_type; |
259 | 260 | ||
260 | extern int next_signal(struct sigpending *pending, sigset_t *mask); | 261 | extern int next_signal(struct sigpending *pending, sigset_t *mask); |
261 | extern int do_send_sig_info(int sig, struct siginfo *info, | 262 | extern int do_send_sig_info(int sig, struct kernel_siginfo *info, |
262 | struct task_struct *p, enum pid_type type); | 263 | struct task_struct *p, enum pid_type type); |
263 | extern int group_send_sig_info(int sig, struct siginfo *info, | 264 | extern int group_send_sig_info(int sig, struct kernel_siginfo *info, |
264 | struct task_struct *p, enum pid_type type); | 265 | struct task_struct *p, enum pid_type type); |
265 | extern int __group_send_sig_info(int, struct siginfo *, struct task_struct *); | 266 | extern int __group_send_sig_info(int, struct kernel_siginfo *, struct task_struct *); |
266 | extern int sigprocmask(int, sigset_t *, sigset_t *); | 267 | extern int sigprocmask(int, sigset_t *, sigset_t *); |
267 | extern void set_current_blocked(sigset_t *); | 268 | extern void set_current_blocked(sigset_t *); |
268 | extern void __set_current_blocked(const sigset_t *); | 269 | extern void __set_current_blocked(const sigset_t *); |
diff --git a/include/linux/signal_types.h b/include/linux/signal_types.h index 222ae696000b..2a40a9c5e4ad 100644 --- a/include/linux/signal_types.h +++ b/include/linux/signal_types.h | |||
@@ -9,6 +9,13 @@ | |||
9 | #include <linux/list.h> | 9 | #include <linux/list.h> |
10 | #include <uapi/linux/signal.h> | 10 | #include <uapi/linux/signal.h> |
11 | 11 | ||
12 | typedef struct kernel_siginfo { | ||
13 | union { | ||
14 | __SIGINFO; | ||
15 | int _si_pad[SI_MAX_SIZE/sizeof(int)]; | ||
16 | }; | ||
17 | } kernel_siginfo_t; | ||
18 | |||
12 | /* | 19 | /* |
13 | * Real Time signals may be queued. | 20 | * Real Time signals may be queued. |
14 | */ | 21 | */ |
@@ -16,7 +23,7 @@ | |||
16 | struct sigqueue { | 23 | struct sigqueue { |
17 | struct list_head list; | 24 | struct list_head list; |
18 | int flags; | 25 | int flags; |
19 | siginfo_t info; | 26 | kernel_siginfo_t info; |
20 | struct user_struct *user; | 27 | struct user_struct *user; |
21 | }; | 28 | }; |
22 | 29 | ||
@@ -60,7 +67,7 @@ struct old_sigaction { | |||
60 | 67 | ||
61 | struct ksignal { | 68 | struct ksignal { |
62 | struct k_sigaction ka; | 69 | struct k_sigaction ka; |
63 | siginfo_t info; | 70 | kernel_siginfo_t info; |
64 | int sig; | 71 | int sig; |
65 | }; | 72 | }; |
66 | 73 | ||
diff --git a/include/trace/events/signal.h b/include/trace/events/signal.h index 3deeed50ffd0..1db7e4b07c01 100644 --- a/include/trace/events/signal.h +++ b/include/trace/events/signal.h | |||
@@ -49,7 +49,7 @@ enum { | |||
49 | */ | 49 | */ |
50 | TRACE_EVENT(signal_generate, | 50 | TRACE_EVENT(signal_generate, |
51 | 51 | ||
52 | TP_PROTO(int sig, struct siginfo *info, struct task_struct *task, | 52 | TP_PROTO(int sig, struct kernel_siginfo *info, struct task_struct *task, |
53 | int group, int result), | 53 | int group, int result), |
54 | 54 | ||
55 | TP_ARGS(sig, info, task, group, result), | 55 | TP_ARGS(sig, info, task, group, result), |
@@ -95,7 +95,7 @@ TRACE_EVENT(signal_generate, | |||
95 | */ | 95 | */ |
96 | TRACE_EVENT(signal_deliver, | 96 | TRACE_EVENT(signal_deliver, |
97 | 97 | ||
98 | TP_PROTO(int sig, struct siginfo *info, struct k_sigaction *ka), | 98 | TP_PROTO(int sig, struct kernel_siginfo *info, struct k_sigaction *ka), |
99 | 99 | ||
100 | TP_ARGS(sig, info, ka), | 100 | TP_ARGS(sig, info, ka), |
101 | 101 | ||
diff --git a/ipc/mqueue.c b/ipc/mqueue.c index c0d58f390c3b..cc41de3b8deb 100644 --- a/ipc/mqueue.c +++ b/ipc/mqueue.c | |||
@@ -655,7 +655,7 @@ static void __do_notify(struct mqueue_inode_info *info) | |||
655 | * synchronously. */ | 655 | * synchronously. */ |
656 | if (info->notify_owner && | 656 | if (info->notify_owner && |
657 | info->attr.mq_curmsgs == 1) { | 657 | info->attr.mq_curmsgs == 1) { |
658 | struct siginfo sig_i; | 658 | struct kernel_siginfo sig_i; |
659 | switch (info->notify.sigev_notify) { | 659 | switch (info->notify.sigev_notify) { |
660 | case SIGEV_NONE: | 660 | case SIGEV_NONE: |
661 | break; | 661 | break; |
diff --git a/kernel/ptrace.c b/kernel/ptrace.c index a807ff5cc1a9..c2cee9db5204 100644 --- a/kernel/ptrace.c +++ b/kernel/ptrace.c | |||
@@ -651,7 +651,7 @@ static int ptrace_setoptions(struct task_struct *child, unsigned long data) | |||
651 | return 0; | 651 | return 0; |
652 | } | 652 | } |
653 | 653 | ||
654 | static int ptrace_getsiginfo(struct task_struct *child, siginfo_t *info) | 654 | static int ptrace_getsiginfo(struct task_struct *child, kernel_siginfo_t *info) |
655 | { | 655 | { |
656 | unsigned long flags; | 656 | unsigned long flags; |
657 | int error = -ESRCH; | 657 | int error = -ESRCH; |
@@ -667,7 +667,7 @@ static int ptrace_getsiginfo(struct task_struct *child, siginfo_t *info) | |||
667 | return error; | 667 | return error; |
668 | } | 668 | } |
669 | 669 | ||
670 | static int ptrace_setsiginfo(struct task_struct *child, const siginfo_t *info) | 670 | static int ptrace_setsiginfo(struct task_struct *child, const kernel_siginfo_t *info) |
671 | { | 671 | { |
672 | unsigned long flags; | 672 | unsigned long flags; |
673 | int error = -ESRCH; | 673 | int error = -ESRCH; |
@@ -709,7 +709,7 @@ static int ptrace_peek_siginfo(struct task_struct *child, | |||
709 | pending = &child->pending; | 709 | pending = &child->pending; |
710 | 710 | ||
711 | for (i = 0; i < arg.nr; ) { | 711 | for (i = 0; i < arg.nr; ) { |
712 | siginfo_t info; | 712 | kernel_siginfo_t info; |
713 | s32 off = arg.off + i; | 713 | s32 off = arg.off + i; |
714 | 714 | ||
715 | spin_lock_irq(&child->sighand->siglock); | 715 | spin_lock_irq(&child->sighand->siglock); |
@@ -885,7 +885,7 @@ int ptrace_request(struct task_struct *child, long request, | |||
885 | { | 885 | { |
886 | bool seized = child->ptrace & PT_SEIZED; | 886 | bool seized = child->ptrace & PT_SEIZED; |
887 | int ret = -EIO; | 887 | int ret = -EIO; |
888 | siginfo_t siginfo, *si; | 888 | kernel_siginfo_t siginfo, *si; |
889 | void __user *datavp = (void __user *) data; | 889 | void __user *datavp = (void __user *) data; |
890 | unsigned long __user *datalp = datavp; | 890 | unsigned long __user *datalp = datavp; |
891 | unsigned long flags; | 891 | unsigned long flags; |
@@ -1180,7 +1180,7 @@ int compat_ptrace_request(struct task_struct *child, compat_long_t request, | |||
1180 | { | 1180 | { |
1181 | compat_ulong_t __user *datap = compat_ptr(data); | 1181 | compat_ulong_t __user *datap = compat_ptr(data); |
1182 | compat_ulong_t word; | 1182 | compat_ulong_t word; |
1183 | siginfo_t siginfo; | 1183 | kernel_siginfo_t siginfo; |
1184 | int ret; | 1184 | int ret; |
1185 | 1185 | ||
1186 | switch (request) { | 1186 | switch (request) { |
diff --git a/kernel/seccomp.c b/kernel/seccomp.c index fd023ac24e10..4d7809cdd27d 100644 --- a/kernel/seccomp.c +++ b/kernel/seccomp.c | |||
@@ -522,7 +522,7 @@ void put_seccomp_filter(struct task_struct *tsk) | |||
522 | __put_seccomp_filter(tsk->seccomp.filter); | 522 | __put_seccomp_filter(tsk->seccomp.filter); |
523 | } | 523 | } |
524 | 524 | ||
525 | static void seccomp_init_siginfo(siginfo_t *info, int syscall, int reason) | 525 | static void seccomp_init_siginfo(kernel_siginfo_t *info, int syscall, int reason) |
526 | { | 526 | { |
527 | clear_siginfo(info); | 527 | clear_siginfo(info); |
528 | info->si_signo = SIGSYS; | 528 | info->si_signo = SIGSYS; |
@@ -542,7 +542,7 @@ static void seccomp_init_siginfo(siginfo_t *info, int syscall, int reason) | |||
542 | */ | 542 | */ |
543 | static void seccomp_send_sigsys(int syscall, int reason) | 543 | static void seccomp_send_sigsys(int syscall, int reason) |
544 | { | 544 | { |
545 | struct siginfo info; | 545 | struct kernel_siginfo info; |
546 | seccomp_init_siginfo(&info, syscall, reason); | 546 | seccomp_init_siginfo(&info, syscall, reason); |
547 | force_sig_info(SIGSYS, &info, current); | 547 | force_sig_info(SIGSYS, &info, current); |
548 | } | 548 | } |
@@ -747,7 +747,7 @@ static int __seccomp_filter(int this_syscall, const struct seccomp_data *sd, | |||
747 | /* Dump core only if this is the last remaining thread. */ | 747 | /* Dump core only if this is the last remaining thread. */ |
748 | if (action == SECCOMP_RET_KILL_PROCESS || | 748 | if (action == SECCOMP_RET_KILL_PROCESS || |
749 | get_nr_threads(current) == 1) { | 749 | get_nr_threads(current) == 1) { |
750 | siginfo_t info; | 750 | kernel_siginfo_t info; |
751 | 751 | ||
752 | /* Show the original registers in the dump. */ | 752 | /* Show the original registers in the dump. */ |
753 | syscall_rollback(current, task_pt_regs(current)); | 753 | syscall_rollback(current, task_pt_regs(current)); |
diff --git a/kernel/signal.c b/kernel/signal.c index c0e289e62d77..161cad4e448c 100644 --- a/kernel/signal.c +++ b/kernel/signal.c | |||
@@ -549,7 +549,7 @@ bool unhandled_signal(struct task_struct *tsk, int sig) | |||
549 | return !tsk->ptrace; | 549 | return !tsk->ptrace; |
550 | } | 550 | } |
551 | 551 | ||
552 | static void collect_signal(int sig, struct sigpending *list, siginfo_t *info, | 552 | static void collect_signal(int sig, struct sigpending *list, kernel_siginfo_t *info, |
553 | bool *resched_timer) | 553 | bool *resched_timer) |
554 | { | 554 | { |
555 | struct sigqueue *q, *first = NULL; | 555 | struct sigqueue *q, *first = NULL; |
@@ -595,7 +595,7 @@ still_pending: | |||
595 | } | 595 | } |
596 | 596 | ||
597 | static int __dequeue_signal(struct sigpending *pending, sigset_t *mask, | 597 | static int __dequeue_signal(struct sigpending *pending, sigset_t *mask, |
598 | siginfo_t *info, bool *resched_timer) | 598 | kernel_siginfo_t *info, bool *resched_timer) |
599 | { | 599 | { |
600 | int sig = next_signal(pending, mask); | 600 | int sig = next_signal(pending, mask); |
601 | 601 | ||
@@ -610,7 +610,7 @@ static int __dequeue_signal(struct sigpending *pending, sigset_t *mask, | |||
610 | * | 610 | * |
611 | * All callers have to hold the siglock. | 611 | * All callers have to hold the siglock. |
612 | */ | 612 | */ |
613 | int dequeue_signal(struct task_struct *tsk, sigset_t *mask, siginfo_t *info) | 613 | int dequeue_signal(struct task_struct *tsk, sigset_t *mask, kernel_siginfo_t *info) |
614 | { | 614 | { |
615 | bool resched_timer = false; | 615 | bool resched_timer = false; |
616 | int signr; | 616 | int signr; |
@@ -737,12 +737,12 @@ static void flush_sigqueue_mask(sigset_t *mask, struct sigpending *s) | |||
737 | } | 737 | } |
738 | } | 738 | } |
739 | 739 | ||
740 | static inline int is_si_special(const struct siginfo *info) | 740 | static inline int is_si_special(const struct kernel_siginfo *info) |
741 | { | 741 | { |
742 | return info <= SEND_SIG_PRIV; | 742 | return info <= SEND_SIG_PRIV; |
743 | } | 743 | } |
744 | 744 | ||
745 | static inline bool si_fromuser(const struct siginfo *info) | 745 | static inline bool si_fromuser(const struct kernel_siginfo *info) |
746 | { | 746 | { |
747 | return info == SEND_SIG_NOINFO || | 747 | return info == SEND_SIG_NOINFO || |
748 | (!is_si_special(info) && SI_FROMUSER(info)); | 748 | (!is_si_special(info) && SI_FROMUSER(info)); |
@@ -767,7 +767,7 @@ static bool kill_ok_by_cred(struct task_struct *t) | |||
767 | * Bad permissions for sending the signal | 767 | * Bad permissions for sending the signal |
768 | * - the caller must hold the RCU read lock | 768 | * - the caller must hold the RCU read lock |
769 | */ | 769 | */ |
770 | static int check_kill_permission(int sig, struct siginfo *info, | 770 | static int check_kill_permission(int sig, struct kernel_siginfo *info, |
771 | struct task_struct *t) | 771 | struct task_struct *t) |
772 | { | 772 | { |
773 | struct pid *sid; | 773 | struct pid *sid; |
@@ -1010,7 +1010,7 @@ static inline bool legacy_queue(struct sigpending *signals, int sig) | |||
1010 | } | 1010 | } |
1011 | 1011 | ||
1012 | #ifdef CONFIG_USER_NS | 1012 | #ifdef CONFIG_USER_NS |
1013 | static inline void userns_fixup_signal_uid(struct siginfo *info, struct task_struct *t) | 1013 | static inline void userns_fixup_signal_uid(struct kernel_siginfo *info, struct task_struct *t) |
1014 | { | 1014 | { |
1015 | if (current_user_ns() == task_cred_xxx(t, user_ns)) | 1015 | if (current_user_ns() == task_cred_xxx(t, user_ns)) |
1016 | return; | 1016 | return; |
@@ -1024,13 +1024,13 @@ static inline void userns_fixup_signal_uid(struct siginfo *info, struct task_str | |||
1024 | rcu_read_unlock(); | 1024 | rcu_read_unlock(); |
1025 | } | 1025 | } |
1026 | #else | 1026 | #else |
1027 | static inline void userns_fixup_signal_uid(struct siginfo *info, struct task_struct *t) | 1027 | static inline void userns_fixup_signal_uid(struct kernel_siginfo *info, struct task_struct *t) |
1028 | { | 1028 | { |
1029 | return; | 1029 | return; |
1030 | } | 1030 | } |
1031 | #endif | 1031 | #endif |
1032 | 1032 | ||
1033 | static int __send_signal(int sig, struct siginfo *info, struct task_struct *t, | 1033 | static int __send_signal(int sig, struct kernel_siginfo *info, struct task_struct *t, |
1034 | enum pid_type type, int from_ancestor_ns) | 1034 | enum pid_type type, int from_ancestor_ns) |
1035 | { | 1035 | { |
1036 | struct sigpending *pending; | 1036 | struct sigpending *pending; |
@@ -1150,7 +1150,7 @@ ret: | |||
1150 | return ret; | 1150 | return ret; |
1151 | } | 1151 | } |
1152 | 1152 | ||
1153 | static int send_signal(int sig, struct siginfo *info, struct task_struct *t, | 1153 | static int send_signal(int sig, struct kernel_siginfo *info, struct task_struct *t, |
1154 | enum pid_type type) | 1154 | enum pid_type type) |
1155 | { | 1155 | { |
1156 | int from_ancestor_ns = 0; | 1156 | int from_ancestor_ns = 0; |
@@ -1197,12 +1197,12 @@ static int __init setup_print_fatal_signals(char *str) | |||
1197 | __setup("print-fatal-signals=", setup_print_fatal_signals); | 1197 | __setup("print-fatal-signals=", setup_print_fatal_signals); |
1198 | 1198 | ||
1199 | int | 1199 | int |
1200 | __group_send_sig_info(int sig, struct siginfo *info, struct task_struct *p) | 1200 | __group_send_sig_info(int sig, struct kernel_siginfo *info, struct task_struct *p) |
1201 | { | 1201 | { |
1202 | return send_signal(sig, info, p, PIDTYPE_TGID); | 1202 | return send_signal(sig, info, p, PIDTYPE_TGID); |
1203 | } | 1203 | } |
1204 | 1204 | ||
1205 | int do_send_sig_info(int sig, struct siginfo *info, struct task_struct *p, | 1205 | int do_send_sig_info(int sig, struct kernel_siginfo *info, struct task_struct *p, |
1206 | enum pid_type type) | 1206 | enum pid_type type) |
1207 | { | 1207 | { |
1208 | unsigned long flags; | 1208 | unsigned long flags; |
@@ -1228,7 +1228,7 @@ int do_send_sig_info(int sig, struct siginfo *info, struct task_struct *p, | |||
1228 | * that is why we also clear SIGNAL_UNKILLABLE. | 1228 | * that is why we also clear SIGNAL_UNKILLABLE. |
1229 | */ | 1229 | */ |
1230 | int | 1230 | int |
1231 | force_sig_info(int sig, struct siginfo *info, struct task_struct *t) | 1231 | force_sig_info(int sig, struct kernel_siginfo *info, struct task_struct *t) |
1232 | { | 1232 | { |
1233 | unsigned long int flags; | 1233 | unsigned long int flags; |
1234 | int ret, blocked, ignored; | 1234 | int ret, blocked, ignored; |
@@ -1316,8 +1316,8 @@ struct sighand_struct *__lock_task_sighand(struct task_struct *tsk, | |||
1316 | /* | 1316 | /* |
1317 | * send signal info to all the members of a group | 1317 | * send signal info to all the members of a group |
1318 | */ | 1318 | */ |
1319 | int group_send_sig_info(int sig, struct siginfo *info, struct task_struct *p, | 1319 | int group_send_sig_info(int sig, struct kernel_siginfo *info, |
1320 | enum pid_type type) | 1320 | struct task_struct *p, enum pid_type type) |
1321 | { | 1321 | { |
1322 | int ret; | 1322 | int ret; |
1323 | 1323 | ||
@@ -1336,7 +1336,7 @@ int group_send_sig_info(int sig, struct siginfo *info, struct task_struct *p, | |||
1336 | * control characters do (^C, ^Z etc) | 1336 | * control characters do (^C, ^Z etc) |
1337 | * - the caller must hold at least a readlock on tasklist_lock | 1337 | * - the caller must hold at least a readlock on tasklist_lock |
1338 | */ | 1338 | */ |
1339 | int __kill_pgrp_info(int sig, struct siginfo *info, struct pid *pgrp) | 1339 | int __kill_pgrp_info(int sig, struct kernel_siginfo *info, struct pid *pgrp) |
1340 | { | 1340 | { |
1341 | struct task_struct *p = NULL; | 1341 | struct task_struct *p = NULL; |
1342 | int retval, success; | 1342 | int retval, success; |
@@ -1351,7 +1351,7 @@ int __kill_pgrp_info(int sig, struct siginfo *info, struct pid *pgrp) | |||
1351 | return success ? 0 : retval; | 1351 | return success ? 0 : retval; |
1352 | } | 1352 | } |
1353 | 1353 | ||
1354 | int kill_pid_info(int sig, struct siginfo *info, struct pid *pid) | 1354 | int kill_pid_info(int sig, struct kernel_siginfo *info, struct pid *pid) |
1355 | { | 1355 | { |
1356 | int error = -ESRCH; | 1356 | int error = -ESRCH; |
1357 | struct task_struct *p; | 1357 | struct task_struct *p; |
@@ -1373,7 +1373,7 @@ int kill_pid_info(int sig, struct siginfo *info, struct pid *pid) | |||
1373 | } | 1373 | } |
1374 | } | 1374 | } |
1375 | 1375 | ||
1376 | static int kill_proc_info(int sig, struct siginfo *info, pid_t pid) | 1376 | static int kill_proc_info(int sig, struct kernel_siginfo *info, pid_t pid) |
1377 | { | 1377 | { |
1378 | int error; | 1378 | int error; |
1379 | rcu_read_lock(); | 1379 | rcu_read_lock(); |
@@ -1394,7 +1394,7 @@ static inline bool kill_as_cred_perm(const struct cred *cred, | |||
1394 | } | 1394 | } |
1395 | 1395 | ||
1396 | /* like kill_pid_info(), but doesn't use uid/euid of "current" */ | 1396 | /* like kill_pid_info(), but doesn't use uid/euid of "current" */ |
1397 | int kill_pid_info_as_cred(int sig, struct siginfo *info, struct pid *pid, | 1397 | int kill_pid_info_as_cred(int sig, struct kernel_siginfo *info, struct pid *pid, |
1398 | const struct cred *cred) | 1398 | const struct cred *cred) |
1399 | { | 1399 | { |
1400 | int ret = -EINVAL; | 1400 | int ret = -EINVAL; |
@@ -1438,7 +1438,7 @@ EXPORT_SYMBOL_GPL(kill_pid_info_as_cred); | |||
1438 | * is probably wrong. Should make it like BSD or SYSV. | 1438 | * is probably wrong. Should make it like BSD or SYSV. |
1439 | */ | 1439 | */ |
1440 | 1440 | ||
1441 | static int kill_something_info(int sig, struct siginfo *info, pid_t pid) | 1441 | static int kill_something_info(int sig, struct kernel_siginfo *info, pid_t pid) |
1442 | { | 1442 | { |
1443 | int ret; | 1443 | int ret; |
1444 | 1444 | ||
@@ -1482,7 +1482,7 @@ static int kill_something_info(int sig, struct siginfo *info, pid_t pid) | |||
1482 | * These are for backward compatibility with the rest of the kernel source. | 1482 | * These are for backward compatibility with the rest of the kernel source. |
1483 | */ | 1483 | */ |
1484 | 1484 | ||
1485 | int send_sig_info(int sig, struct siginfo *info, struct task_struct *p) | 1485 | int send_sig_info(int sig, struct kernel_siginfo *info, struct task_struct *p) |
1486 | { | 1486 | { |
1487 | /* | 1487 | /* |
1488 | * Make sure legacy kernel users don't send in bad values | 1488 | * Make sure legacy kernel users don't send in bad values |
@@ -1533,7 +1533,7 @@ int force_sig_fault(int sig, int code, void __user *addr | |||
1533 | ___ARCH_SI_IA64(int imm, unsigned int flags, unsigned long isr) | 1533 | ___ARCH_SI_IA64(int imm, unsigned int flags, unsigned long isr) |
1534 | , struct task_struct *t) | 1534 | , struct task_struct *t) |
1535 | { | 1535 | { |
1536 | struct siginfo info; | 1536 | struct kernel_siginfo info; |
1537 | 1537 | ||
1538 | clear_siginfo(&info); | 1538 | clear_siginfo(&info); |
1539 | info.si_signo = sig; | 1539 | info.si_signo = sig; |
@@ -1556,7 +1556,7 @@ int send_sig_fault(int sig, int code, void __user *addr | |||
1556 | ___ARCH_SI_IA64(int imm, unsigned int flags, unsigned long isr) | 1556 | ___ARCH_SI_IA64(int imm, unsigned int flags, unsigned long isr) |
1557 | , struct task_struct *t) | 1557 | , struct task_struct *t) |
1558 | { | 1558 | { |
1559 | struct siginfo info; | 1559 | struct kernel_siginfo info; |
1560 | 1560 | ||
1561 | clear_siginfo(&info); | 1561 | clear_siginfo(&info); |
1562 | info.si_signo = sig; | 1562 | info.si_signo = sig; |
@@ -1576,7 +1576,7 @@ int send_sig_fault(int sig, int code, void __user *addr | |||
1576 | 1576 | ||
1577 | int force_sig_mceerr(int code, void __user *addr, short lsb, struct task_struct *t) | 1577 | int force_sig_mceerr(int code, void __user *addr, short lsb, struct task_struct *t) |
1578 | { | 1578 | { |
1579 | struct siginfo info; | 1579 | struct kernel_siginfo info; |
1580 | 1580 | ||
1581 | WARN_ON((code != BUS_MCEERR_AO) && (code != BUS_MCEERR_AR)); | 1581 | WARN_ON((code != BUS_MCEERR_AO) && (code != BUS_MCEERR_AR)); |
1582 | clear_siginfo(&info); | 1582 | clear_siginfo(&info); |
@@ -1590,7 +1590,7 @@ int force_sig_mceerr(int code, void __user *addr, short lsb, struct task_struct | |||
1590 | 1590 | ||
1591 | int send_sig_mceerr(int code, void __user *addr, short lsb, struct task_struct *t) | 1591 | int send_sig_mceerr(int code, void __user *addr, short lsb, struct task_struct *t) |
1592 | { | 1592 | { |
1593 | struct siginfo info; | 1593 | struct kernel_siginfo info; |
1594 | 1594 | ||
1595 | WARN_ON((code != BUS_MCEERR_AO) && (code != BUS_MCEERR_AR)); | 1595 | WARN_ON((code != BUS_MCEERR_AO) && (code != BUS_MCEERR_AR)); |
1596 | clear_siginfo(&info); | 1596 | clear_siginfo(&info); |
@@ -1605,7 +1605,7 @@ EXPORT_SYMBOL(send_sig_mceerr); | |||
1605 | 1605 | ||
1606 | int force_sig_bnderr(void __user *addr, void __user *lower, void __user *upper) | 1606 | int force_sig_bnderr(void __user *addr, void __user *lower, void __user *upper) |
1607 | { | 1607 | { |
1608 | struct siginfo info; | 1608 | struct kernel_siginfo info; |
1609 | 1609 | ||
1610 | clear_siginfo(&info); | 1610 | clear_siginfo(&info); |
1611 | info.si_signo = SIGSEGV; | 1611 | info.si_signo = SIGSEGV; |
@@ -1620,7 +1620,7 @@ int force_sig_bnderr(void __user *addr, void __user *lower, void __user *upper) | |||
1620 | #ifdef SEGV_PKUERR | 1620 | #ifdef SEGV_PKUERR |
1621 | int force_sig_pkuerr(void __user *addr, u32 pkey) | 1621 | int force_sig_pkuerr(void __user *addr, u32 pkey) |
1622 | { | 1622 | { |
1623 | struct siginfo info; | 1623 | struct kernel_siginfo info; |
1624 | 1624 | ||
1625 | clear_siginfo(&info); | 1625 | clear_siginfo(&info); |
1626 | info.si_signo = SIGSEGV; | 1626 | info.si_signo = SIGSEGV; |
@@ -1637,7 +1637,7 @@ int force_sig_pkuerr(void __user *addr, u32 pkey) | |||
1637 | */ | 1637 | */ |
1638 | int force_sig_ptrace_errno_trap(int errno, void __user *addr) | 1638 | int force_sig_ptrace_errno_trap(int errno, void __user *addr) |
1639 | { | 1639 | { |
1640 | struct siginfo info; | 1640 | struct kernel_siginfo info; |
1641 | 1641 | ||
1642 | clear_siginfo(&info); | 1642 | clear_siginfo(&info); |
1643 | info.si_signo = SIGTRAP; | 1643 | info.si_signo = SIGTRAP; |
@@ -1766,7 +1766,7 @@ ret: | |||
1766 | */ | 1766 | */ |
1767 | bool do_notify_parent(struct task_struct *tsk, int sig) | 1767 | bool do_notify_parent(struct task_struct *tsk, int sig) |
1768 | { | 1768 | { |
1769 | struct siginfo info; | 1769 | struct kernel_siginfo info; |
1770 | unsigned long flags; | 1770 | unsigned long flags; |
1771 | struct sighand_struct *psig; | 1771 | struct sighand_struct *psig; |
1772 | bool autoreap = false; | 1772 | bool autoreap = false; |
@@ -1871,7 +1871,7 @@ bool do_notify_parent(struct task_struct *tsk, int sig) | |||
1871 | static void do_notify_parent_cldstop(struct task_struct *tsk, | 1871 | static void do_notify_parent_cldstop(struct task_struct *tsk, |
1872 | bool for_ptracer, int why) | 1872 | bool for_ptracer, int why) |
1873 | { | 1873 | { |
1874 | struct siginfo info; | 1874 | struct kernel_siginfo info; |
1875 | unsigned long flags; | 1875 | unsigned long flags; |
1876 | struct task_struct *parent; | 1876 | struct task_struct *parent; |
1877 | struct sighand_struct *sighand; | 1877 | struct sighand_struct *sighand; |
@@ -1971,7 +1971,7 @@ static bool sigkill_pending(struct task_struct *tsk) | |||
1971 | * If we actually decide not to stop at all because the tracer | 1971 | * If we actually decide not to stop at all because the tracer |
1972 | * is gone, we keep current->exit_code unless clear_code. | 1972 | * is gone, we keep current->exit_code unless clear_code. |
1973 | */ | 1973 | */ |
1974 | static void ptrace_stop(int exit_code, int why, int clear_code, siginfo_t *info) | 1974 | static void ptrace_stop(int exit_code, int why, int clear_code, kernel_siginfo_t *info) |
1975 | __releases(¤t->sighand->siglock) | 1975 | __releases(¤t->sighand->siglock) |
1976 | __acquires(¤t->sighand->siglock) | 1976 | __acquires(¤t->sighand->siglock) |
1977 | { | 1977 | { |
@@ -2108,7 +2108,7 @@ static void ptrace_stop(int exit_code, int why, int clear_code, siginfo_t *info) | |||
2108 | 2108 | ||
2109 | static void ptrace_do_notify(int signr, int exit_code, int why) | 2109 | static void ptrace_do_notify(int signr, int exit_code, int why) |
2110 | { | 2110 | { |
2111 | siginfo_t info; | 2111 | kernel_siginfo_t info; |
2112 | 2112 | ||
2113 | clear_siginfo(&info); | 2113 | clear_siginfo(&info); |
2114 | info.si_signo = signr; | 2114 | info.si_signo = signr; |
@@ -2289,7 +2289,7 @@ static void do_jobctl_trap(void) | |||
2289 | } | 2289 | } |
2290 | } | 2290 | } |
2291 | 2291 | ||
2292 | static int ptrace_signal(int signr, siginfo_t *info) | 2292 | static int ptrace_signal(int signr, kernel_siginfo_t *info) |
2293 | { | 2293 | { |
2294 | /* | 2294 | /* |
2295 | * We do not check sig_kernel_stop(signr) but set this marker | 2295 | * We do not check sig_kernel_stop(signr) but set this marker |
@@ -2889,14 +2889,14 @@ enum siginfo_layout siginfo_layout(int sig, int si_code) | |||
2889 | return layout; | 2889 | return layout; |
2890 | } | 2890 | } |
2891 | 2891 | ||
2892 | int copy_siginfo_to_user(siginfo_t __user *to, const siginfo_t *from) | 2892 | int copy_siginfo_to_user(siginfo_t __user *to, const kernel_siginfo_t *from) |
2893 | { | 2893 | { |
2894 | if (copy_to_user(to, from , sizeof(struct siginfo))) | 2894 | if (copy_to_user(to, from , sizeof(struct kernel_siginfo))) |
2895 | return -EFAULT; | 2895 | return -EFAULT; |
2896 | return 0; | 2896 | return 0; |
2897 | } | 2897 | } |
2898 | 2898 | ||
2899 | int copy_siginfo_from_user(siginfo_t *to, const siginfo_t __user *from) | 2899 | int copy_siginfo_from_user(kernel_siginfo_t *to, const siginfo_t __user *from) |
2900 | { | 2900 | { |
2901 | if (copy_from_user(to, from, sizeof(struct siginfo))) | 2901 | if (copy_from_user(to, from, sizeof(struct siginfo))) |
2902 | return -EFAULT; | 2902 | return -EFAULT; |
@@ -2905,13 +2905,13 @@ int copy_siginfo_from_user(siginfo_t *to, const siginfo_t __user *from) | |||
2905 | 2905 | ||
2906 | #ifdef CONFIG_COMPAT | 2906 | #ifdef CONFIG_COMPAT |
2907 | int copy_siginfo_to_user32(struct compat_siginfo __user *to, | 2907 | int copy_siginfo_to_user32(struct compat_siginfo __user *to, |
2908 | const struct siginfo *from) | 2908 | const struct kernel_siginfo *from) |
2909 | #if defined(CONFIG_X86_X32_ABI) || defined(CONFIG_IA32_EMULATION) | 2909 | #if defined(CONFIG_X86_X32_ABI) || defined(CONFIG_IA32_EMULATION) |
2910 | { | 2910 | { |
2911 | return __copy_siginfo_to_user32(to, from, in_x32_syscall()); | 2911 | return __copy_siginfo_to_user32(to, from, in_x32_syscall()); |
2912 | } | 2912 | } |
2913 | int __copy_siginfo_to_user32(struct compat_siginfo __user *to, | 2913 | int __copy_siginfo_to_user32(struct compat_siginfo __user *to, |
2914 | const struct siginfo *from, bool x32_ABI) | 2914 | const struct kernel_siginfo *from, bool x32_ABI) |
2915 | #endif | 2915 | #endif |
2916 | { | 2916 | { |
2917 | struct compat_siginfo new; | 2917 | struct compat_siginfo new; |
@@ -2995,7 +2995,7 @@ int __copy_siginfo_to_user32(struct compat_siginfo __user *to, | |||
2995 | return 0; | 2995 | return 0; |
2996 | } | 2996 | } |
2997 | 2997 | ||
2998 | int copy_siginfo_from_user32(struct siginfo *to, | 2998 | int copy_siginfo_from_user32(struct kernel_siginfo *to, |
2999 | const struct compat_siginfo __user *ufrom) | 2999 | const struct compat_siginfo __user *ufrom) |
3000 | { | 3000 | { |
3001 | struct compat_siginfo from; | 3001 | struct compat_siginfo from; |
@@ -3085,7 +3085,7 @@ int copy_siginfo_from_user32(struct siginfo *to, | |||
3085 | * @info: if non-null, the signal's siginfo is returned here | 3085 | * @info: if non-null, the signal's siginfo is returned here |
3086 | * @ts: upper bound on process time suspension | 3086 | * @ts: upper bound on process time suspension |
3087 | */ | 3087 | */ |
3088 | static int do_sigtimedwait(const sigset_t *which, siginfo_t *info, | 3088 | static int do_sigtimedwait(const sigset_t *which, kernel_siginfo_t *info, |
3089 | const struct timespec *ts) | 3089 | const struct timespec *ts) |
3090 | { | 3090 | { |
3091 | ktime_t *to = NULL, timeout = KTIME_MAX; | 3091 | ktime_t *to = NULL, timeout = KTIME_MAX; |
@@ -3149,7 +3149,7 @@ SYSCALL_DEFINE4(rt_sigtimedwait, const sigset_t __user *, uthese, | |||
3149 | { | 3149 | { |
3150 | sigset_t these; | 3150 | sigset_t these; |
3151 | struct timespec ts; | 3151 | struct timespec ts; |
3152 | siginfo_t info; | 3152 | kernel_siginfo_t info; |
3153 | int ret; | 3153 | int ret; |
3154 | 3154 | ||
3155 | /* XXX: Don't preclude handling different sized sigset_t's. */ | 3155 | /* XXX: Don't preclude handling different sized sigset_t's. */ |
@@ -3181,7 +3181,7 @@ COMPAT_SYSCALL_DEFINE4(rt_sigtimedwait, compat_sigset_t __user *, uthese, | |||
3181 | { | 3181 | { |
3182 | sigset_t s; | 3182 | sigset_t s; |
3183 | struct timespec t; | 3183 | struct timespec t; |
3184 | siginfo_t info; | 3184 | kernel_siginfo_t info; |
3185 | long ret; | 3185 | long ret; |
3186 | 3186 | ||
3187 | if (sigsetsize != sizeof(sigset_t)) | 3187 | if (sigsetsize != sizeof(sigset_t)) |
@@ -3213,7 +3213,7 @@ COMPAT_SYSCALL_DEFINE4(rt_sigtimedwait, compat_sigset_t __user *, uthese, | |||
3213 | */ | 3213 | */ |
3214 | SYSCALL_DEFINE2(kill, pid_t, pid, int, sig) | 3214 | SYSCALL_DEFINE2(kill, pid_t, pid, int, sig) |
3215 | { | 3215 | { |
3216 | struct siginfo info; | 3216 | struct kernel_siginfo info; |
3217 | 3217 | ||
3218 | clear_siginfo(&info); | 3218 | clear_siginfo(&info); |
3219 | info.si_signo = sig; | 3219 | info.si_signo = sig; |
@@ -3226,7 +3226,7 @@ SYSCALL_DEFINE2(kill, pid_t, pid, int, sig) | |||
3226 | } | 3226 | } |
3227 | 3227 | ||
3228 | static int | 3228 | static int |
3229 | do_send_specific(pid_t tgid, pid_t pid, int sig, struct siginfo *info) | 3229 | do_send_specific(pid_t tgid, pid_t pid, int sig, struct kernel_siginfo *info) |
3230 | { | 3230 | { |
3231 | struct task_struct *p; | 3231 | struct task_struct *p; |
3232 | int error = -ESRCH; | 3232 | int error = -ESRCH; |
@@ -3257,7 +3257,7 @@ do_send_specific(pid_t tgid, pid_t pid, int sig, struct siginfo *info) | |||
3257 | 3257 | ||
3258 | static int do_tkill(pid_t tgid, pid_t pid, int sig) | 3258 | static int do_tkill(pid_t tgid, pid_t pid, int sig) |
3259 | { | 3259 | { |
3260 | struct siginfo info; | 3260 | struct kernel_siginfo info; |
3261 | 3261 | ||
3262 | clear_siginfo(&info); | 3262 | clear_siginfo(&info); |
3263 | info.si_signo = sig; | 3263 | info.si_signo = sig; |
@@ -3304,7 +3304,7 @@ SYSCALL_DEFINE2(tkill, pid_t, pid, int, sig) | |||
3304 | return do_tkill(0, pid, sig); | 3304 | return do_tkill(0, pid, sig); |
3305 | } | 3305 | } |
3306 | 3306 | ||
3307 | static int do_rt_sigqueueinfo(pid_t pid, int sig, siginfo_t *info) | 3307 | static int do_rt_sigqueueinfo(pid_t pid, int sig, kernel_siginfo_t *info) |
3308 | { | 3308 | { |
3309 | /* Not even root can pretend to send signals from the kernel. | 3309 | /* Not even root can pretend to send signals from the kernel. |
3310 | * Nor can they impersonate a kill()/tgkill(), which adds source info. | 3310 | * Nor can they impersonate a kill()/tgkill(), which adds source info. |
@@ -3329,7 +3329,7 @@ static int do_rt_sigqueueinfo(pid_t pid, int sig, siginfo_t *info) | |||
3329 | SYSCALL_DEFINE3(rt_sigqueueinfo, pid_t, pid, int, sig, | 3329 | SYSCALL_DEFINE3(rt_sigqueueinfo, pid_t, pid, int, sig, |
3330 | siginfo_t __user *, uinfo) | 3330 | siginfo_t __user *, uinfo) |
3331 | { | 3331 | { |
3332 | siginfo_t info; | 3332 | kernel_siginfo_t info; |
3333 | int ret = copy_siginfo_from_user(&info, uinfo); | 3333 | int ret = copy_siginfo_from_user(&info, uinfo); |
3334 | if (unlikely(ret)) | 3334 | if (unlikely(ret)) |
3335 | return ret; | 3335 | return ret; |
@@ -3342,7 +3342,7 @@ COMPAT_SYSCALL_DEFINE3(rt_sigqueueinfo, | |||
3342 | int, sig, | 3342 | int, sig, |
3343 | struct compat_siginfo __user *, uinfo) | 3343 | struct compat_siginfo __user *, uinfo) |
3344 | { | 3344 | { |
3345 | siginfo_t info; | 3345 | kernel_siginfo_t info; |
3346 | int ret = copy_siginfo_from_user32(&info, uinfo); | 3346 | int ret = copy_siginfo_from_user32(&info, uinfo); |
3347 | if (unlikely(ret)) | 3347 | if (unlikely(ret)) |
3348 | return ret; | 3348 | return ret; |
@@ -3350,7 +3350,7 @@ COMPAT_SYSCALL_DEFINE3(rt_sigqueueinfo, | |||
3350 | } | 3350 | } |
3351 | #endif | 3351 | #endif |
3352 | 3352 | ||
3353 | static int do_rt_tgsigqueueinfo(pid_t tgid, pid_t pid, int sig, siginfo_t *info) | 3353 | static int do_rt_tgsigqueueinfo(pid_t tgid, pid_t pid, int sig, kernel_siginfo_t *info) |
3354 | { | 3354 | { |
3355 | /* This is only valid for single tasks */ | 3355 | /* This is only valid for single tasks */ |
3356 | if (pid <= 0 || tgid <= 0) | 3356 | if (pid <= 0 || tgid <= 0) |
@@ -3372,7 +3372,7 @@ static int do_rt_tgsigqueueinfo(pid_t tgid, pid_t pid, int sig, siginfo_t *info) | |||
3372 | SYSCALL_DEFINE4(rt_tgsigqueueinfo, pid_t, tgid, pid_t, pid, int, sig, | 3372 | SYSCALL_DEFINE4(rt_tgsigqueueinfo, pid_t, tgid, pid_t, pid, int, sig, |
3373 | siginfo_t __user *, uinfo) | 3373 | siginfo_t __user *, uinfo) |
3374 | { | 3374 | { |
3375 | siginfo_t info; | 3375 | kernel_siginfo_t info; |
3376 | int ret = copy_siginfo_from_user(&info, uinfo); | 3376 | int ret = copy_siginfo_from_user(&info, uinfo); |
3377 | if (unlikely(ret)) | 3377 | if (unlikely(ret)) |
3378 | return ret; | 3378 | return ret; |
@@ -3386,7 +3386,7 @@ COMPAT_SYSCALL_DEFINE4(rt_tgsigqueueinfo, | |||
3386 | int, sig, | 3386 | int, sig, |
3387 | struct compat_siginfo __user *, uinfo) | 3387 | struct compat_siginfo __user *, uinfo) |
3388 | { | 3388 | { |
3389 | siginfo_t info; | 3389 | kernel_siginfo_t info; |
3390 | int ret = copy_siginfo_from_user32(&info, uinfo); | 3390 | int ret = copy_siginfo_from_user32(&info, uinfo); |
3391 | if (unlikely(ret)) | 3391 | if (unlikely(ret)) |
3392 | return ret; | 3392 | return ret; |
@@ -3968,10 +3968,57 @@ __weak const char *arch_vma_name(struct vm_area_struct *vma) | |||
3968 | return NULL; | 3968 | return NULL; |
3969 | } | 3969 | } |
3970 | 3970 | ||
3971 | void __init signals_init(void) | 3971 | static inline void siginfo_buildtime_checks(void) |
3972 | { | 3972 | { |
3973 | BUILD_BUG_ON(sizeof(struct siginfo) != SI_MAX_SIZE); | 3973 | BUILD_BUG_ON(sizeof(struct siginfo) != SI_MAX_SIZE); |
3974 | 3974 | ||
3975 | /* Verify the offsets in the two siginfos match */ | ||
3976 | #define CHECK_OFFSET(field) \ | ||
3977 | BUILD_BUG_ON(offsetof(siginfo_t, field) != offsetof(kernel_siginfo_t, field)) | ||
3978 | |||
3979 | /* kill */ | ||
3980 | CHECK_OFFSET(si_pid); | ||
3981 | CHECK_OFFSET(si_uid); | ||
3982 | |||
3983 | /* timer */ | ||
3984 | CHECK_OFFSET(si_tid); | ||
3985 | CHECK_OFFSET(si_overrun); | ||
3986 | CHECK_OFFSET(si_value); | ||
3987 | |||
3988 | /* rt */ | ||
3989 | CHECK_OFFSET(si_pid); | ||
3990 | CHECK_OFFSET(si_uid); | ||
3991 | CHECK_OFFSET(si_value); | ||
3992 | |||
3993 | /* sigchld */ | ||
3994 | CHECK_OFFSET(si_pid); | ||
3995 | CHECK_OFFSET(si_uid); | ||
3996 | CHECK_OFFSET(si_status); | ||
3997 | CHECK_OFFSET(si_utime); | ||
3998 | CHECK_OFFSET(si_stime); | ||
3999 | |||
4000 | /* sigfault */ | ||
4001 | CHECK_OFFSET(si_addr); | ||
4002 | CHECK_OFFSET(si_addr_lsb); | ||
4003 | CHECK_OFFSET(si_lower); | ||
4004 | CHECK_OFFSET(si_upper); | ||
4005 | CHECK_OFFSET(si_pkey); | ||
4006 | |||
4007 | /* sigpoll */ | ||
4008 | CHECK_OFFSET(si_band); | ||
4009 | CHECK_OFFSET(si_fd); | ||
4010 | |||
4011 | /* sigsys */ | ||
4012 | CHECK_OFFSET(si_call_addr); | ||
4013 | CHECK_OFFSET(si_syscall); | ||
4014 | CHECK_OFFSET(si_arch); | ||
4015 | #undef CHECK_OFFSET | ||
4016 | } | ||
4017 | |||
4018 | void __init signals_init(void) | ||
4019 | { | ||
4020 | siginfo_buildtime_checks(); | ||
4021 | |||
3975 | sigqueue_cachep = KMEM_CACHE(sigqueue, SLAB_PANIC); | 4022 | sigqueue_cachep = KMEM_CACHE(sigqueue, SLAB_PANIC); |
3976 | } | 4023 | } |
3977 | 4024 | ||
diff --git a/kernel/time/posix-timers.c b/kernel/time/posix-timers.c index 4b9127e95430..eabb4c22728d 100644 --- a/kernel/time/posix-timers.c +++ b/kernel/time/posix-timers.c | |||
@@ -308,7 +308,7 @@ static void common_hrtimer_rearm(struct k_itimer *timr) | |||
308 | * To protect against the timer going away while the interrupt is queued, | 308 | * To protect against the timer going away while the interrupt is queued, |
309 | * we require that the it_requeue_pending flag be set. | 309 | * we require that the it_requeue_pending flag be set. |
310 | */ | 310 | */ |
311 | void posixtimer_rearm(struct siginfo *info) | 311 | void posixtimer_rearm(struct kernel_siginfo *info) |
312 | { | 312 | { |
313 | struct k_itimer *timr; | 313 | struct k_itimer *timr; |
314 | unsigned long flags; | 314 | unsigned long flags; |
diff --git a/security/apparmor/lsm.c b/security/apparmor/lsm.c index 8b8b70620bbe..cbcb8ba51142 100644 --- a/security/apparmor/lsm.c +++ b/security/apparmor/lsm.c | |||
@@ -732,7 +732,7 @@ static int apparmor_task_setrlimit(struct task_struct *task, | |||
732 | return error; | 732 | return error; |
733 | } | 733 | } |
734 | 734 | ||
735 | static int apparmor_task_kill(struct task_struct *target, struct siginfo *info, | 735 | static int apparmor_task_kill(struct task_struct *target, struct kernel_siginfo *info, |
736 | int sig, const struct cred *cred) | 736 | int sig, const struct cred *cred) |
737 | { | 737 | { |
738 | struct aa_label *cl, *tl; | 738 | struct aa_label *cl, *tl; |
diff --git a/security/security.c b/security/security.c index 736e78da1ab9..0d504fceda8b 100644 --- a/security/security.c +++ b/security/security.c | |||
@@ -1147,7 +1147,7 @@ int security_task_movememory(struct task_struct *p) | |||
1147 | return call_int_hook(task_movememory, 0, p); | 1147 | return call_int_hook(task_movememory, 0, p); |
1148 | } | 1148 | } |
1149 | 1149 | ||
1150 | int security_task_kill(struct task_struct *p, struct siginfo *info, | 1150 | int security_task_kill(struct task_struct *p, struct kernel_siginfo *info, |
1151 | int sig, const struct cred *cred) | 1151 | int sig, const struct cred *cred) |
1152 | { | 1152 | { |
1153 | return call_int_hook(task_kill, 0, p, info, sig, cred); | 1153 | return call_int_hook(task_kill, 0, p, info, sig, cred); |
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c index ad9a9b8e9979..1b500b4c78a7 100644 --- a/security/selinux/hooks.c +++ b/security/selinux/hooks.c | |||
@@ -4186,7 +4186,7 @@ static int selinux_task_movememory(struct task_struct *p) | |||
4186 | PROCESS__SETSCHED, NULL); | 4186 | PROCESS__SETSCHED, NULL); |
4187 | } | 4187 | } |
4188 | 4188 | ||
4189 | static int selinux_task_kill(struct task_struct *p, struct siginfo *info, | 4189 | static int selinux_task_kill(struct task_struct *p, struct kernel_siginfo *info, |
4190 | int sig, const struct cred *cred) | 4190 | int sig, const struct cred *cred) |
4191 | { | 4191 | { |
4192 | u32 secid; | 4192 | u32 secid; |
diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c index 340fc30ad85d..025de76af1db 100644 --- a/security/smack/smack_lsm.c +++ b/security/smack/smack_lsm.c | |||
@@ -2251,7 +2251,7 @@ static int smack_task_movememory(struct task_struct *p) | |||
2251 | * Return 0 if write access is permitted | 2251 | * Return 0 if write access is permitted |
2252 | * | 2252 | * |
2253 | */ | 2253 | */ |
2254 | static int smack_task_kill(struct task_struct *p, struct siginfo *info, | 2254 | static int smack_task_kill(struct task_struct *p, struct kernel_siginfo *info, |
2255 | int sig, const struct cred *cred) | 2255 | int sig, const struct cred *cred) |
2256 | { | 2256 | { |
2257 | struct smk_audit_info ad; | 2257 | struct smk_audit_info ad; |