On Fri, Jul 07, 2023 at 01:38:16PM -0700, Axel Rasmussen wrote:
Ah, so I tried switching back to the {0} initializer, and was reminded why I didn't do that in v1. :) Ignoring the missing braces warning I talked about before, using {0} here is actually an error ("variable-sized object may not be initialized") because this is a variable sized array (nr_cpus isn't constant). So, that option is out.
I'm not a huge fan of adding the free() cleanup and dealing with all of the err() calls this function has.
Oh, that's definitely not needed - as long as we know we're going to quit, we let kernel clean everything is fine.
I just worry in the future there can be a loop of userfaultfd_stress() so it can OOM a host even if no err() hit but by looping. I hope I explained what I meant.. so it's still good we make sure things freed properly when in success paths and when we're at it.
Originally I switched to calloc() because I'm not a big fan of VLAs anyway. But, as a compromise in v4 I'll leave it a VLA, and switch to memset() for initializing it.
That'll be good enough to me. Thanks a lot,