On Tue, Jun 06, 2023 at 11:56:26AM -0700, Luis Chamberlain wrote:
On Fri, Jun 02, 2023 at 01:06:30PM +0200, Joel Granados wrote:
Resending as the first set got mangled with smtp error.
This is part of the effort to remove the empty element of the ctl_table structures (used to calculate size) and replace it with an ARRAY_SIZE call. By replacing the child element in struct ctl_table with a flags element we make sure that there are no forward recursions on child nodes and therefore set ourselves up for just using an ARRAY_SIZE. We also added some self tests to make sure that we do not break anything.
Patchset is separated in 4: parport fixes, selftests fixes, selftests additions and replacement of child element. Tested everything with sysctl self tests and everything seems "ok".
parport fixes: @mcgrof: this is related to my previous series and it plugs a sysct table leak in the parport driver. Please tell me if you want me to repost the parport series with this one stiched in.
Selftests fixes: Remove the prefixed zeros when passing a awk field to the awk print command because it was causing $0009 to be interpreted as $0. Replaced continue with return in sysctl.sh(test_case) so the test actually gets skipped. The skip decision is now in sysctl.sh(skip_test).
Selftest additions: New test to confirm that unregister actually removes targets. New test to confirm that permanently empty targets are indeed created and that no other targets can be created "on top".
Replaced the child pointer in struct ctl_table with a u8 flag. The flag is used to differentiate between permanently empty targets and non-empty ones.
Comments/feedback greatly appreciated
This all looks great, thanks so much for doing all this work! I pushed to sysctl-next.
I have a version where I replace the u8 flag with an enumeration with two memebers. Tell me if it make sense to post the V2 and I'll send it out after fixing it up a bit.
Best
Joel Granados