md: Return error if request_module fails and returns positive value
authorGoldwyn Rodrigues <rgoldwyn@suse.com>
Wed, 22 Jul 2015 17:09:15 +0000 (12:09 -0500)
committerNeilBrown <neilb@suse.com>
Fri, 24 Jul 2015 03:37:51 +0000 (13:37 +1000)
request_module() can return 256 (process exited) in some cases,
which is not as specified in the documentation before the
request_module() definition. Convert the error to -ENOENT.

The positive error number results in bitmap_create() returning
a value that is meant to be an error but doesn't look like one,
so it is dereferenced as a point and causes a crash.

(not needed for stable as this is "experimental" code)
Fixes: edb39c9deda8 ("Introduce md_cluster_operations to handle cluster functions")
Signed-off-By: Goldwyn Rodrigues <rgoldwyn@suse.com>
Signed-off-by: NeilBrown <neilb@suse.com>
drivers/md/md.c

index 5025b3ec13cddee4796f3c12d65b9edac0e93776..0fcf6de2415ad1a2e510049c82955ba171228d91 100644 (file)
@@ -7439,7 +7439,7 @@ int md_setup_cluster(struct mddev *mddev, int nodes)
        err = request_module("md-cluster");
        if (err) {
                pr_err("md-cluster module not found.\n");
-               return err;
+               return -ENOENT;
        }
 
        spin_lock(&pers_lock);