2007/9/29, Greg KH <[EMAIL PROTECTED]>: > > 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 [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/