--- /dev/null
+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;
+ }
+
--- /dev/null
+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
--- /dev/null
+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;
--- /dev/null
+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);
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