devtmpfs: factor out setup part of devtmpfsd()
authorRasmus Villemoes <linux@rasmusvillemoes.dk>
Wed, 15 Jan 2020 18:41:50 +0000 (19:41 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 22 Jan 2020 14:28:14 +0000 (15:28 +0100)
Factor out the setup part of devtmpfsd() to make it a bit easier to
see that we always call setup_done() exactly once (provided of course
the kthread is succesfully created).

Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Link: https://lore.kernel.org/r/20200115184154.3492-3-linux@rasmusvillemoes.dk
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/base/devtmpfs.c

index ccb046f..9638893 100644 (file)
@@ -388,7 +388,7 @@ static int handle(const char *name, umode_t mode, kuid_t uid, kgid_t gid,
                return handle_remove(name, dev);
 }
 
-static int devtmpfsd(void *p)
+static int devtmpfs_setup(void *p)
 {
        int err;
 
@@ -400,7 +400,18 @@ static int devtmpfsd(void *p)
                goto out;
        ksys_chdir("/.."); /* will traverse into overmounted root */
        ksys_chroot(".");
+out:
+       *(int *)p = err;
        complete(&setup_done);
+       return err;
+}
+
+static int devtmpfsd(void *p)
+{
+       int err = devtmpfs_setup(p);
+
+       if (err)
+               return err;
        while (1) {
                spin_lock(&req_lock);
                while (requests) {
@@ -421,10 +432,6 @@ static int devtmpfsd(void *p)
                schedule();
        }
        return 0;
-out:
-       *(int *)p = err;
-       complete(&setup_done);
-       return err;
 }
 
 /*