OSDN Git Service
(root)
/
uclinux-h8
/
linux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge tag 'fs_for_v5.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jack...
[uclinux-h8/linux.git]
/
kernel
/
fork.c
diff --git
a/kernel/fork.c
b/kernel/fork.c
index
834af51
..
9796897
100644
(file)
--- a/
kernel/fork.c
+++ b/
kernel/fork.c
@@
-286,11
+286,13
@@
static int alloc_thread_stack_node(struct task_struct *tsk, int node)
if (!s)
continue;
if (!s)
continue;
- /*
Mark stack accessible for KASAN
. */
+ /*
Reset stack metadata
. */
kasan_unpoison_range(s->addr, THREAD_SIZE);
kasan_unpoison_range(s->addr, THREAD_SIZE);
+ stack = kasan_reset_tag(s->addr);
+
/* Clear stale pointers from reused stack. */
/* Clear stale pointers from reused stack. */
- memset(s
->addr
, 0, THREAD_SIZE);
+ memset(s
tack
, 0, THREAD_SIZE);
if (memcg_charge_kernel_stack(s)) {
vfree(s->addr);
if (memcg_charge_kernel_stack(s)) {
vfree(s->addr);
@@
-298,7
+300,7
@@
static int alloc_thread_stack_node(struct task_struct *tsk, int node)
}
tsk->stack_vm_area = s;
}
tsk->stack_vm_area = s;
- tsk->stack = s
->addr
;
+ tsk->stack = s
tack
;
return 0;
}
return 0;
}
@@
-326,6
+328,7
@@
static int alloc_thread_stack_node(struct task_struct *tsk, int node)
* so cache the vm_struct.
*/
tsk->stack_vm_area = vm;
* so cache the vm_struct.
*/
tsk->stack_vm_area = vm;
+ stack = kasan_reset_tag(stack);
tsk->stack = stack;
return 0;
}
tsk->stack = stack;
return 0;
}