Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a03ffcf8 authored by Markus Kötter's avatar Markus Kötter Committed by David S. Miller
Browse files

net: bpf_jit: fix an off-one bug in x86_64 cond jump target



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: default avatarMarkus Kötter <nepenthesdev@gmail.com>
Signed-off-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent d1388dac
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -568,8 +568,8 @@ cond_branch: f_offset = addrs[i + filter[i].jf] - addrs[i];
					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);