All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Leizhen (ThunderTown)" <thunder.leizhen@huawei.com>
To: Will Deacon <will@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Russell King <linux@armlinux.org.uk>,
	linux-arm-kernel <linux-arm-kernel@lists.infradead.org>
Cc: Wang Nan <wangnan0@huawei.com>
Subject: Re: [PATCH 1/1] ARM: hw_breakpoint: Do not directly check the event's overflow_handler hook
Date: Sun, 7 Feb 2021 21:05:36 +0800	[thread overview]
Message-ID: <baea47e7-1062-e39b-d642-b7147aa3dcfe@huawei.com> (raw)
In-Reply-To: <20210207105934.2001-1-thunder.leizhen@huawei.com>



On 2021/2/7 18:59, Zhen Lei wrote:
> 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.

Our test case use "perf record -e mem:$TEST_LOC_ADDR:x -p $TEST_PID sleep 10" to track
the invocation of a test function, the entry address of the function is $TEST_LOC_ADDR.
This function was called only once. Therefore, the sampling result of perf should be one,
as follow:
[ perf record: Captured and wrote 0.001 MB perf.data (1 samples) ]

But it's actually infinite.
[ perf record: Captured and wrote 135.426 MB perf.data (2068004 samples) ]

If sleep 10 is not specified, OOM will be reported.

> 
> 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>
> ---
>  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 08660ae9dcbce1c..b1423fb130ea4a0 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;
>  		}
> 


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2021-02-07 13:07 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-07 10:59 [PATCH 1/1] ARM: hw_breakpoint: Do not directly check the event's overflow_handler hook Zhen Lei
2021-02-07 13:05 ` Leizhen (ThunderTown) [this message]
2021-02-12 10:02 ` Will Deacon
2021-02-18  2:03   ` Leizhen (ThunderTown)
2021-02-18  9:13     ` Will Deacon
2021-02-18 10:56       ` Leizhen (ThunderTown)

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=baea47e7-1062-e39b-d642-b7147aa3dcfe@huawei.com \
    --to=thunder.leizhen@huawei.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux@armlinux.org.uk \
    --cc=mark.rutland@arm.com \
    --cc=wangnan0@huawei.com \
    --cc=will@kernel.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.