* Re: mmotm 2014-05-09-16-17 uploaded (ptrace-ab.hi vs. net/core/filter.c) [not found] <20140509231825.22D005A4123@corp2gmr1-2.hot.corp.google.com> @ 2014-05-10 17:15 ` Randy Dunlap 2014-05-13 17:14 ` David Miller 0 siblings, 1 reply; 3+ messages in thread From: Randy Dunlap @ 2014-05-10 17:15 UTC (permalink / raw) To: akpm, netdev@vger.kernel.org, linux-kernel, linux-next; +Cc: Richard Weinberger On 05/09/2014 04:18 PM, akpm@linux-foundation.org wrote: > The mm-of-the-moment snapshot 2014-05-09-16-17 has been uploaded to > > http://www.ozlabs.org/~akpm/mmotm/ > uml defconfig on x86_64: (also happens in linux-next) net/core/filter.c:57:0: warning: "R8" redefined [enabled by default] arch/x86/include/uapi/asm/ptrace-abi.h:38:0: note: this is the location of the previous definition Same warnings for R9 and R10. -- ~Randy ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: mmotm 2014-05-09-16-17 uploaded (ptrace-ab.hi vs. net/core/filter.c) 2014-05-10 17:15 ` mmotm 2014-05-09-16-17 uploaded (ptrace-ab.hi vs. net/core/filter.c) Randy Dunlap @ 2014-05-13 17:14 ` David Miller 2014-05-13 17:41 ` Alexei Starovoitov 0 siblings, 1 reply; 3+ messages in thread From: David Miller @ 2014-05-13 17:14 UTC (permalink / raw) To: rdunlap; +Cc: akpm, netdev, linux-kernel, linux-next, richard From: Randy Dunlap <rdunlap@infradead.org> Date: Sat, 10 May 2014 10:15:37 -0700 > On 05/09/2014 04:18 PM, akpm@linux-foundation.org wrote: >> The mm-of-the-moment snapshot 2014-05-09-16-17 has been uploaded to >> >> http://www.ozlabs.org/~akpm/mmotm/ >> > > > uml defconfig on x86_64: (also happens in linux-next) > > net/core/filter.c:57:0: warning: "R8" redefined [enabled by default] > arch/x86/include/uapi/asm/ptrace-abi.h:38:0: note: this is the location of the previous definition > > Same warnings for R9 and R10. I'm going to commit the following to net-next to fix this, thanks Randy. ==================== [PATCH] net: filter: Fix redefinition warnings on x86-64. Do not collide with the x86-64 PTRACE user API namespace. net/core/filter.c:57:0: warning: "R8" redefined [enabled by default] arch/x86/include/uapi/asm/ptrace-abi.h:38:0: note: this is the location of the previous definition Fix by adding a BPF_ prefix to the register macros. Reported-by: Randy Dunlap <rdunlap@infradead.org> Signed-off-by: David S. Miller <davem@davemloft.net> --- net/core/filter.c | 71 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 37 insertions(+), 34 deletions(-) diff --git a/net/core/filter.c b/net/core/filter.c index 9aaa05a..c442a0d 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -46,17 +46,17 @@ #include <linux/if_vlan.h> /* Registers */ -#define R0 regs[BPF_REG_0] -#define R1 regs[BPF_REG_1] -#define R2 regs[BPF_REG_2] -#define R3 regs[BPF_REG_3] -#define R4 regs[BPF_REG_4] -#define R5 regs[BPF_REG_5] -#define R6 regs[BPF_REG_6] -#define R7 regs[BPF_REG_7] -#define R8 regs[BPF_REG_8] -#define R9 regs[BPF_REG_9] -#define R10 regs[BPF_REG_10] +#define BPF_R0 regs[BPF_REG_0] +#define BPF_R1 regs[BPF_REG_1] +#define BPF_R2 regs[BPF_REG_2] +#define BPF_R3 regs[BPF_REG_3] +#define BPF_R4 regs[BPF_REG_4] +#define BPF_R5 regs[BPF_REG_5] +#define BPF_R6 regs[BPF_REG_6] +#define BPF_R7 regs[BPF_REG_7] +#define BPF_R8 regs[BPF_REG_8] +#define BPF_R9 regs[BPF_REG_9] +#define BPF_R10 regs[BPF_REG_10] /* Named registers */ #define A regs[insn->a_reg] @@ -383,10 +383,12 @@ select_insn: /* CALL */ JMP_CALL_0: - /* Function call scratches R1-R5 registers, preserves R6-R9, - * and stores return value into R0. + /* Function call scratches BPF_R1-BPF_R5 registers, + * preserves BPF_R6-BPF_R9, and stores return value + * into BPF_R0. */ - R0 = (__bpf_call_base + insn->imm)(R1, R2, R3, R4, R5); + BPF_R0 = (__bpf_call_base + insn->imm)(BPF_R1, BPF_R2, BPF_R3, + BPF_R4, BPF_R5); CONT; /* JMP */ @@ -478,7 +480,7 @@ select_insn: } CONT; JMP_EXIT_0: - return R0; + return BPF_R0; /* STX and ST and LDX*/ #define LDST(SIZEOP, SIZE) \ @@ -505,18 +507,19 @@ select_insn: atomic64_add((u64) X, (atomic64_t *)(unsigned long) (A + insn->off)); CONT; - LD_ABS_W: /* R0 = ntohl(*(u32 *) (skb->data + K)) */ + LD_ABS_W: /* BPF_R0 = ntohl(*(u32 *) (skb->data + K)) */ off = K; load_word: - /* BPF_LD + BPD_ABS and BPF_LD + BPF_IND insns are only - * appearing in the programs where ctx == skb. All programs - * keep 'ctx' in regs[BPF_REG_CTX] == R6, sk_convert_filter() - * saves it in R6, internal BPF verifier will check that - * R6 == ctx. + /* BPF_LD + BPD_ABS and BPF_LD + BPF_IND insns are + * only appearing in the programs where ctx == + * skb. All programs keep 'ctx' in regs[BPF_REG_CTX] + * == BPF_R6, sk_convert_filter() saves it in BPF_R6, + * internal BPF verifier will check that BPF_R6 == + * ctx. * - * BPF_ABS and BPF_IND are wrappers of function calls, so - * they scratch R1-R5 registers, preserve R6-R9, and store - * return value into R0. + * BPF_ABS and BPF_IND are wrappers of function calls, + * so they scratch BPF_R1-BPF_R5 registers, preserve + * BPF_R6-BPF_R9, and store return value into BPF_R0. * * Implicit input: * ctx @@ -526,39 +529,39 @@ load_word: * K == 32-bit immediate * * Output: - * R0 - 8/16/32-bit skb data converted to cpu endianness + * BPF_R0 - 8/16/32-bit skb data converted to cpu endianness */ ptr = load_pointer((struct sk_buff *) ctx, off, 4, &tmp); if (likely(ptr != NULL)) { - R0 = get_unaligned_be32(ptr); + BPF_R0 = get_unaligned_be32(ptr); CONT; } return 0; - LD_ABS_H: /* R0 = ntohs(*(u16 *) (skb->data + K)) */ + LD_ABS_H: /* BPF_R0 = ntohs(*(u16 *) (skb->data + K)) */ off = K; load_half: ptr = load_pointer((struct sk_buff *) ctx, off, 2, &tmp); if (likely(ptr != NULL)) { - R0 = get_unaligned_be16(ptr); + BPF_R0 = get_unaligned_be16(ptr); CONT; } return 0; - LD_ABS_B: /* R0 = *(u8 *) (ctx + K) */ + LD_ABS_B: /* BPF_R0 = *(u8 *) (ctx + K) */ off = K; load_byte: ptr = load_pointer((struct sk_buff *) ctx, off, 1, &tmp); if (likely(ptr != NULL)) { - R0 = *(u8 *)ptr; + BPF_R0 = *(u8 *)ptr; CONT; } return 0; - LD_IND_W: /* R0 = ntohl(*(u32 *) (skb->data + X + K)) */ + LD_IND_W: /* BPF_R0 = ntohl(*(u32 *) (skb->data + X + K)) */ off = K + X; goto load_word; - LD_IND_H: /* R0 = ntohs(*(u16 *) (skb->data + X + K)) */ + LD_IND_H: /* BPF_R0 = ntohs(*(u16 *) (skb->data + X + K)) */ off = K + X; goto load_half; - LD_IND_B: /* R0 = *(u8 *) (skb->data + X + K) */ + LD_IND_B: /* BPF_R0 = *(u8 *) (skb->data + X + K) */ off = K + X; goto load_byte; @@ -1001,7 +1004,7 @@ do_pass: *insn = BPF_ALU64_REG(BPF_MOV, BPF_REG_TMP, BPF_REG_A); insn++; - /* A = R0 = *(u8 *) (skb->data + K) */ + /* A = BPF_R0 = *(u8 *) (skb->data + K) */ *insn = BPF_LD_ABS(BPF_B, fp->k); insn++; -- 1.9.0 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: mmotm 2014-05-09-16-17 uploaded (ptrace-ab.hi vs. net/core/filter.c) 2014-05-13 17:14 ` David Miller @ 2014-05-13 17:41 ` Alexei Starovoitov 0 siblings, 0 replies; 3+ messages in thread From: Alexei Starovoitov @ 2014-05-13 17:41 UTC (permalink / raw) To: David Miller Cc: Randy Dunlap, Andrew Morton, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-next@vger.kernel.org, richard On Tue, May 13, 2014 at 10:14 AM, David Miller <davem@davemloft.net> wrote: > From: Randy Dunlap <rdunlap@infradead.org> > Date: Sat, 10 May 2014 10:15:37 -0700 > >> On 05/09/2014 04:18 PM, akpm@linux-foundation.org wrote: >>> The mm-of-the-moment snapshot 2014-05-09-16-17 has been uploaded to >>> >>> http://www.ozlabs.org/~akpm/mmotm/ >>> >> >> >> uml defconfig on x86_64: (also happens in linux-next) >> >> net/core/filter.c:57:0: warning: "R8" redefined [enabled by default] >> arch/x86/include/uapi/asm/ptrace-abi.h:38:0: note: this is the location of the previous definition >> >> Same warnings for R9 and R10. > > I'm going to commit the following to net-next to fix this, > thanks Randy. > > ==================== > [PATCH] net: filter: Fix redefinition warnings on x86-64. > > Do not collide with the x86-64 PTRACE user API namespace. > > net/core/filter.c:57:0: warning: "R8" redefined [enabled by default] > arch/x86/include/uapi/asm/ptrace-abi.h:38:0: note: this is the location of the previous definition > > Fix by adding a BPF_ prefix to the register macros. > > Reported-by: Randy Dunlap <rdunlap@infradead.org> > Signed-off-by: David S. Miller <davem@davemloft.net> thank you for taking care of it. Next time will remember to do arch=um build... Acked-by: Alexei Starovoitov <ast@plumgrid.com> > --- > net/core/filter.c | 71 +++++++++++++++++++++++++++++-------------------------- > 1 file changed, 37 insertions(+), 34 deletions(-) > > diff --git a/net/core/filter.c b/net/core/filter.c > index 9aaa05a..c442a0d 100644 > --- a/net/core/filter.c > +++ b/net/core/filter.c > @@ -46,17 +46,17 @@ > #include <linux/if_vlan.h> > > /* Registers */ > -#define R0 regs[BPF_REG_0] > -#define R1 regs[BPF_REG_1] > -#define R2 regs[BPF_REG_2] > -#define R3 regs[BPF_REG_3] > -#define R4 regs[BPF_REG_4] > -#define R5 regs[BPF_REG_5] > -#define R6 regs[BPF_REG_6] > -#define R7 regs[BPF_REG_7] > -#define R8 regs[BPF_REG_8] > -#define R9 regs[BPF_REG_9] > -#define R10 regs[BPF_REG_10] > +#define BPF_R0 regs[BPF_REG_0] > +#define BPF_R1 regs[BPF_REG_1] > +#define BPF_R2 regs[BPF_REG_2] > +#define BPF_R3 regs[BPF_REG_3] > +#define BPF_R4 regs[BPF_REG_4] > +#define BPF_R5 regs[BPF_REG_5] > +#define BPF_R6 regs[BPF_REG_6] > +#define BPF_R7 regs[BPF_REG_7] > +#define BPF_R8 regs[BPF_REG_8] > +#define BPF_R9 regs[BPF_REG_9] > +#define BPF_R10 regs[BPF_REG_10] > > /* Named registers */ > #define A regs[insn->a_reg] > @@ -383,10 +383,12 @@ select_insn: > > /* CALL */ > JMP_CALL_0: > - /* Function call scratches R1-R5 registers, preserves R6-R9, > - * and stores return value into R0. > + /* Function call scratches BPF_R1-BPF_R5 registers, > + * preserves BPF_R6-BPF_R9, and stores return value > + * into BPF_R0. > */ > - R0 = (__bpf_call_base + insn->imm)(R1, R2, R3, R4, R5); > + BPF_R0 = (__bpf_call_base + insn->imm)(BPF_R1, BPF_R2, BPF_R3, > + BPF_R4, BPF_R5); > CONT; > > /* JMP */ > @@ -478,7 +480,7 @@ select_insn: > } > CONT; > JMP_EXIT_0: > - return R0; > + return BPF_R0; > > /* STX and ST and LDX*/ > #define LDST(SIZEOP, SIZE) \ > @@ -505,18 +507,19 @@ select_insn: > atomic64_add((u64) X, (atomic64_t *)(unsigned long) > (A + insn->off)); > CONT; > - LD_ABS_W: /* R0 = ntohl(*(u32 *) (skb->data + K)) */ > + LD_ABS_W: /* BPF_R0 = ntohl(*(u32 *) (skb->data + K)) */ > off = K; > load_word: > - /* BPF_LD + BPD_ABS and BPF_LD + BPF_IND insns are only > - * appearing in the programs where ctx == skb. All programs > - * keep 'ctx' in regs[BPF_REG_CTX] == R6, sk_convert_filter() > - * saves it in R6, internal BPF verifier will check that > - * R6 == ctx. > + /* BPF_LD + BPD_ABS and BPF_LD + BPF_IND insns are > + * only appearing in the programs where ctx == > + * skb. All programs keep 'ctx' in regs[BPF_REG_CTX] > + * == BPF_R6, sk_convert_filter() saves it in BPF_R6, > + * internal BPF verifier will check that BPF_R6 == > + * ctx. > * > - * BPF_ABS and BPF_IND are wrappers of function calls, so > - * they scratch R1-R5 registers, preserve R6-R9, and store > - * return value into R0. > + * BPF_ABS and BPF_IND are wrappers of function calls, > + * so they scratch BPF_R1-BPF_R5 registers, preserve > + * BPF_R6-BPF_R9, and store return value into BPF_R0. > * > * Implicit input: > * ctx > @@ -526,39 +529,39 @@ load_word: > * K == 32-bit immediate > * > * Output: > - * R0 - 8/16/32-bit skb data converted to cpu endianness > + * BPF_R0 - 8/16/32-bit skb data converted to cpu endianness > */ > ptr = load_pointer((struct sk_buff *) ctx, off, 4, &tmp); > if (likely(ptr != NULL)) { > - R0 = get_unaligned_be32(ptr); > + BPF_R0 = get_unaligned_be32(ptr); > CONT; > } > return 0; > - LD_ABS_H: /* R0 = ntohs(*(u16 *) (skb->data + K)) */ > + LD_ABS_H: /* BPF_R0 = ntohs(*(u16 *) (skb->data + K)) */ > off = K; > load_half: > ptr = load_pointer((struct sk_buff *) ctx, off, 2, &tmp); > if (likely(ptr != NULL)) { > - R0 = get_unaligned_be16(ptr); > + BPF_R0 = get_unaligned_be16(ptr); > CONT; > } > return 0; > - LD_ABS_B: /* R0 = *(u8 *) (ctx + K) */ > + LD_ABS_B: /* BPF_R0 = *(u8 *) (ctx + K) */ > off = K; > load_byte: > ptr = load_pointer((struct sk_buff *) ctx, off, 1, &tmp); > if (likely(ptr != NULL)) { > - R0 = *(u8 *)ptr; > + BPF_R0 = *(u8 *)ptr; > CONT; > } > return 0; > - LD_IND_W: /* R0 = ntohl(*(u32 *) (skb->data + X + K)) */ > + LD_IND_W: /* BPF_R0 = ntohl(*(u32 *) (skb->data + X + K)) */ > off = K + X; > goto load_word; > - LD_IND_H: /* R0 = ntohs(*(u16 *) (skb->data + X + K)) */ > + LD_IND_H: /* BPF_R0 = ntohs(*(u16 *) (skb->data + X + K)) */ > off = K + X; > goto load_half; > - LD_IND_B: /* R0 = *(u8 *) (skb->data + X + K) */ > + LD_IND_B: /* BPF_R0 = *(u8 *) (skb->data + X + K) */ > off = K + X; > goto load_byte; > > @@ -1001,7 +1004,7 @@ do_pass: > *insn = BPF_ALU64_REG(BPF_MOV, BPF_REG_TMP, BPF_REG_A); > insn++; > > - /* A = R0 = *(u8 *) (skb->data + K) */ > + /* A = BPF_R0 = *(u8 *) (skb->data + K) */ > *insn = BPF_LD_ABS(BPF_B, fp->k); > insn++; > > -- > 1.9.0 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2014-05-13 17:41 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <20140509231825.22D005A4123@corp2gmr1-2.hot.corp.google.com> 2014-05-10 17:15 ` mmotm 2014-05-09-16-17 uploaded (ptrace-ab.hi vs. net/core/filter.c) Randy Dunlap 2014-05-13 17:14 ` David Miller 2014-05-13 17:41 ` Alexei Starovoitov
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).