mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-15 02:39:18 +08:00
bpf-next: Avoid goto in regs_refine_cond_op()
In case of GE/GT/SGE/JST instructions, regs_refine_cond_op() reuses the logic that does analysis of LE/LT/SLE/SLT instructions. This commit avoids the use of a goto to perform the reuse. Signed-off-by: Harishankar Vishwanathan <harishankar.vishwanathan@gmail.com> Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Link: https://lore.kernel.org/bpf/20240321002955.808604-1-harishankar.vishwanathan@gmail.com
This commit is contained in:
committed by
Andrii Nakryiko
parent
cc9b22dfa7
commit
4c2a26fc80
@@ -14544,7 +14544,19 @@ static void regs_refine_cond_op(struct bpf_reg_state *reg1, struct bpf_reg_state
|
||||
struct tnum t;
|
||||
u64 val;
|
||||
|
||||
again:
|
||||
/* In case of GE/GT/SGE/JST, reuse LE/LT/SLE/SLT logic from below */
|
||||
switch (opcode) {
|
||||
case BPF_JGE:
|
||||
case BPF_JGT:
|
||||
case BPF_JSGE:
|
||||
case BPF_JSGT:
|
||||
opcode = flip_opcode(opcode);
|
||||
swap(reg1, reg2);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
switch (opcode) {
|
||||
case BPF_JEQ:
|
||||
if (is_jmp32) {
|
||||
@@ -14687,14 +14699,6 @@ again:
|
||||
reg2->smin_value = max(reg1->smin_value + 1, reg2->smin_value);
|
||||
}
|
||||
break;
|
||||
case BPF_JGE:
|
||||
case BPF_JGT:
|
||||
case BPF_JSGE:
|
||||
case BPF_JSGT:
|
||||
/* just reuse LE/LT logic above */
|
||||
opcode = flip_opcode(opcode);
|
||||
swap(reg1, reg2);
|
||||
goto again;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user