All of lore.kernel.org
 help / color / mirror / Atom feed
From: tip-bot for Andy Lutomirski <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: peterz@infradead.org, linux-kernel@vger.kernel.org,
	torvalds@linux-foundation.org, hpa@zytor.com, tglx@linutronix.de,
	rostedt@goodmis.org, luto@kernel.org,
	masami.hiramatsu.pt@hitachi.com, brgerst@gmail.com,
	mingo@kernel.org, bp@alien8.de
Subject: [tip:perf/core] perf/x86/hw_breakpoints: Fix check for kernel-space breakpoints
Date: Tue, 4 Aug 2015 01:54:55 -0700	[thread overview]
Message-ID: <tip-27747f8bc355a2808ca9e490ab6866acd85b4c16@git.kernel.org> (raw)
In-Reply-To: <136be387950e78f18cea60e9d1bef74465d0ee8f.1438312874.git.luto@kernel.org>

Commit-ID:  27747f8bc355a2808ca9e490ab6866acd85b4c16
Gitweb:     http://git.kernel.org/tip/27747f8bc355a2808ca9e490ab6866acd85b4c16
Author:     Andy Lutomirski <luto@kernel.org>
AuthorDate: Thu, 30 Jul 2015 20:32:42 -0700
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Tue, 4 Aug 2015 10:16:55 +0200

perf/x86/hw_breakpoints: Fix check for kernel-space breakpoints

The check looked wrong, although I think it was actually safe.  TASK_SIZE
is unnecessarily small for compat tasks, and it wasn't possible to make
a range breakpoint so large it started in user space and ended in kernel
space.

Nonetheless, let's fix up the check for the benefit of future
readers.  A breakpoint is in the kernel if either end is in the
kernel.

Signed-off-by: Andy Lutomirski <luto@kernel.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Brian Gerst <brgerst@gmail.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/136be387950e78f18cea60e9d1bef74465d0ee8f.1438312874.git.luto@kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 arch/x86/kernel/hw_breakpoint.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/arch/x86/kernel/hw_breakpoint.c b/arch/x86/kernel/hw_breakpoint.c
index 6f345d3..50a3fad 100644
--- a/arch/x86/kernel/hw_breakpoint.c
+++ b/arch/x86/kernel/hw_breakpoint.c
@@ -180,7 +180,11 @@ int arch_check_bp_in_kernelspace(struct perf_event *bp)
 	va = info->address;
 	len = bp->attr.bp_len;
 
-	return (va >= TASK_SIZE) && ((va + len - 1) >= TASK_SIZE);
+	/*
+	 * We don't need to worry about va + len - 1 overflowing:
+	 * we already require that va is aligned to a multiple of len.
+	 */
+	return (va >= TASK_SIZE_MAX) || ((va + len - 1) >= TASK_SIZE_MAX);
 }
 
 int arch_bp_generic_fields(int x86_len, int x86_type,

  reply	other threads:[~2015-08-04  8:55 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-31  3:32 [PATCH 0/3] perf: hw_breakpoint safety improvements Andy Lutomirski
2015-07-31  3:32 ` [PATCH 1/3] x86/perf/hw_breakpoint: Disallow kernel breakpoints unless kprobe-safe Andy Lutomirski
2015-08-04  8:54   ` [tip:perf/core] perf/x86/hw_breakpoints: " tip-bot for Andy Lutomirski
2015-08-04 15:51   ` [PATCH 1/3] x86/perf/hw_breakpoint: " Frederic Weisbecker
2015-08-04 23:29     ` 平松雅巳 / HIRAMATU,MASAMI
2015-09-01 10:57       ` Frederic Weisbecker
2015-09-01 11:36         ` Peter Zijlstra
2015-09-01 11:41           ` Peter Zijlstra
2015-07-31  3:32 ` [PATCH 2/3] x86/perf/hw_breakpoint: Improve range breakpoint validation Andy Lutomirski
2015-08-04  8:54   ` [tip:perf/core] perf/x86/hw_breakpoints: " tip-bot for Andy Lutomirski
2015-07-31  3:32 ` [PATCH 3/3] x86/perf/hw_breakpoint: Fix check for kernelspace breakpoints Andy Lutomirski
2015-08-04  8:54   ` tip-bot for Andy Lutomirski [this message]
2015-08-04 16:13   ` Frederic Weisbecker
2015-07-31  8:10 ` [PATCH 0/3] perf: hw_breakpoint safety improvements Ingo Molnar
2015-07-31  8:21 ` Peter Zijlstra

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=tip-27747f8bc355a2808ca9e490ab6866acd85b4c16@git.kernel.org \
    --to=tipbot@zytor.com \
    --cc=bp@alien8.de \
    --cc=brgerst@gmail.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=luto@kernel.org \
    --cc=masami.hiramatsu.pt@hitachi.com \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.