Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1612880
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH 4.9 08/16] h8300/ptrace: Fix incorrect register transfer count |
| Date | 2017-03-30 12:20 +0200 |
| Message-ID | <tqFlp-4ME-49@gated-at.bofh.it> (permalink) |
| References | <tqFln-4ME-3@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
4.9-stable review patch. If anyone has any objections, please let me know. ------------------ From: Dave Martin <Dave.Martin@arm.com> commit 502585c7555083d4a949c08350306b9ec196779e upstream. regs_set() and regs_get() are vulnerable to an off-by-1 buffer overrun if CONFIG_CPU_H8S is set, since this adds an extra entry to register_offset[] but not to user_regs_struct. So, iterate over user_regs_struct based on its actual size, not based on the length of register_offset[]. Signed-off-by: Dave Martin <Dave.Martin@arm.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> --- arch/h8300/kernel/ptrace.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) --- a/arch/h8300/kernel/ptrace.c +++ b/arch/h8300/kernel/ptrace.c @@ -95,7 +95,8 @@ static int regs_get(struct task_struct * long *reg = (long *)®s; /* build user regs in buffer */ - for (r = 0; r < ARRAY_SIZE(register_offset); r++) + BUILD_BUG_ON(sizeof(regs) % sizeof(long) != 0); + for (r = 0; r < sizeof(regs) / sizeof(long); r++) *reg++ = h8300_get_reg(target, r); return user_regset_copyout(&pos, &count, &kbuf, &ubuf, @@ -113,7 +114,8 @@ static int regs_set(struct task_struct * long *reg; /* build user regs in buffer */ - for (reg = (long *)®s, r = 0; r < ARRAY_SIZE(register_offset); r++) + BUILD_BUG_ON(sizeof(regs) % sizeof(long) != 0); + for (reg = (long *)®s, r = 0; r < sizeof(regs) / sizeof(long); r++) *reg++ = h8300_get_reg(target, r); ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, @@ -122,7 +124,7 @@ static int regs_set(struct task_struct * return ret; /* write back to pt_regs */ - for (reg = (long *)®s, r = 0; r < ARRAY_SIZE(register_offset); r++) + for (reg = (long *)®s, r = 0; r < sizeof(regs) / sizeof(long); r++) h8300_put_reg(target, r, *reg++); return 0; }
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH 4.9 00/16] 4.9.20-stable review Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-03-30 12:20 +0200 [PATCH 4.9 09/16] mips/ptrace: Preserve previous registers for short regset write Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-03-30 12:20 +0200 [PATCH 4.9 11/16] metag/ptrace: Preserve previous registers for short regset write Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-03-30 12:20 +0200 [PATCH 4.9 13/16] metag/ptrace: Reject partial NT_METAG_RPIPE writes Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-03-30 12:20 +0200 [PATCH 4.9 14/16] fscrypt: remove broken support for detecting keyring key revocation Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-03-30 12:20 +0200 [PATCH 4.9 06/16] pinctrl: qcom: Dont clear status bit on irq_unmask Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-03-30 12:20 +0200 [PATCH 4.9 10/16] sparc/ptrace: Preserve previous registers for short regset write Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-03-30 12:20 +0200 [PATCH 4.9 07/16] c6x/ptrace: Remove useless PTRACE_SETREGSET implementation Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-03-30 12:20 +0200 [PATCH 4.9 01/16] xfrm: policy: init locks early Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-03-30 12:20 +0200 [PATCH 4.9 03/16] xfrm_user: validate XFRM_MSG_NEWAE incoming ESN size harder Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-03-30 12:20 +0200 [PATCH 4.9 08/16] h8300/ptrace: Fix incorrect register transfer count Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-03-30 12:20 +0200 [PATCH 4.9 12/16] metag/ptrace: Provide default TXSTATUS for short NT_PRSTATUS Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-03-30 12:20 +0200 [PATCH 4.9 04/16] KVM: x86: cleanup the page tracking SRCU instance Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-03-30 12:20 +0200 [PATCH 4.9 02/16] xfrm_user: validate XFRM_MSG_NEWAE XFRMA_REPLAY_ESN_VAL replay_window Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-03-30 12:30 +0200 [PATCH 4.9 05/16] virtio_balloon: init 1st buffer in stats vq Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-03-30 12:30 +0200 Re: [PATCH 4.9 00/16] 4.9.20-stable review Shuah Khan <shuahkh@osg.samsung.com> - 2017-03-30 21:00 +0200 Re: [PATCH 4.9 00/16] 4.9.20-stable review Guenter Roeck <linux@roeck-us.net> - 2017-03-31 05:50 +0200
csiph-web