ptrace: Add compat PTRACE_{G, S}ETSIGMASK handlers
hulk inclusion
category: feature
bugzilla: NA
CVE: NA
---------------------------
compat_ptrace_request() lacks handlers for PTRACE_{G,S}ETSIGMASK,
instead using those in ptrace_request(). The compat variant should
read a compat_sigset_t from userspace instead of ptrace_request()s
sigset_t.
While compat_sigset_t is the same size as sigset_t, it is defined as
2xu32, instead of a single u64. On a big-endian CPU this means that
compat_sigset_t is passed to user-space using middle-endianness,
where the least-significant u32 is written most significant byte
first.
If ptrace_request()s code is used userspace will read the most
significant u32 where it expected the least significant.
Instead of duplicating ptrace_request()s code as a special case in
the arch code, handle it here.
Fixes: 29000cae ("ptrace: add ability to get/set signal-blocked mask")
CC: Andrey Vagin <avagin@openvz.org>
Signed-off-by: NJames Morse <james.morse@arm.com>
Yury:
Replace sigset_{to,from}_compat() with new {get,put}_compat_sigset()
Signed-off-by: NYury Norov <ynorov@caviumnetworks.com>
Conflicts:
kernel/ptrace.c
[wangxiongfeng: conflicts because of the following patch
commit 4afa2bd35 ptrace: take into account saved_sigmask in PTRACE{GET,
SET}SIGMASK
Fix it by calling 'clear_tsk_restore_sigmask()' after
'ptrace_setsigmask()']
Signed-off-by: NXiongfeng Wang <wangxiongfeng2@huawei.com>
Reviewed-by: NHanjun Guo <guohanjun@huawei.com <mailto:guohanjun@huawei.com>>
Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
Showing
想要评论请 注册 或 登录