| From 022476544f9d9b49b485ca06013f4f852fd2fc8e Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 18 Feb 2021 03:00:05 +0100 |
| Subject: ARM: 9064/1: hw_breakpoint: Do not directly check the event's |
| overflow_handler hook |
| |
| From: Zhen Lei <thunder.leizhen@huawei.com> |
| |
| [ Upstream commit a506bd5756290821a4314f502b4bafc2afcf5260 ] |
| |
| The commit 1879445dfa7b ("perf/core: Set event's default |
| ::overflow_handler()") set a default event->overflow_handler in |
| perf_event_alloc(), and replace the check event->overflow_handler with |
| is_default_overflow_handler(), but one is missing. |
| |
| Currently, the bp->overflow_handler can not be NULL. As a result, |
| enable_single_step() is always not invoked. |
| |
| Comments from Zhen Lei: |
| |
| https://patchwork.kernel.org/project/linux-arm-kernel/patch/20210207105934.2001-1-thunder.leizhen@huawei.com/ |
| |
| Fixes: 1879445dfa7b ("perf/core: Set event's default ::overflow_handler()") |
| Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com> |
| Cc: Wang Nan <wangnan0@huawei.com> |
| Acked-by: Will Deacon <will@kernel.org> |
| Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| arch/arm/kernel/hw_breakpoint.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/arch/arm/kernel/hw_breakpoint.c b/arch/arm/kernel/hw_breakpoint.c |
| index 08660ae9dcbc..b1423fb130ea 100644 |
| --- a/arch/arm/kernel/hw_breakpoint.c |
| +++ b/arch/arm/kernel/hw_breakpoint.c |
| @@ -886,7 +886,7 @@ static void breakpoint_handler(unsigned long unknown, struct pt_regs *regs) |
| info->trigger = addr; |
| pr_debug("breakpoint fired: address = 0x%x\n", addr); |
| perf_bp_event(bp, regs); |
| - if (!bp->overflow_handler) |
| + if (is_default_overflow_handler(bp)) |
| enable_single_step(bp, addr); |
| goto unlock; |
| } |
| -- |
| 2.30.2 |
| |