This repository has been archived on 2026-03-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
ubports_kernel_google_msm/include/linux
Tejun Heo 77e4ef99d1 threadgroup: extend threadgroup_lock() to cover exit and exec
threadgroup_lock() protected only protected against new addition to
the threadgroup, which was inherently somewhat incomplete and
problematic for its only user cgroup.  On-going migration could race
against exec and exit leading to interesting problems - the symmetry
between various attach methods, task exiting during method execution,
->exit() racing against attach methods, migrating task switching basic
properties during exec and so on.

This patch extends threadgroup_lock() such that it protects against
all three threadgroup altering operations - fork, exit and exec.  For
exit, threadgroup_change_begin/end() calls are added to exit_signals
around assertion of PF_EXITING.  For exec, threadgroup_[un]lock() are
updated to also grab and release cred_guard_mutex.

With this change, threadgroup_lock() guarantees that the target
threadgroup will remain stable - no new task will be added, no new
PF_EXITING will be set and exec won't happen.

The next patch will update cgroup so that it can take full advantage
of this change.

-v2: beefed up comment as suggested by Frederic.

-v3: narrowed scope of protection in exit path as suggested by
     Frederic.

Signed-off-by: Tejun Heo <tj@kernel.org>
Reviewed-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Acked-by: Li Zefan <lizf@cn.fujitsu.com>
Acked-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Paul Menage <paul@paulmenage.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
2011-12-12 18:12:21 -08:00
..
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-11-07 09:11:16 -08:00
2011-03-31 11:26:23 -03:00
2011-02-24 19:58:42 +01:00
2011-07-22 08:25:37 -07:00
2011-11-02 16:07:03 -07:00
2011-07-20 20:47:43 -04:00
2011-07-26 16:49:47 -07:00
2011-10-26 15:43:25 -04:00
2011-07-26 16:49:47 -07:00
2011-03-22 17:43:59 -07:00
2011-03-11 14:25:50 +00:00
2011-11-16 09:21:50 +01:00
2011-07-26 16:49:47 -07:00
2011-08-03 11:30:42 -04:00
2011-07-31 22:05:09 +02:00
2011-07-26 16:49:47 -07:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-05-26 17:12:34 -07:00
2011-09-27 09:25:02 +01:00
2011-03-31 11:26:23 -03:00
2011-10-31 17:30:44 -07:00
2011-07-26 16:49:47 -07:00
2011-08-25 16:25:33 -07:00
2011-03-31 11:26:23 -03:00
2011-03-22 17:44:15 -07:00
2011-07-06 14:44:42 -07:00
2011-07-25 20:57:16 -07:00
2011-11-02 12:53:43 +01:00
2011-07-05 23:42:17 -07:00
2011-07-26 16:49:47 -07:00
2011-11-07 23:54:53 +01:00
2011-05-23 10:47:06 -05:00
2011-05-29 13:03:09 +01:00
2011-10-31 20:19:04 +00:00
2011-03-10 11:35:17 +01:00
2011-05-24 10:21:29 +02:00
2011-03-31 11:26:23 -03:00
2011-09-14 15:24:51 -04:00
2011-03-31 11:26:23 -03:00
2011-03-14 19:12:20 -04:00
2011-07-26 16:49:47 -07:00
2011-07-26 16:49:47 -07:00
2011-11-16 22:00:34 -05:00
2011-08-08 16:08:08 +02:00
2011-07-01 15:34:45 -07:00
2011-03-31 11:26:23 -03:00
2011-06-28 10:48:34 +02:00
2011-02-23 00:53:26 +00:00
2011-11-23 11:33:07 +01:00
2011-03-31 11:26:23 -03:00
2011-07-01 10:37:15 +02:00
2011-05-08 16:41:45 -07:00
2011-10-30 04:43:30 -04:00
2011-07-21 13:47:54 -07:00
2011-09-27 18:08:04 +02:00
2011-03-31 11:26:23 -03:00
2011-07-26 16:49:47 -07:00
2011-07-26 16:49:47 -07:00
2011-03-31 11:26:23 -03:00
2011-09-25 19:52:59 +03:00
2011-09-16 19:20:20 -04:00
2011-05-24 14:33:35 +02:00
2011-04-25 18:14:10 -07:00
2011-11-02 16:06:57 -07:00
2011-11-02 16:06:58 -07:00
2011-07-26 16:49:47 -07:00
2011-07-26 16:49:47 -07:00
2011-03-31 11:26:23 -03:00
2011-07-26 16:49:47 -07:00
2011-07-31 12:18:16 -04:00
2011-07-28 16:19:22 -06:00
2011-10-31 14:03:22 +01:00
2011-03-31 11:26:23 -03:00
2011-05-26 17:12:37 -07:00
2011-03-31 11:26:23 -03:00
2011-11-02 16:07:02 -07:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-07-26 16:49:47 -07:00
2011-05-25 08:39:19 -07:00
2011-07-26 14:50:01 -07:00
2011-06-07 10:02:35 +02:00
2011-07-30 08:44:19 -10:00
2011-03-31 11:26:23 -03:00
2011-07-26 16:49:47 -07:00
2011-03-31 11:26:23 -03:00
2011-07-26 16:49:47 -07:00
2011-07-25 20:57:11 -07:00
2011-10-31 17:30:47 -07:00
2011-08-16 00:16:49 -07:00
2011-08-03 14:25:22 -10:00
2011-10-31 17:30:44 -07:00
2011-11-02 16:07:02 -07:00
2011-10-03 14:01:21 -04:00
2011-06-27 20:30:08 +02:00
2011-08-23 10:10:38 -07:00
2011-03-31 11:26:23 -03:00
2011-06-07 09:05:42 -07:00
2011-11-02 16:07:02 -07:00
2011-03-31 11:26:23 -03:00
2011-07-26 16:49:47 -07:00
2011-03-31 11:26:23 -03:00
2011-07-26 16:49:47 -07:00
2011-09-14 15:24:51 -04:00
2011-03-31 11:26:23 -03:00