From b2529f44633b6e769aad60b88bf89f2c88899d0e Mon Sep 17 00:00:00 2001 From: Mahe Tardy Date: Fri, 21 Feb 2025 15:47:52 +0100 Subject: [PATCH] bpf: simplify inline asm in copy_path The asm was maybe no longer necessary and was restricting the maximum size to be 1188. Signed-off-by: Mahe Tardy --- bpf/process/types/basic.h | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/bpf/process/types/basic.h b/bpf/process/types/basic.h index 419b7647f4c..c3fdbda1cdc 100644 --- a/bpf/process/types/basic.h +++ b/bpf/process/types/basic.h @@ -376,21 +376,8 @@ FUNC_INLINE long copy_path(char *args, const struct path *arg) * ----------------------------------------- * Next we set up the flags. */ - asm volatile goto( - "r1 = *(u64 *)%[pid];\n" - "r7 = *(u32 *)%[offset];\n" - "if r7 s< 0 goto %l[a];\n" - "if r7 s> 1188 goto %l[a];\n" - "r1 += r7;\n" - "r2 = *(u32 *)%[flags];\n" - "*(u32 *)(r1 + 0) = r2;\n" - "r2 = *(u16 *)%[mode];\n" - "*(u16 *)(r1 + 4) = r2;\n" - : - : [pid] "m"(args), [flags] "m"(flags), [offset] "m"(size), [mode] "m"(i_mode) - : "r0", "r1", "r2", "r7", "memory" - : a); -a: + args[size] = (u32) flags; + args[size + sizeof(u32)] = (u16) i_mode; size += sizeof(u32) + sizeof(u16); // for the flags + i_mode return size;