Neil Horman
c02e3f361c
kmod: fix race in usermodehelper code
...
The user mode helper code has a race in it. call_usermodehelper_exec()
takes an allocated subprocess_info structure, which it passes to a
workqueue, and then passes it to a kernel thread which it creates, after
which it calls complete to signal to the caller of
call_usermodehelper_exec() that it can free the subprocess_info struct.
But since we use that structure in the created thread, we can't call
complete from __call_usermodehelper(), which is where we create the kernel
thread. We need to call complete() from within the kernel thread and then
not use subprocess_info afterward in the case of UMH_WAIT_EXEC. Tested
successfully by me.
Signed-off-by: Neil Horman <nhorman@tuxdriver.com >
Cc: Rusty Russell <rusty@rustcorp.com.au >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2009-09-23 07:39:28 -07:00
..
2009-08-20 10:29:28 +10:00
2009-09-11 13:21:31 -07:00
2009-09-22 07:17:38 -07:00
2009-09-18 09:15:24 -07:00
2009-09-22 07:51:45 -07:00
2009-08-24 11:33:40 +10:00
2009-06-08 12:31:53 -07:00
2009-06-24 00:02:38 -04:00
2009-06-24 00:00:52 -04:00
2009-06-24 00:02:38 -04:00
2009-06-24 00:02:38 -04:00
2009-06-24 00:00:52 -04:00
2009-06-24 00:02:38 -04:00
2009-04-02 19:04:54 -07:00
2009-09-22 07:17:24 -07:00
2009-04-30 19:24:24 +02:00
2009-09-15 09:19:38 -07:00
2009-06-16 19:47:31 -07:00
2009-09-15 09:10:57 +10:00
2009-09-18 09:48:52 -07:00
2009-03-31 23:00:27 -04:00
2009-09-21 14:28:04 +02:00
2009-04-05 11:04:19 -07:00
2009-09-22 07:17:39 -07:00
2009-07-18 14:19:53 +02:00
2009-08-10 15:41:12 +02:00
2009-09-11 13:16:22 -07:00
2009-06-16 19:47:48 -07:00
2009-09-18 09:15:24 -07:00
2009-06-09 22:37:52 +02:00
2009-07-29 19:10:34 -07:00
2009-09-19 13:13:17 -07:00
2009-05-15 07:56:24 -05:00
2009-09-23 07:39:28 -07:00
2009-08-11 14:19:09 +02:00
2009-09-09 17:30:06 +02:00
2009-07-24 10:53:29 +02:00
2009-08-31 18:05:25 +02:00
2009-08-29 13:22:36 +02:00
2009-09-21 09:15:07 -07:00
2009-09-22 07:17:43 -07:00
2009-06-11 17:55:42 +02:00
2009-04-02 19:04:53 -07:00
2009-06-18 13:03:56 -07:00
2009-09-21 15:14:53 +02:00
2009-06-12 21:46:58 +09:30
2009-09-21 14:34:11 +02:00
2009-06-18 13:03:55 -07:00
2009-09-22 07:17:38 -07:00
2009-08-08 18:30:25 +02:00
2009-08-21 21:43:46 +02:00
2009-09-23 07:39:28 -07:00
2009-09-20 20:15:40 +02:00
2009-07-14 00:30:40 +10:00
2009-09-19 08:53:22 +02:00
2009-09-19 08:53:22 +02:00
2009-09-19 08:53:22 +02:00
2009-09-19 08:53:22 +02:00
2009-09-19 08:53:22 +02:00
2009-09-19 08:53:22 +02:00
2009-04-05 11:04:19 -07:00
2009-06-18 13:03:48 -07:00
2009-06-30 18:56:00 -07:00
2009-04-06 11:14:02 +02:00
2009-08-06 05:50:21 +02:00
2009-09-18 20:47:30 +02:00
2009-08-02 14:26:09 +02:00
2009-03-30 22:05:17 +10:30
2009-09-17 10:17:25 +02:00
2009-09-21 09:06:17 -07:00
2009-09-17 10:17:25 +02:00
2009-09-21 09:53:55 +02:00
2009-09-21 09:53:55 +02:00
2009-03-24 23:16:51 +01:00
2009-09-22 07:17:45 -07:00
2009-08-01 11:18:56 -07:00
2009-06-16 19:47:49 -07:00
2009-08-26 17:24:28 -07:00
2009-09-17 15:53:44 -04:00
2009-08-31 18:08:50 +02:00
2009-03-30 22:05:17 +10:30
2009-09-21 14:28:04 +02:00
2009-09-21 14:28:04 +02:00
2009-09-23 07:39:28 -07:00
2009-07-12 14:03:27 -07:00
2009-09-15 10:17:30 +02:00
2009-09-21 14:28:04 +02:00
2009-09-21 15:14:55 +02:00
2009-06-15 21:30:23 -07:00
2009-04-02 19:05:01 -07:00
2009-06-18 13:03:55 -07:00
2009-08-10 14:43:09 +02:00
2009-09-11 13:23:18 -07:00