Thread (3 messages) flat view 3 messages, 2 authors, 2021-10-22

Re: [PATCH bpf] bpf: fix potential race in tail call compatibility check

From: Toke Høiland-Jørgensen <hidden>
Date: 2021-10-22 10:54:51
Also in: bpf

Alexei Starovoitov [off-list ref] writes:
On Thu, Oct 21, 2021 at 11:40 AM Toke Høiland-Jørgensen [off-list ref] wrote:
quoted
+       map_type = READ_ONCE(array->aux->type);
+       if (!map_type) {
+               /* There's no owner yet where we could check for compatibility.
+                * Do an atomic swap to prevent racing with another invocation
+                * of this branch (via simultaneous map_update syscalls).
                 */
-               array->aux->type  = fp->type;
-               array->aux->jited = fp->jited;
+               if (cmpxchg(&array->aux->type, 0, prog_type))
+                       return false;
Other fields might be used in the compatibility check in the future.
This hack is too fragile.
Just use a spin_lock.
Well, yeah, we're adding another field for xdp_mb. I was just going to
eat more bits of the 'type' field, but OK, can switch to a spinlock
instead :)

-Toke
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help