lkml.org 
[lkml]   [2012]   [Jan]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[51/67] net: bpf_jit: fix an off-one bug in x86_64 cond jump target
    3.0-stable review patch.  If anyone has any objections, please let me know.

    ------------------


    From: Markus Kötter <nepenthesdev@gmail.com>

    [ Upstream commit a03ffcf873fe0f2565386ca8ef832144c42e67fa ]

    x86 jump instruction size is 2 or 5 bytes (near/long jump), not 2 or 6
    bytes.

    In case a conditional jump is followed by a long jump, conditional jump
    target is one byte past the start of target instruction.

    Signed-off-by: Markus Kötter <nepenthesdev@gmail.com>
    Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
    ---
    arch/x86/net/bpf_jit_comp.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    --- a/arch/x86/net/bpf_jit_comp.c
    +++ b/arch/x86/net/bpf_jit_comp.c
    @@ -568,8 +568,8 @@ cond_branch: f_offset = addrs[i + filt
    break;
    }
    if (filter[i].jt != 0) {
    - if (filter[i].jf)
    - t_offset += is_near(f_offset) ? 2 : 6;
    + if (filter[i].jf && f_offset)
    + t_offset += is_near(f_offset) ? 2 : 5;
    EMIT_COND_JMP(t_op, t_offset);
    if (filter[i].jf)
    EMIT_JMP(f_offset);

    --
    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/

    \
     
     \ /
      Last update: 2012-01-04 00:07    [W:4.050 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site