]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 15 Jun 2017 09:42:02 +0000 (11:42 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 15 Jun 2017 09:42:02 +0000 (11:42 +0200)
added patches:
ipv6-fix-ipv6-packet-loss-in-scenarios-involving-roaming-snooping-switches.patch
jump-label-pass-kbuild_cflags-when-checking-for-asm-goto-support.patch
kasan-respect-proc-sys-kernel-traceoff_on_warning.patch
pm-runtime-avoid-false-positive-warnings-from-might_sleep_if.patch

queue-4.4/ipv6-fix-ipv6-packet-loss-in-scenarios-involving-roaming-snooping-switches.patch [new file with mode: 0644]
queue-4.4/jump-label-pass-kbuild_cflags-when-checking-for-asm-goto-support.patch [new file with mode: 0644]
queue-4.4/kasan-respect-proc-sys-kernel-traceoff_on_warning.patch [new file with mode: 0644]
queue-4.4/pm-runtime-avoid-false-positive-warnings-from-might_sleep_if.patch [new file with mode: 0644]
queue-4.4/series

diff --git a/queue-4.4/ipv6-fix-ipv6-packet-loss-in-scenarios-involving-roaming-snooping-switches.patch b/queue-4.4/ipv6-fix-ipv6-packet-loss-in-scenarios-involving-roaming-snooping-switches.patch
new file mode 100644 (file)
index 0000000..7d8be66
--- /dev/null
@@ -0,0 +1,55 @@
+From foo@baz Thu Jun 15 11:39:37 CEST 2017
+From: Linus Lüssing <linus.luessing@c0d3.blue>
+Date: Tue, 23 May 2017 21:53:52 -0400
+Subject: ipv6: Fix IPv6 packet loss in scenarios involving roaming + snooping switches
+
+From: Linus Lüssing <linus.luessing@c0d3.blue>
+
+
+[ Upstream commit a088d1d73a4bcfd7bc482f8d08375b9b665dc3e5 ]
+
+When for instance a mobile Linux device roams from one access point to
+another with both APs sharing the same broadcast domain and a
+multicast snooping switch in between:
+
+1)    (c) <~~~> (AP1) <--[SSW]--> (AP2)
+
+2)              (AP1) <--[SSW]--> (AP2) <~~~> (c)
+
+Then currently IPv6 multicast packets will get lost for (c) until an
+MLD Querier sends its next query message. The packet loss occurs
+because upon roaming the Linux host so far stayed silent regarding
+MLD and the snooping switch will therefore be unaware of the
+multicast topology change for a while.
+
+This patch fixes this by always resending MLD reports when an interface
+change happens, for instance from NO-CARRIER to CARRIER state.
+
+Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ net/ipv6/addrconf.c |   10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+--- a/net/ipv6/addrconf.c
++++ b/net/ipv6/addrconf.c
+@@ -3211,9 +3211,15 @@ static int addrconf_notify(struct notifi
+                       }
+                       if (idev) {
+-                              if (idev->if_flags & IF_READY)
+-                                      /* device is already configured. */
++                              if (idev->if_flags & IF_READY) {
++                                      /* device is already configured -
++                                       * but resend MLD reports, we might
++                                       * have roamed and need to update
++                                       * multicast snooping switches
++                                       */
++                                      ipv6_mc_up(idev);
+                                       break;
++                              }
+                               idev->if_flags |= IF_READY;
+                       }
diff --git a/queue-4.4/jump-label-pass-kbuild_cflags-when-checking-for-asm-goto-support.patch b/queue-4.4/jump-label-pass-kbuild_cflags-when-checking-for-asm-goto-support.patch
new file mode 100644 (file)
index 0000000..ccd9fcd
--- /dev/null
@@ -0,0 +1,40 @@
+From foo@baz Thu Jun 15 11:39:37 CEST 2017
+From: David Lin <dtwlin@google.com>
+Date: Tue, 23 May 2017 21:53:55 -0400
+Subject: jump label: pass kbuild_cflags when checking for asm goto support
+
+From: David Lin <dtwlin@google.com>
+
+
+[ Upstream commit 35f860f9ba6aac56cc38e8b18916d833a83f1157 ]
+
+Some versions of ARM GCC compiler such as Android toolchain throws in a
+'-fpic' flag by default.  This causes the gcc-goto check script to fail
+although some config would have '-fno-pic' flag in the KBUILD_CFLAGS.
+
+This patch passes the KBUILD_CFLAGS to the check script so that the
+script does not rely on the default config from different compilers.
+
+Link: http://lkml.kernel.org/r/20170120234329.78868-1-dtwlin@google.com
+Signed-off-by: David Lin <dtwlin@google.com>
+Acked-by: Steven Rostedt <rostedt@goodmis.org>
+Cc: Michal Marek <mmarek@suse.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ Makefile |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/Makefile
++++ b/Makefile
+@@ -789,7 +789,7 @@ KBUILD_CFLAGS   += $(call cc-option,-Wer
+ KBUILD_ARFLAGS := $(call ar-option,D)
+ # check for 'asm goto'
+-ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-goto.sh $(CC)), y)
++ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-goto.sh $(CC) $(KBUILD_CFLAGS)), y)
+       KBUILD_CFLAGS += -DCC_HAVE_ASM_GOTO
+       KBUILD_AFLAGS += -DCC_HAVE_ASM_GOTO
+ endif
diff --git a/queue-4.4/kasan-respect-proc-sys-kernel-traceoff_on_warning.patch b/queue-4.4/kasan-respect-proc-sys-kernel-traceoff_on_warning.patch
new file mode 100644 (file)
index 0000000..20aed33
--- /dev/null
@@ -0,0 +1,49 @@
+From foo@baz Thu Jun 15 11:39:37 CEST 2017
+From: Peter Zijlstra <peterz@infradead.org>
+Date: Tue, 23 May 2017 21:53:57 -0400
+Subject: kasan: respect /proc/sys/kernel/traceoff_on_warning
+
+From: Peter Zijlstra <peterz@infradead.org>
+
+
+[ Upstream commit 4f40c6e5627ea73b4e7c615c59631f38cc880885 ]
+
+After much waiting I finally reproduced a KASAN issue, only to find my
+trace-buffer empty of useful information because it got spooled out :/
+
+Make kasan_report honour the /proc/sys/kernel/traceoff_on_warning
+interface.
+
+Link: http://lkml.kernel.org/r/20170125164106.3514-1-aryabinin@virtuozzo.com
+Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
+Signed-off-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
+Acked-by: Alexander Potapenko <glider@google.com>
+Cc: Dmitry Vyukov <dvyukov@google.com>
+Cc: Steven Rostedt <rostedt@goodmis.org>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ mm/kasan/report.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/mm/kasan/report.c
++++ b/mm/kasan/report.c
+@@ -13,6 +13,7 @@
+  *
+  */
++#include <linux/ftrace.h>
+ #include <linux/kernel.h>
+ #include <linux/mm.h>
+ #include <linux/printk.h>
+@@ -251,6 +252,8 @@ void kasan_report(unsigned long addr, si
+       if (likely(!kasan_report_enabled()))
+               return;
++      disable_trace_on_warning();
++
+       info.access_addr = (void *)addr;
+       info.access_size = size;
+       info.is_write = is_write;
diff --git a/queue-4.4/pm-runtime-avoid-false-positive-warnings-from-might_sleep_if.patch b/queue-4.4/pm-runtime-avoid-false-positive-warnings-from-might_sleep_if.patch
new file mode 100644 (file)
index 0000000..e77ba0b
--- /dev/null
@@ -0,0 +1,115 @@
+From foo@baz Thu Jun 15 11:39:37 CEST 2017
+From: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
+Date: Tue, 23 May 2017 21:53:54 -0400
+Subject: PM / runtime: Avoid false-positive warnings from might_sleep_if()
+
+From: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
+
+
+[ Upstream commit a9306a63631493afc75893a4ac405d4e1cbae6aa ]
+
+The might_sleep_if() assertions in __pm_runtime_idle(),
+__pm_runtime_suspend() and __pm_runtime_resume() may generate
+false-positive warnings in some situations.  For example, that
+happens if a nested pm_runtime_get_sync()/pm_runtime_put() pair
+is executed with disabled interrupts within an outer
+pm_runtime_get_sync()/pm_runtime_put() section for the same device.
+[Generally, pm_runtime_get_sync() may sleep, so it should not be
+called with disabled interrupts, but in this particular case the
+previous pm_runtime_get_sync() guarantees that the device will not
+be suspended, so the inner pm_runtime_get_sync() will return
+immediately after incrementing the device's usage counter.]
+
+That started to happen in the i915 driver in 4.10-rc, leading to
+the following splat:
+
+ BUG: sleeping function called from invalid context at drivers/base/power/runtime.c:1032
+ in_atomic(): 1, irqs_disabled(): 0, pid: 1500, name: Xorg
+ 1 lock held by Xorg/1500:
+  #0:  (&dev->struct_mutex){+.+.+.}, at:
+  [<ffffffffa0680c13>] i915_mutex_lock_interruptible+0x43/0x140 [i915]
+ CPU: 0 PID: 1500 Comm: Xorg Not tainted
+ Call Trace:
+  dump_stack+0x85/0xc2
+  ___might_sleep+0x196/0x260
+  __might_sleep+0x53/0xb0
+  __pm_runtime_resume+0x7a/0x90
+  intel_runtime_pm_get+0x25/0x90 [i915]
+  aliasing_gtt_bind_vma+0xaa/0xf0 [i915]
+  i915_vma_bind+0xaf/0x1e0 [i915]
+  i915_gem_execbuffer_relocate_entry+0x513/0x6f0 [i915]
+  i915_gem_execbuffer_relocate_vma.isra.34+0x188/0x250 [i915]
+  ? trace_hardirqs_on+0xd/0x10
+  ? i915_gem_execbuffer_reserve_vma.isra.31+0x152/0x1f0 [i915]
+  ? i915_gem_execbuffer_reserve.isra.32+0x372/0x3a0 [i915]
+  i915_gem_do_execbuffer.isra.38+0xa70/0x1a40 [i915]
+  ? __might_fault+0x4e/0xb0
+  i915_gem_execbuffer2+0xc5/0x260 [i915]
+  ? __might_fault+0x4e/0xb0
+  drm_ioctl+0x206/0x450 [drm]
+  ? i915_gem_execbuffer+0x340/0x340 [i915]
+  ? __fget+0x5/0x200
+  do_vfs_ioctl+0x91/0x6f0
+  ? __fget+0x111/0x200
+  ? __fget+0x5/0x200
+  SyS_ioctl+0x79/0x90
+  entry_SYSCALL_64_fastpath+0x23/0xc6
+
+even though the code triggering it is correct.
+
+Unfortunately, the might_sleep_if() assertions in question are
+too coarse-grained to cover such cases correctly, so make them
+a bit less sensitive in order to avoid the false-positives.
+
+Reported-and-tested-by: Sedat Dilek <sedat.dilek@gmail.com>
+Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/base/power/runtime.c |   11 ++++++-----
+ 1 file changed, 6 insertions(+), 5 deletions(-)
+
+--- a/drivers/base/power/runtime.c
++++ b/drivers/base/power/runtime.c
+@@ -889,13 +889,13 @@ int __pm_runtime_idle(struct device *dev
+       unsigned long flags;
+       int retval;
+-      might_sleep_if(!(rpmflags & RPM_ASYNC) && !dev->power.irq_safe);
+-
+       if (rpmflags & RPM_GET_PUT) {
+               if (!atomic_dec_and_test(&dev->power.usage_count))
+                       return 0;
+       }
++      might_sleep_if(!(rpmflags & RPM_ASYNC) && !dev->power.irq_safe);
++
+       spin_lock_irqsave(&dev->power.lock, flags);
+       retval = rpm_idle(dev, rpmflags);
+       spin_unlock_irqrestore(&dev->power.lock, flags);
+@@ -921,13 +921,13 @@ int __pm_runtime_suspend(struct device *
+       unsigned long flags;
+       int retval;
+-      might_sleep_if(!(rpmflags & RPM_ASYNC) && !dev->power.irq_safe);
+-
+       if (rpmflags & RPM_GET_PUT) {
+               if (!atomic_dec_and_test(&dev->power.usage_count))
+                       return 0;
+       }
++      might_sleep_if(!(rpmflags & RPM_ASYNC) && !dev->power.irq_safe);
++
+       spin_lock_irqsave(&dev->power.lock, flags);
+       retval = rpm_suspend(dev, rpmflags);
+       spin_unlock_irqrestore(&dev->power.lock, flags);
+@@ -952,7 +952,8 @@ int __pm_runtime_resume(struct device *d
+       unsigned long flags;
+       int retval;
+-      might_sleep_if(!(rpmflags & RPM_ASYNC) && !dev->power.irq_safe);
++      might_sleep_if(!(rpmflags & RPM_ASYNC) && !dev->power.irq_safe &&
++                      dev->power.runtime_status != RPM_ACTIVE);
+       if (rpmflags & RPM_GET_PUT)
+               atomic_inc(&dev->power.usage_count);
index ebbb70cae1fc218dc8e38ef00f86c904c17734ef..15dcc478c500ecb0bcab9fd1221875e2641cd7d9 100644 (file)
@@ -13,3 +13,7 @@ net-hns-fix-the-device-being-used-for-dma-mapping-during-tx.patch
 sierra_net-skip-validating-irrelevant-fields-for-idle-lsis.patch
 sierra_net-add-support-for-ipv6-and-dual-stack-link-sense-indications.patch
 i2c-piix4-fix-request_region-size.patch
+ipv6-fix-ipv6-packet-loss-in-scenarios-involving-roaming-snooping-switches.patch
+pm-runtime-avoid-false-positive-warnings-from-might_sleep_if.patch
+jump-label-pass-kbuild_cflags-when-checking-for-asm-goto-support.patch
+kasan-respect-proc-sys-kernel-traceoff_on_warning.patch