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

Commit c366287e authored by Eric Dumazet's avatar Eric Dumazet Committed by Alexei Starovoitov
Browse files

bpf: fix divides by zero



Divides by zero are not nice, lets avoid them if possible.

Also do_div() seems not needed when dealing with 32bit operands,
but this seems a minor detail.

Fixes: bd4cf0ed ("net: filter: rework/optimize internal BPF interpreter's instruction set")
Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
Reported-by: default avatarsyzbot <syzkaller@googlegroups.com>
Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
parent 8155aedf
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -956,7 +956,7 @@ static unsigned int ___bpf_prog_run(u64 *regs, const struct bpf_insn *insn,
		DST = tmp;
		CONT;
	ALU_MOD_X:
		if (unlikely(SRC == 0))
		if (unlikely((u32)SRC == 0))
			return 0;
		tmp = (u32) DST;
		DST = do_div(tmp, (u32) SRC);
@@ -975,7 +975,7 @@ static unsigned int ___bpf_prog_run(u64 *regs, const struct bpf_insn *insn,
		DST = div64_u64(DST, SRC);
		CONT;
	ALU_DIV_X:
		if (unlikely(SRC == 0))
		if (unlikely((u32)SRC == 0))
			return 0;
		tmp = (u32) DST;
		do_div(tmp, (u32) SRC);