fprobes: Add a comment why fprobe_kprobe_handler exits if kprobe is running

Message ID 168874788299.159442.2485957441413653858.stgit@devnote2
State New
Headers
Series fprobes: Add a comment why fprobe_kprobe_handler exits if kprobe is running |

Commit Message

Masami Hiramatsu (Google) July 7, 2023, 4:38 p.m. UTC
  From: Masami Hiramatsu (Google) <mhiramat@kernel.org>

Add a comment the reason why fprobe_kprobe_handler() exits if any other
kprobe is running.

Suggested-by: Steven Rostedt <rostedt@goodmis.org>
Link: https://lore.kernel.org/all/20230706120916.3c6abf15@gandalf.local.home/
Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
---
 kernel/trace/fprobe.c |    6 ++++++
 1 file changed, 6 insertions(+)
  

Comments

Steven Rostedt July 7, 2023, 4:55 p.m. UTC | #1
On Sat,  8 Jul 2023 01:38:03 +0900
"Masami Hiramatsu (Google)" <mhiramat@kernel.org> wrote:

> From: Masami Hiramatsu (Google) <mhiramat@kernel.org>
> 
> Add a comment the reason why fprobe_kprobe_handler() exits if any other
> kprobe is running.
> 
> Suggested-by: Steven Rostedt <rostedt@goodmis.org>
> Link: https://lore.kernel.org/all/20230706120916.3c6abf15@gandalf.local.home/
> Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>

Reviewed-by: Steven Rostedt (Google) <rostedt@goodmis.org>

-- Steve

> ---
>  kernel/trace/fprobe.c |    6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/kernel/trace/fprobe.c b/kernel/trace/fprobe.c
> index 75517667b54f..133b31f44945 100644
> --- a/kernel/trace/fprobe.c
> +++ b/kernel/trace/fprobe.c
> @@ -100,6 +100,12 @@ static void fprobe_kprobe_handler(unsigned long ip, unsigned long parent_ip,
>  		return;
>  	}
>  
> +	/*
> +	 * This user handler is shared with other kprobes and is not expected to be
> +	 * called recursively. So if any other kprobe handler is running, this will
> +	 * exit as kprobe does. See the section 'Share the callbacks with kprobes'
> +	 * in Documentation/trace/fprobe.rst for more information.
> +	 */
>  	if (unlikely(kprobe_running())) {
>  		fp->nmissed++;
>  		return;
  

Patch

diff --git a/kernel/trace/fprobe.c b/kernel/trace/fprobe.c
index 75517667b54f..133b31f44945 100644
--- a/kernel/trace/fprobe.c
+++ b/kernel/trace/fprobe.c
@@ -100,6 +100,12 @@  static void fprobe_kprobe_handler(unsigned long ip, unsigned long parent_ip,
 		return;
 	}
 
+	/*
+	 * This user handler is shared with other kprobes and is not expected to be
+	 * called recursively. So if any other kprobe handler is running, this will
+	 * exit as kprobe does. See the section 'Share the callbacks with kprobes'
+	 * in Documentation/trace/fprobe.rst for more information.
+	 */
 	if (unlikely(kprobe_running())) {
 		fp->nmissed++;
 		return;