This is a note to let you know that I've just added the patch titled x86/percpu: Fix this_cpu_read() to the 4.4-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: x86-percpu-fix-this_cpu_read.patch and it can be found in the queue-4.4 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From b59167ac7bafd804c91e49ad53c6d33a7394d4c8 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra <peterz@xxxxxxxxxxxxx> Date: Thu, 11 Oct 2018 12:38:27 +0200 Subject: x86/percpu: Fix this_cpu_read() From: Peter Zijlstra <peterz@xxxxxxxxxxxxx> commit b59167ac7bafd804c91e49ad53c6d33a7394d4c8 upstream. Eric reported that a sequence count loop using this_cpu_read() got optimized out. This is wrong, this_cpu_read() must imply READ_ONCE() because the interface is IRQ-safe, therefore an interrupt can have changed the per-cpu value. Fixes: 7c3576d261ce ("[PATCH] i386: Convert PDA into the percpu section") Reported-by: Eric Dumazet <edumazet@xxxxxxxxxx> Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx> Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx> Acked-by: Eric Dumazet <edumazet@xxxxxxxxxx> Cc: hpa@xxxxxxxxx Cc: eric.dumazet@xxxxxxxxx Cc: bp@xxxxxxxxx Cc: stable@xxxxxxxxxxxxxxx Link: https://lkml.kernel.org/r/20181011104019.748208519@xxxxxxxxxxxxx Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- arch/x86/include/asm/percpu.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) --- a/arch/x86/include/asm/percpu.h +++ b/arch/x86/include/asm/percpu.h @@ -184,22 +184,22 @@ do { \ typeof(var) pfo_ret__; \ switch (sizeof(var)) { \ case 1: \ - asm(op "b "__percpu_arg(1)",%0" \ + asm volatile(op "b "__percpu_arg(1)",%0"\ : "=q" (pfo_ret__) \ : "m" (var)); \ break; \ case 2: \ - asm(op "w "__percpu_arg(1)",%0" \ + asm volatile(op "w "__percpu_arg(1)",%0"\ : "=r" (pfo_ret__) \ : "m" (var)); \ break; \ case 4: \ - asm(op "l "__percpu_arg(1)",%0" \ + asm volatile(op "l "__percpu_arg(1)",%0"\ : "=r" (pfo_ret__) \ : "m" (var)); \ break; \ case 8: \ - asm(op "q "__percpu_arg(1)",%0" \ + asm volatile(op "q "__percpu_arg(1)",%0"\ : "=r" (pfo_ret__) \ : "m" (var)); \ break; \ Patches currently in stable-queue which might be from peterz@xxxxxxxxxxxxx are queue-4.4/perf-tools-disable-parallelism-for-make-clean.patch queue-4.4/perf-ring_buffer-prevent-concurent-ring-buffer-acces.patch queue-4.4/sched-fair-fix-throttle_list-starvation-with-low-cfs-quota.patch queue-4.4/sched-cgroup-fix-cgroup-entity-load-tracking-tear-do.patch queue-4.4/perf-core-don-t-leak-event-in-the-syscall-error-path.patch queue-4.4/tracing-skip-more-functions-when-doing-stack-tracing.patch queue-4.4/x86-percpu-fix-this_cpu_read.patch queue-4.4/mremap-properly-flush-tlb-before-releasing-the-page.patch