From: Eric W. Biederman Date: Mon, 22 Jan 2018 20:50:53 +0000 (-0600) Subject: signal/arm64: Better isolate the COMPAT_TASK portion of ptrace_hbptriggered X-Git-Tag: Ubuntu-5.2.0-15.16~5128^2~8 X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;h=66e0f26315ce7dd3f4efdbdee63f30dac643763f;p=mirror_ubuntu-eoan-kernel.git signal/arm64: Better isolate the COMPAT_TASK portion of ptrace_hbptriggered Instead of jumpping while !is_compat_task placee all of the code inside of an if (is_compat_task) block. This allows the int i variable to be properly limited to the compat block no matter how the rest of ptrace_hbptriggered changes. In a following change a non-variable declaration will preceed was made independent to ensure the code is easy to review. Signed-off-by: "Eric W. Biederman" --- diff --git a/arch/arm64/kernel/ptrace.c b/arch/arm64/kernel/ptrace.c index 7c44658b316d..0a1cf830e4b3 100644 --- a/arch/arm64/kernel/ptrace.c +++ b/arch/arm64/kernel/ptrace.c @@ -188,26 +188,23 @@ static void ptrace_hbptriggered(struct perf_event *bp, }; #ifdef CONFIG_COMPAT - int i; - - if (!is_compat_task()) - goto send_sig; + if (is_compat_task()) { + int i; - for (i = 0; i < ARM_MAX_BRP; ++i) { - if (current->thread.debug.hbp_break[i] == bp) { - info.si_errno = (i << 1) + 1; - break; + for (i = 0; i < ARM_MAX_BRP; ++i) { + if (current->thread.debug.hbp_break[i] == bp) { + info.si_errno = (i << 1) + 1; + break; + } } - } - for (i = 0; i < ARM_MAX_WRP; ++i) { - if (current->thread.debug.hbp_watch[i] == bp) { - info.si_errno = -((i << 1) + 1); - break; + for (i = 0; i < ARM_MAX_WRP; ++i) { + if (current->thread.debug.hbp_watch[i] == bp) { + info.si_errno = -((i << 1) + 1); + break; + } } } - -send_sig: #endif force_sig_info(SIGTRAP, &info, current); }