The AND instruction is erroneously using the X register instead of the K register. Signed-off-by: Brendan Hickey <bhickey@google.com> Signed-off-by: Daniel Borkmann <dborkman@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
@@ -820,7 +820,7 @@ static void bpf_single_step(struct bpf_regs *r, struct sock_filter *f,
r->A &= r->X;
break;
case BPF_ALU_AND | BPF_K:
- r->A &= r->X;
+ r->A &= K;
case BPF_ALU_OR | BPF_X:
r->A |= r->X;