lkml.org 
[lkml]   [2009]   [Dec]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[094/119] modules: dont export section names of empty sections via sysfs
    2.6.31-stable review patch.  If anyone has any objections, please let us know.

    ------------------
    From: Helge Deller <deller@gmx.de>

    commit 35dead4235e2b67da7275b4122fed37099c2f462 upstream.

    On the parisc architecture we face for each and every loaded kernel module
    this kernel "badness warning":
    sysfs: cannot create duplicate filename '/module/ac97_bus/sections/.text'
    Badness at fs/sysfs/dir.c:487

    Reason for that is, that on parisc all kernel modules do have multiple
    .text sections due to the usage of the -ffunction-sections compiler flag
    which is needed to reach all jump targets on this platform.

    An objdump on such a kernel module gives:
    Sections:
    Idx Name Size VMA LMA File off Algn
    0 .note.gnu.build-id 00000024 00000000 00000000 00000034 2**2
    CONTENTS, ALLOC, LOAD, READONLY, DATA
    1 .text 00000000 00000000 00000000 00000058 2**0
    CONTENTS, ALLOC, LOAD, READONLY, CODE
    2 .text.ac97_bus_match 0000001c 00000000 00000000 00000058 2**2
    CONTENTS, ALLOC, LOAD, READONLY, CODE
    3 .text 00000000 00000000 00000000 000000d4 2**0
    CONTENTS, ALLOC, LOAD, READONLY, CODE
    ...
    Since the .text sections are empty (size of 0 bytes) and won't be
    loaded by the kernel module loader anyway, I don't see a reason
    why such sections need to be listed under
    /sys/module/<module_name>/sections/<section_name> either.

    The attached patch does solve this issue by not exporting section
    names which are empty.

    This fixes bugzilla http://bugzilla.kernel.org/show_bug.cgi?id=14703

    Signed-off-by: Helge Deller <deller@gmx.de>
    CC: rusty@rustcorp.com.au
    CC: akpm@linux-foundation.org
    CC: James.Bottomley@HansenPartnership.com
    CC: roland@redhat.com
    CC: dave@hiauly1.hia.nrc.ca
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    kernel/module.c | 5 ++++-
    1 file changed, 4 insertions(+), 1 deletion(-)

    --- a/kernel/module.c
    +++ b/kernel/module.c
    @@ -1179,7 +1179,8 @@ static void add_sect_attrs(struct module

    /* Count loaded sections and allocate structures */
    for (i = 0; i < nsect; i++)
    - if (sechdrs[i].sh_flags & SHF_ALLOC)
    + if (sechdrs[i].sh_flags & SHF_ALLOC
    + && sechdrs[i].sh_size)
    nloaded++;
    size[0] = ALIGN(sizeof(*sect_attrs)
    + nloaded * sizeof(sect_attrs->attrs[0]),
    @@ -1199,6 +1200,8 @@ static void add_sect_attrs(struct module
    for (i = 0; i < nsect; i++) {
    if (! (sechdrs[i].sh_flags & SHF_ALLOC))
    continue;
    + if (!sechdrs[i].sh_size)
    + continue;
    sattr->address = sechdrs[i].sh_addr;
    sattr->name = kstrdup(secstrings + sechdrs[i].sh_name,
    GFP_KERNEL);



    \
     
     \ /
      Last update: 2009-12-07 01:25    [W:0.023 / U:1.632 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site