Commit 4c2a26fc authored by Harishankar Vishwanathan's avatar Harishankar Vishwanathan Committed by Andrii Nakryiko

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: default avatarHarishankar Vishwanathan <harishankar.vishwanathan@gmail.com>
Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20240321002955.808604-1-harishankar.vishwanathan@gmail.com
parent cc9b22df
......@@ -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 @@ static void regs_refine_cond_op(struct bpf_reg_state *reg1, struct bpf_reg_state
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;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment