On Sat, 20 Aug 2022 at 01:46, Kumar Kartikeya Dwivedi <memxor@xxxxxxxxx> wrote: > > CPU 0 CPU 1 > sa = READ_ONCE(nf_ct_bsa); > > delete_module("nf_conntrack", ..); > > WRITE_ONCE(nf_ct_bsa, NULL); > // finishes > successfully > if (sa) > return sa(...); // oops > Ew, I completely screwed it up. Not trying again. CPU 0 does: sa = READ_ONCE(nf_ct_bsa); then CPU 1 does: delete_module("nf_conntrack", ...); WRITE_ONCE(nf_ct_bsa, NULL); then CPU 0 does: if (sa) sa(...); // bad