diff options
author | Eric W. Biederman <ebiederm@xmission.com> | 2018-01-22 14:50:53 -0600 |
---|---|---|
committer | Eric W. Biederman <ebiederm@xmission.com> | 2018-01-22 19:06:48 -0600 |
commit | 66e0f26315ce7dd3f4efdbdee63f30dac643763f (patch) | |
tree | e6d0e0074001653104b63f76f57ca59632a91055 | |
parent | 0752d7bf626ba90c68caff8be4e5638f6679cacf (diff) | |
download | linux-66e0f26315ce7dd3f4efdbdee63f30dac643763f.tar.gz linux-66e0f26315ce7dd3f4efdbdee63f30dac643763f.tar.bz2 linux-66e0f26315ce7dd3f4efdbdee63f30dac643763f.zip |
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" <ebiederm@xmission.com>
-rw-r--r-- | arch/arm64/kernel/ptrace.c | 27 |
1 files changed, 12 insertions, 15 deletions
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); } |