[PATCH] kprobes: Replace memcpy() with direct assignment

Tiezhu Yang posted 1 patch 2 years, 7 months ago
kernel/kprobes.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
[PATCH] kprobes: Replace memcpy() with direct assignment
Posted by Tiezhu Yang 2 years, 7 months ago
Just do a direct assignment, then give a chance to probe memcpy()
for some archs or kernel versions which do not blacklist memcpy().

Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
---
 kernel/kprobes.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/kernel/kprobes.c b/kernel/kprobes.c
index 1c18ecf..5a3cf9f 100644
--- a/kernel/kprobes.c
+++ b/kernel/kprobes.c
@@ -407,8 +407,8 @@ static inline bool kprobe_unused(struct kprobe *p)
 /* Keep all fields in the kprobe consistent. */
 static inline void copy_kprobe(struct kprobe *ap, struct kprobe *p)
 {
-	memcpy(&p->opcode, &ap->opcode, sizeof(kprobe_opcode_t));
-	memcpy(&p->ainsn, &ap->ainsn, sizeof(struct arch_specific_insn));
+	p->opcode = ap->opcode;
+	p->ainsn = ap->ainsn;
 }
 
 #ifdef CONFIG_OPTPROBES
-- 
2.1.0
Re: [PATCH] kprobes: Replace memcpy() with direct assignment
Posted by Masami Hiramatsu (Google) 2 years, 7 months ago
On Tue, 31 Jan 2023 20:01:50 +0800
Tiezhu Yang <yangtiezhu@loongson.cn> wrote:

> Just do a direct assignment, then give a chance to probe memcpy()
> for some archs or kernel versions which do not blacklist memcpy().
> 

NACK, because this is not invoked from kprobe int3 handling code.

Thank you,

> Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
> ---
>  kernel/kprobes.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/kernel/kprobes.c b/kernel/kprobes.c
> index 1c18ecf..5a3cf9f 100644
> --- a/kernel/kprobes.c
> +++ b/kernel/kprobes.c
> @@ -407,8 +407,8 @@ static inline bool kprobe_unused(struct kprobe *p)
>  /* Keep all fields in the kprobe consistent. */
>  static inline void copy_kprobe(struct kprobe *ap, struct kprobe *p)
>  {
> -	memcpy(&p->opcode, &ap->opcode, sizeof(kprobe_opcode_t));
> -	memcpy(&p->ainsn, &ap->ainsn, sizeof(struct arch_specific_insn));
> +	p->opcode = ap->opcode;
> +	p->ainsn = ap->ainsn;
>  }
>  
>  #ifdef CONFIG_OPTPROBES
> -- 
> 2.1.0
> 


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