Julia The latest 4.9 stable dot release has a conflict on the following files both modified: arch/x86/include/asm/thread_info.h both modified: kernel/time/posix-timers.c both modified: kernel/workqueue.c Attached is the output file from the conflict Can you please resolve this conflict and update the 4.9 rt stable branch? Dan -- ------------------ Dan Murphy
diff --cc arch/x86/include/asm/thread_info.h index 455c25192bc2,89978b9c667a..000000000000 --- a/arch/x86/include/asm/thread_info.h +++ b/arch/x86/include/asm/thread_info.h @@@ -54,8 -54,7 +54,12 @@@ struct task_struct struct thread_info { unsigned long flags; /* low level flags */ ++<<<<<<< HEAD + int preempt_lazy_count; /* 0 => lazy preemptable + <0 => BUG */ ++======= + u32 status; /* thread synchronous flags */ ++>>>>>>> 61f845756cc1eabeb9f05430d100f89aa5bd8cd4 }; #define INIT_THREAD_INFO(tsk) \ diff --cc kernel/time/posix-timers.c index 464a98155a0e,fc7c37ad90a0..000000000000 --- a/kernel/time/posix-timers.c +++ b/kernel/time/posix-timers.c @@@ -506,20 -506,23 +506,34 @@@ static enum hrtimer_restart posix_timer static struct pid *good_sigevent(sigevent_t * event) { struct task_struct *rtn = current->group_leader; + int sig = event->sigev_signo; - if ((event->sigev_notify & SIGEV_THREAD_ID ) && - (!(rtn = find_task_by_vpid(event->sigev_notify_thread_id)) || - !same_thread_group(rtn, current) || - (event->sigev_notify & ~SIGEV_THREAD_ID) != SIGEV_SIGNAL)) + switch (event->sigev_notify) { + case SIGEV_SIGNAL | SIGEV_THREAD_ID: + rtn = find_task_by_vpid(event->sigev_notify_thread_id); + if (!rtn || !same_thread_group(rtn, current)) + return NULL; + /* FALLTHRU */ + case SIGEV_SIGNAL: + case SIGEV_THREAD: + if (event->sigev_signo <= 0 || event->sigev_signo > SIGRTMAX) + return NULL; + /* FALLTHRU */ + case SIGEV_NONE: + return task_pid(rtn); + default: return NULL; ++<<<<<<< HEAD + + if (((event->sigev_notify & ~SIGEV_THREAD_ID) != SIGEV_NONE) && + (sig <= 0 || sig > SIGRTMAX || sig_kernel_only(sig) || + sig_kernel_coredump(sig))) + return NULL; + + return task_pid(rtn); ++======= + } ++>>>>>>> 61f845756cc1eabeb9f05430d100f89aa5bd8cd4 } void posix_timers_register_clock(const clockid_t clock_id, diff --cc kernel/workqueue.c index 7eed129f114a,ebfea5f94b66..000000000000 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c @@@ -48,8 -48,7 +48,12 @@@ #include <linux/nodemask.h> #include <linux/moduleparam.h> #include <linux/uaccess.h> ++<<<<<<< HEAD +#include <linux/locallock.h> +#include <linux/delay.h> ++======= + #include <linux/nmi.h> ++>>>>>>> 61f845756cc1eabeb9f05430d100f89aa5bd8cd4 #include "workqueue_internal.h" @@@ -4492,9 -4458,15 +4502,15 @@@ void show_workqueue_state(void pr_cont("\n"); next_pool: spin_unlock_irqrestore(&pool->lock, flags); + /* + * We could be printing a lot from atomic context, e.g. + * sysrq-t -> show_workqueue_state(). Avoid triggering + * hard lockup. + */ + touch_nmi_watchdog(); } - rcu_read_unlock_sched(); + rcu_read_unlock(); } /*