On Mon, Sep 23, 2024 at 12:30:48AM -0600, Jens Axboe wrote: > 1) Just don't reuse the entry. Then we can drop the struct > filename->aname completely as well. Yes that might incur an extra > alloc for the odd case of audit_enabled and being deep enough that > the preallocated names have been used, but doesn't anyone really > care? It'll be noise in the overhead anyway. Side note - that would > unalign struct filename again. Would be nice to drop audit_names from > a core fs struct... You'll get different output in logs, though. Whether that breaks userland setups/invalidates certifications/etc.... fuck knows. If anything, a loop through the list, searching for matching entry would be safer in that respect. Order of the items... might or might not be an issue - see above. > 2) Add a ref to struct audit_names, RCU kfree it when it drops to zero. > This would mean dropping struct audit_context->preallocated_names, as Costly, that. > otherwise we'd run into trouble there if a context gets blown away > while someone else has a ref to that audit_names struct. We could do > this without a ref as well, as long as we can store an audit_context > pointer in struct audit_names and be able to validate it under RCU. > If ctx doesn't match, don't use it. That's one of the variants I mentioned upthread...