aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKay Sievers <kay.sievers@vrfy.org>2011-05-10 15:27:34 -0400
committerRafael J. Wysocki <rjw@sisk.pl>2011-05-17 17:19:18 -0400
commit13d53f8775c6a00b070a3eef6833795412eb7fcd (patch)
tree4d8d2c2261c9c41bfc37b1199b8789f5037e49ad
parentc3b0795c98c08351567464150db66d11e05d7611 (diff)
kmod: always provide usermodehelper_disable()
We need to prevent kernel-forked processes during system poweroff. Such processes try to access the filesystem whose disks we are trying to shutdown at the same time. This causes delays and exceptions in the storage drivers. A follow-up patch will add these calls and need usermodehelper_disable() also on systems without suspend support. Signed-off-by: Kay Sievers <kay.sievers@vrfy.org> Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
-rw-r--r--include/linux/kmod.h4
-rw-r--r--kernel/kmod.c7
2 files changed, 0 insertions, 11 deletions
diff --git a/include/linux/kmod.h b/include/linux/kmod.h
index 7f3dbcb78116..310231823852 100644
--- a/include/linux/kmod.h
+++ b/include/linux/kmod.h
@@ -111,12 +111,8 @@ call_usermodehelper(char *path, char **argv, char **envp, enum umh_wait wait)
111 111
112extern void usermodehelper_init(void); 112extern void usermodehelper_init(void);
113 113
114#ifdef CONFIG_PM_SLEEP
115extern int usermodehelper_disable(void); 114extern int usermodehelper_disable(void);
116extern void usermodehelper_enable(void); 115extern void usermodehelper_enable(void);
117extern bool usermodehelper_is_disabled(void); 116extern bool usermodehelper_is_disabled(void);
118#else
119static inline bool usermodehelper_is_disabled(void) { return false; }
120#endif
121 117
122#endif /* __LINUX_KMOD_H__ */ 118#endif /* __LINUX_KMOD_H__ */
diff --git a/kernel/kmod.c b/kernel/kmod.c
index 9ab513bd0c3c..5ae0ff38425f 100644
--- a/kernel/kmod.c
+++ b/kernel/kmod.c
@@ -245,7 +245,6 @@ static void __call_usermodehelper(struct work_struct *work)
245 } 245 }
246} 246}
247 247
248#ifdef CONFIG_PM_SLEEP
249/* 248/*
250 * If set, call_usermodehelper_exec() will exit immediately returning -EBUSY 249 * If set, call_usermodehelper_exec() will exit immediately returning -EBUSY
251 * (used for preventing user land processes from being created after the user 250 * (used for preventing user land processes from being created after the user
@@ -321,12 +320,6 @@ static void helper_unlock(void)
321 if (atomic_dec_and_test(&running_helpers)) 320 if (atomic_dec_and_test(&running_helpers))
322 wake_up(&running_helpers_waitq); 321 wake_up(&running_helpers_waitq);
323} 322}
324#else /* CONFIG_PM_SLEEP */
325#define usermodehelper_disabled 0
326
327static inline void helper_lock(void) {}
328static inline void helper_unlock(void) {}
329#endif /* CONFIG_PM_SLEEP */
330 323
331/** 324/**
332 * call_usermodehelper_setup - prepare to call a usermode helper 325 * call_usermodehelper_setup - prepare to call a usermode helper