• Eric W. Biederman's avatar
    sysctl: register only tables of sysctl files · f728019b
    Eric W. Biederman authored
    Split the registration of a complex ctl_table array which may have
    arbitrary numbers of directories (->child != NULL) and tables of files
    into a series of simpler registrations that only register tables of files.
    
    Graphically:
    
       register('dir', { + file-a
                         + file-b
                         + subdir1
                           + file-c
                         + subdir2
                           + file-d
                           + file-e })
    
    is transformed into:
       wrapper->subheaders[0] = register('dir', {file1-a, file1-b})
       wrapper->subheaders[1] = register('dir/subdir1', {file-c})
       wrapper->subheaders[2] = register('dir/subdir2', {file-d, file-e})
       return wrapper
    
    This guarantees that __register_sysctl_table will only see a simple
    ctl_table array with all entries having (->child == NULL).
    
    Care was taken to pass the original simple ctl_table arrays to
    __register_sysctl_table whenever possible.
    
    This change is derived from a similar patch written
    by Lucrian Grijincu.
    Inspired-by: default avatarLucian Adrian Grijincu <lucian.grijincu@gmail.com>
    Signed-off-by: default avatarEric W. Biederman <ebiederm@xmission.com>
    f728019b
proc_sysctl.c 31.9 KB