projects
/
linux-2.6-microblaze.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge tag 'erofs-for-5.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/xiang...
[linux-2.6-microblaze.git]
/
kernel
/
fork.c
diff --git
a/kernel/fork.c
b/kernel/fork.c
index
f6339f9
..
be98e94
100644
(file)
--- a/
kernel/fork.c
+++ b/
kernel/fork.c
@@
-1692,6
+1692,11
@@
static inline void rcu_copy_process(struct task_struct *p)
INIT_LIST_HEAD(&p->rcu_tasks_holdout_list);
p->rcu_tasks_idle_cpu = -1;
#endif /* #ifdef CONFIG_TASKS_RCU */
INIT_LIST_HEAD(&p->rcu_tasks_holdout_list);
p->rcu_tasks_idle_cpu = -1;
#endif /* #ifdef CONFIG_TASKS_RCU */
+#ifdef CONFIG_TASKS_TRACE_RCU
+ p->trc_reader_nesting = 0;
+ p->trc_reader_special.s = 0;
+ INIT_LIST_HEAD(&p->trc_holdout_list);
+#endif /* #ifdef CONFIG_TASKS_TRACE_RCU */
}
struct pid *pidfd_pid(const struct file *file)
}
struct pid *pidfd_pid(const struct file *file)
@@
-2495,11
+2500,11
@@
long do_fork(unsigned long clone_flags,
int __user *child_tidptr)
{
struct kernel_clone_args args = {
int __user *child_tidptr)
{
struct kernel_clone_args args = {
- .flags = (
clone_flags
& ~CSIGNAL),
+ .flags = (
lower_32_bits(clone_flags)
& ~CSIGNAL),
.pidfd = parent_tidptr,
.child_tid = child_tidptr,
.parent_tid = parent_tidptr,
.pidfd = parent_tidptr,
.child_tid = child_tidptr,
.parent_tid = parent_tidptr,
- .exit_signal = (
clone_flags
& CSIGNAL),
+ .exit_signal = (
lower_32_bits(clone_flags)
& CSIGNAL),
.stack = stack_start,
.stack_size = stack_size,
};
.stack = stack_start,
.stack_size = stack_size,
};
@@
-2517,8
+2522,9
@@
long do_fork(unsigned long clone_flags,
pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags)
{
struct kernel_clone_args args = {
pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags)
{
struct kernel_clone_args args = {
- .flags = ((flags | CLONE_VM | CLONE_UNTRACED) & ~CSIGNAL),
- .exit_signal = (flags & CSIGNAL),
+ .flags = ((lower_32_bits(flags) | CLONE_VM |
+ CLONE_UNTRACED) & ~CSIGNAL),
+ .exit_signal = (lower_32_bits(flags) & CSIGNAL),
.stack = (unsigned long)fn,
.stack_size = (unsigned long)arg,
};
.stack = (unsigned long)fn,
.stack_size = (unsigned long)arg,
};
@@
-2579,11
+2585,11
@@
SYSCALL_DEFINE5(clone, unsigned long, clone_flags, unsigned long, newsp,
#endif
{
struct kernel_clone_args args = {
#endif
{
struct kernel_clone_args args = {
- .flags = (
clone_flags
& ~CSIGNAL),
+ .flags = (
lower_32_bits(clone_flags)
& ~CSIGNAL),
.pidfd = parent_tidptr,
.child_tid = child_tidptr,
.parent_tid = parent_tidptr,
.pidfd = parent_tidptr,
.child_tid = child_tidptr,
.parent_tid = parent_tidptr,
- .exit_signal = (
clone_flags
& CSIGNAL),
+ .exit_signal = (
lower_32_bits(clone_flags)
& CSIGNAL),
.stack = newsp,
.tls = tls,
};
.stack = newsp,
.tls = tls,
};