s390/bpf: Implement new atomic ops
authorIlya Leoshkevich <iii@linux.ibm.com>
Thu, 4 Mar 2021 23:30:02 +0000 (00:30 +0100)
committerAlexei Starovoitov <ast@kernel.org>
Tue, 16 Mar 2021 19:18:49 +0000 (12:18 -0700)
commitba3b86b9cef0c72ae78173f2c4db8a08bf4d3770
tree113ebc5fd57ee5f42f87482d4fda016c6a710208
parent23f50b5ac331c8c27c421a7116618355508e8427
s390/bpf: Implement new atomic ops

Implement BPF_AND, BPF_OR and BPF_XOR as the existing BPF_ADD. Since
the corresponding machine instructions return the old value, BPF_FETCH
happens by itself, the only additional thing that is required is
zero-extension.

There is no single instruction that implements BPF_XCHG on s390, so use
a COMPARE AND SWAP loop.

BPF_CMPXCHG, on the other hand, can be implemented by a single COMPARE
AND SWAP. Zero-extension is automatically inserted by the verifier.

Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20210304233002.149096-1-iii@linux.ibm.com
arch/s390/net/bpf_jit_comp.c