]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.18-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 26 Sep 2018 13:18:45 +0000 (15:18 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 26 Sep 2018 13:18:45 +0000 (15:18 +0200)
added patches:
arm64-add-trace_hardirqs_off-annotation-in-ret_to_user.patch

queue-3.18/arm64-add-trace_hardirqs_off-annotation-in-ret_to_user.patch [new file with mode: 0644]
queue-3.18/series

diff --git a/queue-3.18/arm64-add-trace_hardirqs_off-annotation-in-ret_to_user.patch b/queue-3.18/arm64-add-trace_hardirqs_off-annotation-in-ret_to_user.patch
new file mode 100644 (file)
index 0000000..ce4c09a
--- /dev/null
@@ -0,0 +1,77 @@
+From db3899a6477a4dccd26cbfb7f408b6be2cc068e0 Mon Sep 17 00:00:00 2001
+From: Catalin Marinas <catalin.marinas@arm.com>
+Date: Fri, 4 Dec 2015 12:42:29 +0000
+Subject: arm64: Add trace_hardirqs_off annotation in ret_to_user
+
+From: Catalin Marinas <catalin.marinas@arm.com>
+
+commit db3899a6477a4dccd26cbfb7f408b6be2cc068e0 upstream.
+
+When a kernel is built with CONFIG_TRACE_IRQFLAGS the following warning
+is produced when entering userspace for the first time:
+
+  WARNING: at /work/Linux/linux-2.6-aarch64/kernel/locking/lockdep.c:3519
+  Modules linked in:
+  CPU: 1 PID: 1 Comm: systemd Not tainted 4.4.0-rc3+ #639
+  Hardware name: Juno (DT)
+  task: ffffffc9768a0000 ti: ffffffc9768a8000 task.ti: ffffffc9768a8000
+  PC is at check_flags.part.22+0x19c/0x1a8
+  LR is at check_flags.part.22+0x19c/0x1a8
+  pc : [<ffffffc0000fba6c>] lr : [<ffffffc0000fba6c>] pstate: 600001c5
+  sp : ffffffc9768abe10
+  x29: ffffffc9768abe10 x28: ffffffc9768a8000
+  x27: 0000000000000000 x26: 0000000000000001
+  x25: 00000000000000a6 x24: ffffffc00064be6c
+  x23: ffffffc0009f249e x22: ffffffc9768a0000
+  x21: ffffffc97fea5480 x20: 00000000000001c0
+  x19: ffffffc00169a000 x18: 0000005558cc7b58
+  x17: 0000007fb78e3180 x16: 0000005558d2e238
+  x15: ffffffffffffffff x14: 0ffffffffffffffd
+  x13: 0000000000000008 x12: 0101010101010101
+  x11: 7f7f7f7f7f7f7f7f x10: fefefefefefeff63
+  x9 : 7f7f7f7f7f7f7f7f x8 : 6e655f7371726964
+  x7 : 0000000000000001 x6 : ffffffc0001079c4
+  x5 : 0000000000000000 x4 : 0000000000000001
+  x3 : ffffffc001698438 x2 : 0000000000000000
+  x1 : ffffffc9768a0000 x0 : 000000000000002e
+  Call trace:
+  [<ffffffc0000fba6c>] check_flags.part.22+0x19c/0x1a8
+  [<ffffffc0000fc440>] lock_is_held+0x80/0x98
+  [<ffffffc00064bafc>] __schedule+0x404/0x730
+  [<ffffffc00064be6c>] schedule+0x44/0xb8
+  [<ffffffc000085bb0>] ret_to_user+0x0/0x24
+  possible reason: unannotated irqs-off.
+  irq event stamp: 502169
+  hardirqs last  enabled at (502169): [<ffffffc000085a98>] el0_irq_naked+0x1c/0x24
+  hardirqs last disabled at (502167): [<ffffffc0000bb3bc>] __do_softirq+0x17c/0x298
+  softirqs last  enabled at (502168): [<ffffffc0000bb43c>] __do_softirq+0x1fc/0x298
+  softirqs last disabled at (502143): [<ffffffc0000bb830>] irq_exit+0xa0/0xf0
+
+This happens because we disable interrupts in ret_to_user before calling
+schedule() in work_resched. This patch adds the necessary
+trace_hardirqs_off annotation.
+
+Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
+Reported-by: Mark Rutland <mark.rutland@arm.com>
+Cc: Will Deacon <will.deacon@arm.com>
+Signed-off-by: Will Deacon <will.deacon@arm.com>
+Cc: Guenter Roeck <linux@roeck-us.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+
+---
+ arch/arm64/kernel/entry.S |    3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/arch/arm64/kernel/entry.S
++++ b/arch/arm64/kernel/entry.S
+@@ -633,6 +633,9 @@ work_pending:
+       bl      do_notify_resume
+       b       ret_to_user
+ work_resched:
++#ifdef CONFIG_TRACE_IRQFLAGS
++      bl      trace_hardirqs_off              // the IRQs are off here, inform the tracing code
++#endif
+       bl      schedule
+ /*
index 76416c32d5d1be663147addb6484f661b8735c1b..29bee5156ee51b16e3650434c15bbe5e6dc929cb 100644 (file)
@@ -14,3 +14,4 @@ ext4-avoid-divide-by-zero-fault-when-deleting-corrupted-inline-directories.patch
 ext4-recalucate-superblock-checksum-after-updating-free-blocks-inodes.patch
 ext4-fix-online-resize-s-handling-of-a-too-small-final-block-group.patch
 ext4-don-t-mark-mmp-buffer-head-dirty.patch
+arm64-add-trace_hardirqs_off-annotation-in-ret_to_user.patch