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 <[email protected]>
---
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
On Tue, 31 Jan 2023 20:01:50 +0800
Tiezhu Yang <[email protected]> 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 <[email protected]>
> ---
> 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) <[email protected]>