diff --git a/fs/proc/base.c b/fs/proc/base.c index 8c2a84fc4986d..eb8285ca344f3 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c @@ -96,6 +96,7 @@ #include #include #include +#include #include #include "internal.h" #include "fd.h" diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c index 8821a8c2263ff..8bc683be08574 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -2715,6 +2715,7 @@ static int printk_kthread_func(void *data) &len, printk_time); console_lock(); + console_may_schedule = 0; call_console_drivers(master_seq, ext_text, ext_len, text, len, msg->level, msg->facility); if (len > 0 || ext_len > 0) diff --git a/kernel/signal.c b/kernel/signal.c index bfa9bcf27d3d7..75c82ecefdbb6 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -494,8 +494,8 @@ static void sigqueue_free_current(struct sigqueue *q) up = q->user; if (rt_prio(current->normal_prio) && !put_task_cache(current, q)) { - atomic_dec(&up->sigpending); - free_uid(up); + if (atomic_dec_and_test(&up->sigpending)) + free_uid(up); } else __sigqueue_free(q); } diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c index b568947dc90e5..fc62dcbed7429 100644 --- a/kernel/time/tick-sched.c +++ b/kernel/time/tick-sched.c @@ -245,7 +245,7 @@ static void nohz_full_kick_func(struct irq_work *work) static DEFINE_PER_CPU(struct irq_work, nohz_full_kick_work) = { .func = nohz_full_kick_func, - .flags = IRQ_WORK_HARD_IRQ, + .flags = ATOMIC_INIT(IRQ_WORK_HARD_IRQ), }; /* diff --git a/localversion-rt b/localversion-rt index c3054d08a1129..1445cd65885cd 100644 --- a/localversion-rt +++ b/localversion-rt @@ -1 +1 @@ --rt2 +-rt3