diff mbox series

[ANNOUNCE] v5.6.4-rt3

Message ID 20200416164510.kbrklqahdng5uhij@linutronix.de
State New
Headers show
Series [ANNOUNCE] v5.6.4-rt3 | expand

Commit Message

Sebastian Andrzej Siewior April 16, 2020, 4:45 p.m. UTC
Dear RT folks!

I'm pleased to announce the v5.6.4-rt3 patch set. 

Changes since v5.6.4-rt2:

  - The printk thread could schedule where it is not appropriate.
    Affects only PREEMPT_VOLUNTARY. Reported by kernel test robot,
    patched by John Ogness.

  - The initialization of nohz_full_kick_work triggered a warning.
    Reported by kbuild test robot.

  - Patch by patch compilation could fail to compile in the fs/proc due
    to a missing header file. Reported by kbuild test robot.

  - The cached signal struct could lead to a double free of another data
    structure. Reported by Daniel Wagner, patch by Matt Fleming.

Known issues
     - It has been pointed out that due to changes to the printk code the
       internal buffer representation changed. This is only an issue if tools
       like `crash' are used to extract the printk buffer from a kernel memory
       image.

The delta patch against v5.6.4-rt2 is appended below and can be found here:
 
     https://cdn.kernel.org/pub/linux/kernel/projects/rt/5.6/incr/patch-5.6.4-rt2-rt3.patch.xz

You can get this release via the git tree at:

    git://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-rt-devel.git v5.6.4-rt3

The RT patch against v5.6.4 can be found here:

    https://cdn.kernel.org/pub/linux/kernel/projects/rt/5.6/older/patch-5.6.4-rt3.patch.xz

The split quilt queue is available at:

    https://cdn.kernel.org/pub/linux/kernel/projects/rt/5.6/older/patches-5.6.4-rt3.tar.xz

Sebastian
diff mbox series

Patch

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 <linux/posix-timers.h>
 #include <linux/time_namespace.h>
 #include <linux/resctrl.h>
+#include <linux/swait.h>
 #include <trace/events/oom.h>
 #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