• Joel Granados's avatar
    sysctl: Add a size arg to __register_sysctl_table · bff97cf1
    Joel Granados authored
    We make these changes in order to prepare __register_sysctl_table and
    its callers for when we remove the sentinel element (empty element at
    the end of ctl_table arrays). We don't actually remove any sentinels in
    this commit, but we *do* make sure to use ARRAY_SIZE so the table_size
    is available when the removal occurs.
    
    We add a table_size argument to __register_sysctl_table and adjust
    callers, all of which pass ctl_table pointers and need an explicit call
    to ARRAY_SIZE. We implement a size calculation in register_net_sysctl in
    order to forward the size of the array pointer received from the network
    register calls.
    
    The new table_size argument does not yet have any effect in the
    init_header call which is still dependent on the sentinel's presence.
    table_size *does* however drive the `kzalloc` allocation in
    __register_sysctl_table with no adverse effects as the allocated memory
    is either one element greater than the calculated ctl_table array (for
    the calls in ipc_sysctl.c, mq_sysctl.c and ucount.c) or the exact size
    of the calculated ctl_table array (for the call from sysctl_net.c and
    register_sysctl). This approach will allows us to "just" remove the
    sentinel without further changes to __register_sysctl_table as
    table_size will represent the exact size for all the callers at that
    point.
    Signed-off-by: default avatarJoel Granados <j.granados@samsung.com>
    Signed-off-by: default avatarLuis Chamberlain <mcgrof@kernel.org>
    bff97cf1
ipc_sysctl.c 7.29 KB