]> granicus.if.org Git - zfs/commitdiff
call_usermodehelper() should wait for process
authorNed Bass <bass6@llnl.gov>
Thu, 10 Jan 2013 00:09:47 +0000 (16:09 -0800)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Thu, 10 Jan 2013 00:54:19 +0000 (16:54 -0800)
As of Linux 3.4 the UMH_WAIT_* constants were renumbered.  In
particular, the meaning of "1" changed from UMH_WAIT_PROC (wait for
process to complete), to UMH_WAIT_EXEC (wait for the exec, but not the
process).  A number of call sites used the number 1 instead of the
constant name, so the behavior was not as expected on kernels with
this change.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
module/spl/spl-generic.c
module/splat/splat-linux.c
module/splat/splat-vnode.c

index 22ea5078116187893bb2847496cb7318d19c51c9..39357617cb973b86ee22cdae9f58ce004eba761d 100644 (file)
@@ -536,7 +536,7 @@ hostid_exec(void)
         * '/usr/bin/hostid' and redirect the result to /proc/sys/spl/hostid
         * for us to use.  It's a horrific solution but it will do for now.
         */
-       rc = call_usermodehelper(argv[0], argv, envp, 1);
+       rc = call_usermodehelper(argv[0], argv, envp, UMH_WAIT_PROC);
        if (rc)
                printk("SPL: Failed user helper '%s %s %s', rc = %d\n",
                       argv[0], argv[1], argv[2], rc);
@@ -607,7 +607,7 @@ set_kallsyms_lookup_name(void)
                         NULL };
        int rc;
 
-       rc = call_usermodehelper(argv[0], argv, envp, 1);
+       rc = call_usermodehelper(argv[0], argv, envp, UMH_WAIT_PROC);
 
        /*
         * Due to I/O buffering the helper may return successfully before
index 76e2398dabe63f0800c343a616ba1fe84a149996..0a1808f61102b2a81284a7996385638ac3e8f928 100644 (file)
@@ -166,7 +166,7 @@ splat_linux_drop_slab(struct file *file)
                         NULL };
        int rc;
 
-       rc = call_usermodehelper(argv[0], argv, envp, 1);
+       rc = call_usermodehelper(argv[0], argv, envp, UMH_WAIT_PROC);
        if (rc)
                splat_vprint(file, SPLAT_LINUX_TEST3_NAME,
                    "Failed user helper '%s %s %s', rc = %d\n",
index 7d1c75f17994d37555942d1198f0faa754de891a..a7034c1155cde1c7751e5a319392ce8708f29735 100644 (file)
@@ -75,7 +75,7 @@ splat_vnode_user_cmd(struct file *file, void *arg,
                         NULL };
        int rc;
 
-       rc = call_usermodehelper(sh_path, argv, envp, 1);
+       rc = call_usermodehelper(sh_path, argv, envp, UMH_WAIT_PROC);
        if (rc) {
                splat_vprint(file, name,
                             "Failed command: %s %s %s (%d)\n",