net: bpf_jit: fix divide by 0 generation
authorEric Dumazet <eric.dumazet@gmail.com>
Wed, 18 Jan 2012 07:21:42 +0000 (07:21 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 18 Jan 2012 21:04:26 +0000 (16:04 -0500)
commitd00a9dd21bdf7908b70866794c8313ee8a5abd5c
tree3c9c422ba64d1bb6ffdadeb71e02726126c870c6
parent1c659a4475ec2b2f4495e4773c417a9100cbd9de
net: bpf_jit: fix divide by 0 generation

Several problems fixed in this patch :

1) Target of the conditional jump in case a divide by 0 is performed
   by a bpf is wrong.

2) Must 'generate' the full function prologue/epilogue at pass=0,
   or else we can stop too early in pass=1 if the proglen doesnt change.
   (if the increase of prologue/epilogue equals decrease of all
    instructions length because some jumps are converted to near jumps)

3) Change the wrong length detection at the end of code generation to
   issue a more explicit message, no need for a full stack trace.

Reported-by: Phil Oester <kernel@linuxace.com>
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
arch/x86/net/bpf_jit_comp.c