lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 14 Jan 2014 23:28:46 -0800 (PST) From: David Miller <davem@...emloft.net> To: eric.dumazet@...il.com Cc: hannes@...essinduktion.org, netdev@...r.kernel.org, dborkman@...hat.com, darkjames-ws@...kjames.pl, mgherzan@...il.com, rmk+kernel@....linux.org.uk, matt@...abs.org, schwidefsky@...ibm.com, heiko.carstens@...ibm.com Subject: Re: [PATCH net] bpf: do not use reciprocal divide From: Eric Dumazet <eric.dumazet@...il.com> Date: Tue, 14 Jan 2014 23:02:41 -0800 > diff --git a/arch/sparc/net/bpf_jit_comp.c b/arch/sparc/net/bpf_jit_comp.c > index 218b6b23c378..125045063b91 100644 > --- a/arch/sparc/net/bpf_jit_comp.c > +++ b/arch/sparc/net/bpf_jit_comp.c > @@ -498,8 +498,7 @@ void bpf_jit_compile(struct sk_filter *fp) > emit_alu_K(MUL, K); > break; > case BPF_S_ALU_DIV_K: /* A /= K */ > - emit_alu_K(MUL, K); > - emit_read_y(r_A); > + emit_alu_K(DIV, K); > break; > case BPF_S_ALU_DIV_X: /* A /= X; */ > emit_cmpi(r_X, 0); You have to clear the Y register before a divide, as it provides the top 32-bits of the 64-bit numerator. You can just cut and paste the sequence used for BPF_S_ALU_DIV_X: emit_write_y(G0); #ifdef CONFIG_SPARC32 /* The Sparc v8 architecture requires * three instructions between a %y * register write and the first use. */ emit_nop(); emit_nop(); emit_nop(); #endif emit_alu_X(DIV); -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists