projects
/
platform
/
kernel
/
linux-rpi.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
265b6fb
)
exec: Copy oldsighand->action under spin-lock
author
Bernd Edlinger
<bernd.edlinger@hotmail.de>
Mon, 7 Jun 2021 13:54:27 +0000
(15:54 +0200)
committer
Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
Thu, 3 Nov 2022 14:59:12 +0000
(23:59 +0900)
commit
5bf2fedca8f59379025b0d52f917b9ddb9bfe17e
upstream.
unshare_sighand should only access oldsighand->action
while holding oldsighand->siglock, to make sure that
newsighand->action is in a consistent state.
Signed-off-by: Bernd Edlinger <bernd.edlinger@hotmail.de>
Cc: stable@vger.kernel.org
Fixes:
1da177e4c3f4
("Linux-2.6.12-rc2")
Signed-off-by: Kees Cook <keescook@chromium.org>
Link:
https://lore.kernel.org/r/AM8PR10MB470871DEBD1DED081F9CC391E4389@AM8PR10MB4708.EURPRD10.PROD.OUTLOOK.COM
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/exec.c
patch
|
blob
|
history
diff --git
a/fs/exec.c
b/fs/exec.c
index
7d42433
..
881390b
100644
(file)
--- a/
fs/exec.c
+++ b/
fs/exec.c
@@
-1198,11
+1198,11
@@
static int unshare_sighand(struct task_struct *me)
return -ENOMEM;
refcount_set(&newsighand->count, 1);
- memcpy(newsighand->action, oldsighand->action,
- sizeof(newsighand->action));
write_lock_irq(&tasklist_lock);
spin_lock(&oldsighand->siglock);
+ memcpy(newsighand->action, oldsighand->action,
+ sizeof(newsighand->action));
rcu_assign_pointer(me->sighand, newsighand);
spin_unlock(&oldsighand->siglock);
write_unlock_irq(&tasklist_lock);