lkml.org 
[lkml]   [2006]   [Oct]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 002/001] /kernel: /proc/kallsyms reports lower-case types for some non-exported symbols (Resend #1)
    From: Adam B. Jerome <abj@novell.com>

    This patch addresses incorrect symbol type information reported through /proc/kallsyms.
    A lowercase character should designate the symbol as local (or non-exported). An
    uppercase character should designate the symbol as global (or external). Without this
    patch, some non-exported symbols are incorrectly assigned an upper-case designation in
    /proc/kallsyms. This patch corrects this condition by converting non-exported symbols
    types to lower case when appropriate and eliminates the superfluous upcase_if_global
    function

    Signed-off-by: Adam B. Jerome <abj@novell.com>

    ---

    I do not subscribe to the list. Please CC posted answers/comments to me <abj@novell.com>.
    Thanks; -adam

    diff -urpN linux-2.6-git/kernel/kallsyms.c linux-2.6-cur/kernel/kallsyms.c
    --- linux-2.6-git/kernel/kallsyms.c 2006-10-02 15:20:25.000000000 -0600
    +++ linux-2.6-cur/kernel/kallsyms.c 2006-10-02 15:58:03.000000000 -0600
    @@ -20,6 +20,7 @@
    #include <linux/proc_fs.h>
    #include <linux/sched.h> /* for cond_resched */
    #include <linux/mm.h>
    +#include <linux/ctype.h>

    #include <asm/sections.h>

    @@ -264,13 +265,6 @@ struct kallsym_iter
    char name[KSYM_NAME_LEN+1];
    };

    -/* Only label it "global" if it is exported. */
    -static void upcase_if_global(struct kallsym_iter *iter)
    -{
    - if (is_exported(iter->name, iter->owner))
    - iter->type += 'A' - 'a';
    -}
    -
    static int get_ksymbol_mod(struct kallsym_iter *iter)
    {
    iter->owner = module_get_kallsym(iter->pos - kallsyms_num_syms,
    @@ -279,7 +273,10 @@ static int get_ksymbol_mod(struct kallsy
    if (iter->owner == NULL)
    return 0;

    - upcase_if_global(iter);
    + /* Label it "global" if it ix exported, "local" if not exported. */
    + iter->type = is_exported(iter->name, iter->owner)
    + ? toupper(iter->type) : tolower(iter->type);
    +
    return 1;
    }

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2006-10-10 20:01    [W:0.032 / U:0.764 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site