binfmt_elf: remove the set_fs in fill_siginfo_note
authorEric W. Biederman <ebiederm@xmission.com>
Tue, 5 May 2020 10:12:54 +0000 (12:12 +0200)
committerAl Viro <viro@zeniv.linux.org.uk>
Tue, 5 May 2020 20:46:10 +0000 (16:46 -0400)
commitfa4751f454e6b51ef93babfd8b6c8b43a65c9db2
tree0333e3b9b52243632a204fc5ffafa63e8329d5a1
parentc3b3f52476412a3899f2c65b220075aceb18dd2c
binfmt_elf: remove the set_fs in fill_siginfo_note

The code in binfmt_elf.c is differnt from the rest of the code that
processes siginfo, as it sends siginfo from a kernel buffer to a file
rather than from kernel memory to userspace buffers.  To remove it's
use of set_fs the code needs some different siginfo helpers.

Add the helper copy_siginfo_to_external to copy from the kernel's
internal siginfo layout to a buffer in the siginfo layout that
userspace expects.

Modify fill_siginfo_note to use copy_siginfo_to_external instead of
set_fs and copy_siginfo_to_user.

Update compat_binfmt_elf.c to use the previously added
copy_siginfo_to_external32 to handle the compat case.

Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/binfmt_elf.c
fs/compat_binfmt_elf.c
include/linux/signal.h