lkml.org 
[lkml]   [2007]   [Sep]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] module: return error when mod_sysfs_init() failed
    2007/9/29, Greg KH <gregkh@suse.de>:
    > > Index: 2.6-git/kernel/module.c
    > > ===================================================================
    > > --- 2.6-git.orig/kernel/module.c
    > > +++ 2.6-git/kernel/module.c
    > > @@ -1782,7 +1782,8 @@ static struct module *load_module(void _
    > > module_unload_init(mod);
    > >
    > > /* Initialize kobject, so we can reference it. */
    > > - if (mod_sysfs_init(mod) != 0)
    > > + err = mod_sysfs_init(mod);
    > > + if (err)
    > > goto cleanup;
    >
    > I must be still asleep this morning, but I think this patch does the
    > exact same thing as the original code does, right? Otherwise, this
    > code would always be failing.
    >
    > Or do I just need to go get my morning coffee to wake up and see the
    > problem here?

    Hello,

    In the original code, the "err" is zero before goto cleanup.
    This "err" will be the return value of load_module().

    load_module() is the function which returns error as pointer
    and the expression IS_ERR(NULL) is false. So the caller of load_module()
    cannot catch that error.

    I found this problem when I was running the fault injection test
    script in Documentation/fault-injection/fault-injection.txt with
    random module.

    #!/bin/bash

    FAILTYPE=failslab
    echo Y > /debug/$FAILTYPE/task-filter
    echo 10 > /debug/$FAILTYPE/probability
    echo 100 > /debug/$FAILTYPE/interval
    echo -1 > /debug/$FAILTYPE/times
    echo 0 > /debug/$FAILTYPE/space
    echo 2 > /debug/$FAILTYPE/verbose
    echo 0 > /debug/$FAILTYPE/ignore-gfp-wait

    faulty_system()
    {
    bash -c "echo 1 > /proc/self/make-it-fail && exec $*"
    }

    if [ $# -eq 0 ]
    then
    echo "Usage: $0 modulename [ modulename ... ]"
    exit 1
    fi

    for m in $*
    do
    echo inserting $m...
    faulty_system modprobe $m

    echo removing $m...
    faulty_system modprobe -r $m
    done
    -
    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: 2007-09-29 17:53    [W:0.028 / U:30.496 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site