All of lore.kernel.org
 help / color / mirror / Atom feed
From: Masami Hiramatsu (Google) <mhiramat@kernel.org>
To: Chuang W <nashuiliang@gmail.com>, Steven Rostedt <rostedt@goodmis.org>
Cc: stable@vger.kernel.org,
	"Naveen N. Rao" <naveen.n.rao@linux.ibm.com>,
	Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>,
	"David S. Miller" <davem@davemloft.net>,
	Masami Hiramatsu <mhiramat@kernel.org>,
	Ingo Molnar <mingo@kernel.org>, Jessica Yu <jeyu@kernel.org>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2] kprobes: Rollback the aggrprobe post_handler on failed arm_kprobe()
Date: Wed, 22 Jun 2022 00:51:24 +0900	[thread overview]
Message-ID: <20220622005124.4704eafa0e89c3fe31eef1f5@kernel.org> (raw)
In-Reply-To: <20220619045028.50619-1-nashuiliang@gmail.com>

On Sun, 19 Jun 2022 12:50:27 +0800
Chuang W <nashuiliang@gmail.com> wrote:

> In a scenario where livepatch and aggrprobe coexist on the same function
> entry, and if this aggrprobe has a post_handler, arm_kprobe() always
> fails as both livepatch and aggrprobe with post_handler will use
> FTRACE_OPS_FL_IPMODIFY.
> Since register_aggr_kprobe() doesn't roll back the post_handler on
> failed arm_kprobe(), this aggrprobe will no longer be available even if
> all kprobes on this aggrprobe don't have the post_handler.
> 
> Fix to roll back the aggrprobe post_handler for this case.
> With this patch, if a kprobe that has the post_handler is removed from
> this aggrprobe (since arm_kprobe() failed), it will be available again.
> 

This looks good to me.

Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>

Thank you!

> Fixes: 12310e343755 ("kprobes: Propagate error from arm_kprobe_ftrace()")
> Signed-off-by: Chuang W <nashuiliang@gmail.com>
> Cc: <stable@vger.kernel.org>
> ---
> v1 -> v2:
> - Add commit details
> 
>  kernel/kprobes.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/kernel/kprobes.c b/kernel/kprobes.c
> index f214f8c088ed..0610b02a3a05 100644
> --- a/kernel/kprobes.c
> +++ b/kernel/kprobes.c
> @@ -1300,6 +1300,7 @@ static int register_aggr_kprobe(struct kprobe *orig_p, struct kprobe *p)
>  {
>  	int ret = 0;
>  	struct kprobe *ap = orig_p;
> +	kprobe_post_handler_t old_post_handler = NULL;
>  
>  	cpus_read_lock();
>  
> @@ -1351,6 +1352,9 @@ static int register_aggr_kprobe(struct kprobe *orig_p, struct kprobe *p)
>  
>  	/* Copy the insn slot of 'p' to 'ap'. */
>  	copy_kprobe(ap, p);
> +
> +	/* save the old post_handler */
> +	old_post_handler = ap->post_handler;
>  	ret = add_new_kprobe(ap, p);
>  
>  out:
> @@ -1365,6 +1369,7 @@ static int register_aggr_kprobe(struct kprobe *orig_p, struct kprobe *p)
>  			ret = arm_kprobe(ap);
>  			if (ret) {
>  				ap->flags |= KPROBE_FLAG_DISABLED;
> +				ap->post_handler = old_post_handler;
>  				list_del_rcu(&p->list);
>  				synchronize_rcu();
>  			}
> -- 
> 2.34.1
> 


-- 
Masami Hiramatsu (Google) <mhiramat@kernel.org>

      reply	other threads:[~2022-06-21 15:51 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-19  4:50 [PATCH v2] kprobes: Rollback the aggrprobe post_handler on failed arm_kprobe() Chuang W
2022-06-21 15:51 ` Masami Hiramatsu [this message]

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=20220622005124.4704eafa0e89c3fe31eef1f5@kernel.org \
    --to=mhiramat@kernel.org \
    --cc=anil.s.keshavamurthy@intel.com \
    --cc=davem@davemloft.net \
    --cc=jeyu@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=nashuiliang@gmail.com \
    --cc=naveen.n.rao@linux.ibm.com \
    --cc=rostedt@goodmis.org \
    --cc=stable@vger.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.