Alexei Starovoitov <alexei.starovoitov@xxxxxxxxx> writes: > On Thu, Oct 21, 2021 at 11:40 AM Toke Høiland-Jørgensen <toke@xxxxxxxxxx> wrote: >> + 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