aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/sys.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/sys.c')
-rw-r--r--kernel/sys.c19
1 files changed, 8 insertions, 11 deletions
diff --git a/kernel/sys.c b/kernel/sys.c
index 8b71cef3bf1a..6e81aa7e4688 100644
--- a/kernel/sys.c
+++ b/kernel/sys.c
@@ -2114,7 +2114,6 @@ int orderly_poweroff(bool force)
2114 NULL 2114 NULL
2115 }; 2115 };
2116 int ret = -ENOMEM; 2116 int ret = -ENOMEM;
2117 struct subprocess_info *info;
2118 2117
2119 if (argv == NULL) { 2118 if (argv == NULL) {
2120 printk(KERN_WARNING "%s failed to allocate memory for \"%s\"\n", 2119 printk(KERN_WARNING "%s failed to allocate memory for \"%s\"\n",
@@ -2122,18 +2121,16 @@ int orderly_poweroff(bool force)
2122 goto out; 2121 goto out;
2123 } 2122 }
2124 2123
2125 info = call_usermodehelper_setup(argv[0], argv, envp, GFP_ATOMIC); 2124 ret = call_usermodehelper_fns(argv[0], argv, envp, UMH_NO_WAIT,
2126 if (info == NULL) { 2125 NULL, argv_cleanup, NULL);
2127 argv_free(argv); 2126out:
2128 goto out; 2127 if (likely(!ret))
2129 } 2128 return 0;
2130
2131 call_usermodehelper_setfns(info, NULL, argv_cleanup, NULL);
2132 2129
2133 ret = call_usermodehelper_exec(info, UMH_NO_WAIT); 2130 if (ret == -ENOMEM)
2131 argv_free(argv);
2134 2132
2135 out: 2133 if (force) {
2136 if (ret && force) {
2137 printk(KERN_WARNING "Failed to start orderly shutdown: " 2134 printk(KERN_WARNING "Failed to start orderly shutdown: "
2138 "forcing the issue\n"); 2135 "forcing the issue\n");
2139 2136