On Wed, Apr 13, 2022 at 12:27 PM Tadeusz Struk <tadeusz.struk@xxxxxxxxxx> wrote: > > On 4/13/22 12:07, Andrii Nakryiko wrote: > >> it would be ideal if detach would never fail, but it would require some kind of > >> prealloc, on attach maybe? Another option would be to minimize the probability > > We allocate new arrays in update_effective_progs() under assumption > > that we might need to grow the array because we use > > update_effective_progs() for attachment. But for detachment we know > > that we definitely don't need to increase the size, we need to remove > > existing element only, thus shrinking the size. > > > > Normally we'd reallocate the array to shrink it (and that's why we use > > update_effective_progs() and allocate memory), but we can also have a > > fallback path for detachment only to reuse existing effective arrays > > and just shift all the elements to the right from the element that's > > being removed. We'll leave NULL at the end, but that's much better > > than error out. Subsequent attachment or detachment will attempt to > > properly size and reallocate everything. > > > > So I think that should be the fix, if you'd be willing to work on it. > > That makes it much easier then. I will change it so that there is no > alloc needed on the detach path. Thanks for the clarification. Keep in mind that we probably want to do normal alloc-based detach first anyways, if it works. It will keep effective arrays minimally sized. This additional detach specific logic should be a fall back path if the normal way doesn't work. > > -- > Thanks, > Tadeusz