powerpc/bpf: implement bpf_arch_text_copy
bpf_arch_text_copy is used to dump JITed binary to RX page, allowing multiple BPF programs to share the same page. Use the newly introduced patch_instructions() to implement it. Signed-off-by: Hari Bathini <hbathini@linux.ibm.com> Acked-by: Song Liu <song@kernel.org> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://msgid.link/20231020141358.643575-3-hbathini@linux.ibm.com
This commit is contained in:
parent
465cabc97b
commit
6efc1675ac
@ -13,9 +13,13 @@
|
||||
#include <linux/netdevice.h>
|
||||
#include <linux/filter.h>
|
||||
#include <linux/if_vlan.h>
|
||||
#include <asm/kprobes.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/memory.h>
|
||||
#include <linux/bpf.h>
|
||||
|
||||
#include <asm/kprobes.h>
|
||||
#include <asm/code-patching.h>
|
||||
|
||||
#include "bpf_jit.h"
|
||||
|
||||
static void bpf_jit_fill_ill_insns(void *area, unsigned int size)
|
||||
@ -274,3 +278,17 @@ int bpf_add_extable_entry(struct bpf_prog *fp, u32 *image, int pass, struct code
|
||||
ctx->exentry_idx++;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void *bpf_arch_text_copy(void *dst, void *src, size_t len)
|
||||
{
|
||||
int err;
|
||||
|
||||
if (WARN_ON_ONCE(core_kernel_text((unsigned long)dst)))
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
mutex_lock(&text_mutex);
|
||||
err = patch_instructions(dst, src, len, false);
|
||||
mutex_unlock(&text_mutex);
|
||||
|
||||
return err ? ERR_PTR(err) : dst;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user