diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2020-12-15 19:36:48 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2020-12-15 19:36:48 -0800 |
commit | d01e7f10dae29eba0f9ada82b65d24e035d5b2f9 (patch) | |
tree | 5f8260e02bf6290fe386337e4c66858eaf20340d /include/linux | |
parent | faf145d6f3f3d6f2c066f65602ba9d0a03106915 (diff) | |
parent | f7cfd871ae0c5008d94b6f66834e7845caa93c15 (diff) | |
download | lwn-d01e7f10dae29eba0f9ada82b65d24e035d5b2f9.tar.gz lwn-d01e7f10dae29eba0f9ada82b65d24e035d5b2f9.zip |
Merge branch 'exec-update-lock-for-v5.11' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace
Pull exec-update-lock update from Eric Biederman:
"The key point of this is to transform exec_update_mutex into a
rw_semaphore so readers can be separated from writers.
This makes it easier to understand what the holders of the lock are
doing, and makes it harder to contend or deadlock on the lock.
The real deadlock fix wound up in perf_event_open"
* 'exec-update-lock-for-v5.11' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace:
exec: Transform exec_update_mutex into a rw_semaphore
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/sched/signal.h | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/include/linux/sched/signal.h b/include/linux/sched/signal.h index bd5afa076189..4e116cd2e5a2 100644 --- a/include/linux/sched/signal.h +++ b/include/linux/sched/signal.h @@ -228,12 +228,13 @@ struct signal_struct { * credential calculations * (notably. ptrace) * Deprecated do not use in new code. - * Use exec_update_mutex instead. - */ - struct mutex exec_update_mutex; /* Held while task_struct is being - * updated during exec, and may have - * inconsistent permissions. + * Use exec_update_lock instead. */ + struct rw_semaphore exec_update_lock; /* Held while task_struct is + * being updated during exec, + * and may have inconsistent + * permissions. + */ } __randomize_layout; /* |