lkml.org 
[lkml]   [2008]   [Feb]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subjectsysctl in 2.6.24.2 excludes unapproved files from /proc/sys?
    Date
    A change in 2.6.24.x kernel/sysctl.c seems to exclude exo-kernel drivers
    from using the /proc/sys/ interface:

    @@ -1275,7 +1481,9 @@ static void sysctl_set_parent(struct ctl

    static __init int sysctl_init(void)
    {
    + int err;
    sysctl_set_parent(NULL, root_table);
    + err = sysctl_check_table(root_table);
    return 0;
    }

    and

    @@ -1360,6 +1568,10 @@ struct ctl_table_header *register_sysctl
    tmp->used = 0;
    tmp->unregistering = NULL;
    sysctl_set_parent(NULL, table);
    + if (sysctl_check_table(tmp->ctl_table)) {
    + kfree(tmp);
    + return NULL;
    + }
    spin_lock(&sysctl_lock);
    list_add_tail(&tmp->ctl_entry, &root_table_header.ctl_entry);
    spin_unlock(&sysctl_lock);
    and IT TURNS OUT THAT (sorry, did I scream?) sysctl_check_table can't
    succeed on anything that's now not been hardwired into the core kernel
    because of the new sysctl_check.c file which contains gazzilions of
    explict tables aying what is supposed to be in there in excruciating
    detail and which are consulted through sysctl_check_table and
    sysctl_binary_lookup. E.g:

    static struct trans_ctl_table trans_random_table[] = {
    { RANDOM_POOLSIZE, "poolsize" },
    { RANDOM_ENTROPY_COUNT, "entropy_avail" },
    { RANDOM_READ_THRESH, "read_wakeup_threshold" },
    { RANDOM_WRITE_THRESH, "write_wakeup_threshold" },
    { RANDOM_BOOT_ID, "boot_id" },
    { RANDOM_UUID, "uuid" },
    {}
    };
    It appears to me, not that I am totally sure because of the lack of
    comments, that every attempt to add a new direcotry in the tree with
    a number that is not listed in the above mess fails through
    sysctl_binary_lookup.sysctl_binary_lookup, and every attempt to add
    a directory with CTL_UNNUMBERED instead fails if it has children because
    the children cry about having an unnumbered parent. Every attempt to
    add a directory usurping an existing number fails through some string
    mismatch against the trans_.._tables on the dirnames in one of the
    numerous lookup functions (forget which).

    (somebody has really spent their holidays on this).

    What's a person to do?

    Peter


    \
     
     \ /
      Last update: 2008-03-01 02:23    [W:8.457 / U:0.876 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site