diff options
author | Eric W. Biederman <ebiederm@xmission.com> | 2018-01-22 23:58:57 +0300 |
---|---|---|
committer | Eric W. Biederman <ebiederm@xmission.com> | 2018-01-23 04:07:08 +0300 |
commit | 5f74972ce69fdc6473f74253283408af75a3be15 (patch) | |
tree | 0353784ed4e95a7a32e159ba9b66d1f697317680 /kernel/signal.c | |
parent | 66e0f26315ce7dd3f4efdbdee63f30dac643763f (diff) | |
download | linux-5f74972ce69fdc6473f74253283408af75a3be15.tar.xz |
signal: Don't use structure initializers for struct siginfo
The siginfo structure has all manners of holes with the result that a
structure initializer is not guaranteed to initialize all of the bits.
As we have to copy the structure to userspace don't even try to use
a structure initializer. Instead use clear_siginfo followed by initializing
selected fields. This gives a guarantee that uninitialized kernel memory
is not copied to userspace.
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Diffstat (limited to 'kernel/signal.c')
-rw-r--r-- | kernel/signal.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/kernel/signal.c b/kernel/signal.c index 4976f05aa09b..f14492ff976f 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -3163,8 +3163,9 @@ do_send_specific(pid_t tgid, pid_t pid, int sig, struct siginfo *info) static int do_tkill(pid_t tgid, pid_t pid, int sig) { - struct siginfo info = {}; + struct siginfo info; + clear_siginfo(&info); info.si_signo = sig; info.si_errno = 0; info.si_code = SI_TKILL; |