--- /dev/null
+From dd665be0e243873343a28e18f9f345927b658daf Mon Sep 17 00:00:00 2001
+From: Arnd Bergmann <arnd@arndb.de>
+Date: Fri, 1 Jul 2016 18:02:22 +0100
+Subject: ARM: 8584/1: floppy: avoid gcc-6 warning
+
+From: Arnd Bergmann <arnd@arndb.de>
+
+commit dd665be0e243873343a28e18f9f345927b658daf upstream.
+
+gcc-6.0 warns about comparisons between two identical expressions,
+which is what we get in the floppy driver when writing to the FD_DOR
+register:
+
+drivers/block/floppy.c: In function 'set_dor':
+drivers/block/floppy.c:810:44: error: self-comparison always evaluates to true [-Werror=tautological-compare]
+ fd_outb(newdor, FD_DOR);
+
+It would be nice to use a static inline function instead of the
+macro, to avoid the warning, but we cannot do that because the
+FD_DOR definition is incomplete at this point.
+
+Adding a cast to (u32) is a harmless way to shut up the warning,
+just not very nice.
+
+Signed-off-by: Arnd Bergmann <arnd@arndb.de>
+Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/arm/include/asm/floppy.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/arch/arm/include/asm/floppy.h
++++ b/arch/arm/include/asm/floppy.h
+@@ -17,7 +17,7 @@
+
+ #define fd_outb(val,port) \
+ do { \
+- if ((port) == FD_DOR) \
++ if ((port) == (u32)FD_DOR) \
+ fd_setdor((val)); \
+ else \
+ outb((val),(port)); \
--- /dev/null
+From cfe02a8a973e7e5f66926b8ae38dfce404b19e29 Mon Sep 17 00:00:00 2001
+From: Arnd Bergmann <arnd@arndb.de>
+Date: Tue, 15 Mar 2016 00:21:06 +0100
+Subject: cgroup: avoid false positive gcc-6 warning
+
+From: Arnd Bergmann <arnd@arndb.de>
+
+commit cfe02a8a973e7e5f66926b8ae38dfce404b19e29 upstream.
+
+When all subsystems are disabled, gcc notices that cgroup_subsys_enabled_key
+is a zero-length array and that any access to it must be out of bounds:
+
+In file included from ../include/linux/cgroup.h:19:0,
+ from ../kernel/cgroup.c:31:
+../kernel/cgroup.c: In function 'cgroup_add_cftypes':
+../kernel/cgroup.c:261:53: error: array subscript is above array bounds [-Werror=array-bounds]
+ return static_key_enabled(cgroup_subsys_enabled_key[ssid]);
+ ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
+../include/linux/jump_label.h:271:40: note: in definition of macro 'static_key_enabled'
+ static_key_count((struct static_key *)x) > 0; \
+ ^
+
+We should never call the function in this particular case, so this is
+not a bug. In order to silence the warning, this adds an explicit check
+for the CGROUP_SUBSYS_COUNT==0 case.
+
+Signed-off-by: Arnd Bergmann <arnd@arndb.de>
+Signed-off-by: Tejun Heo <tj@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ kernel/cgroup.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/kernel/cgroup.c
++++ b/kernel/cgroup.c
+@@ -236,6 +236,9 @@ static int cgroup_addrm_files(struct cgr
+ */
+ static bool cgroup_ssid_enabled(int ssid)
+ {
++ if (CGROUP_SUBSYS_COUNT == 0)
++ return false;
++
+ return static_key_enabled(cgroup_subsys_enabled_key[ssid]);
+ }
+
--- /dev/null
+From 124a3d88fa20e1869fc229d7d8c740cc81944264 Mon Sep 17 00:00:00 2001
+From: Linus Torvalds <torvalds@linux-foundation.org>
+Date: Wed, 27 Jul 2016 19:03:04 -0700
+Subject: Disable "frame-address" warning
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Linus Torvalds <torvalds@linux-foundation.org>
+
+commit 124a3d88fa20e1869fc229d7d8c740cc81944264 upstream.
+
+Newer versions of gcc warn about the use of __builtin_return_address()
+with a non-zero argument when "-Wall" is specified:
+
+ kernel/trace/trace_irqsoff.c: In function ‘stop_critical_timings’:
+ kernel/trace/trace_irqsoff.c:433:86: warning: calling ‘__builtin_return_address’ with a nonzero argument is unsafe [-Wframe-address]
+ stop_critical_timing(CALLER_ADDR0, CALLER_ADDR1);
+ [ .. repeats a few times for other similar cases .. ]
+
+It is true that a non-zero argument is somewhat dangerous, and we do not
+actually have very many uses of that in the kernel - but the ftrace code
+does use it, and as Stephen Rostedt says:
+
+ "We are well aware of the danger of using __builtin_return_address() of
+ > 0. In fact that's part of the reason for having the "thunk" code in
+ x86 (See arch/x86/entry/thunk_{64,32}.S). [..] it adds extra frames
+ when tracking irqs off sections, to prevent __builtin_return_address()
+ from accessing bad areas. In fact the thunk_32.S states: 'Trampoline to
+ trace irqs off. (otherwise CALLER_ADDR1 might crash)'."
+
+For now, __builtin_return_address() with a non-zero argument is the best
+we can do, and the warning is not helpful and can end up making people
+miss other warnings for real problems.
+
+So disable the frame-address warning on compilers that need it.
+
+Acked-by: Steven Rostedt <rostedt@goodmis.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ Makefile | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/Makefile
++++ b/Makefile
+@@ -617,6 +617,7 @@ include arch/$(SRCARCH)/Makefile
+
+ KBUILD_CFLAGS += $(call cc-option,-fno-delete-null-pointer-checks,)
+ KBUILD_CFLAGS += $(call cc-disable-warning,maybe-uninitialized,)
++KBUILD_CFLAGS += $(call cc-disable-warning,frame-address,)
+
+ ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
+ KBUILD_CFLAGS += -Os
--- /dev/null
+From 55c4b906aa2aec3fa66310ec03c6842e34a04b2a Mon Sep 17 00:00:00 2001
+From: Arnd Bergmann <arnd@arndb.de>
+Date: Mon, 14 Mar 2016 15:22:25 +0100
+Subject: drm/exynos: fix error handling in exynos_drm_subdrv_open
+
+From: Arnd Bergmann <arnd@arndb.de>
+
+commit 55c4b906aa2aec3fa66310ec03c6842e34a04b2a upstream.
+
+gcc-6 warns about a pointless loop in exynos_drm_subdrv_open:
+
+drivers/gpu/drm/exynos/exynos_drm_core.c: In function 'exynos_drm_subdrv_open':
+drivers/gpu/drm/exynos/exynos_drm_core.c:104:199: error: self-comparison always evaluates to false [-Werror=tautological-compare]
+ list_for_each_entry_reverse(subdrv, &subdrv->list, list) {
+
+Here, the list_for_each_entry_reverse immediately terminates because
+the subdrv pointer is compared to itself as the loop end condition.
+
+If we were to take the current subdrv pointer as the start of the
+list (as we would do if list_for_each_entry_reverse() was not a macro),
+we would iterate backwards over the &exynos_drm_subdrv_list anchor,
+which would be even worse.
+
+Instead, we need to use list_for_each_entry_continue_reverse()
+to go back over each subdrv that was successfully opened until
+the first entry.
+
+Signed-off-by: Arnd Bergmann <arnd@arndb.de>
+Signed-off-by: Inki Dae <inki.dae@samsung.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/gpu/drm/exynos/exynos_drm_core.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/exynos/exynos_drm_core.c
++++ b/drivers/gpu/drm/exynos/exynos_drm_core.c
+@@ -101,7 +101,7 @@ int exynos_drm_subdrv_open(struct drm_de
+ return 0;
+
+ err:
+- list_for_each_entry_reverse(subdrv, &subdrv->list, list) {
++ list_for_each_entry_continue_reverse(subdrv, &exynos_drm_subdrv_list, list) {
+ if (subdrv->close)
+ subdrv->close(dev, subdrv->dev, file);
+ }
--- /dev/null
+From badbda53e505089062e194c614e6f23450bc98b2 Mon Sep 17 00:00:00 2001
+From: Stephen Rothwell <sfr@canb.auug.org.au>
+Date: Fri, 27 May 2016 14:27:41 -0700
+Subject: mm/cma: silence warnings due to max() usage
+
+From: Stephen Rothwell <sfr@canb.auug.org.au>
+
+commit badbda53e505089062e194c614e6f23450bc98b2 upstream.
+
+pageblock_order can be (at least) an unsigned int or an unsigned long
+depending on the kernel config and architecture, so use max_t(unsigned
+long, ...) when comparing it.
+
+fixes these warnings:
+
+In file included from include/asm-generic/bug.h:13:0,
+ from arch/powerpc/include/asm/bug.h:127,
+ from include/linux/bug.h:4,
+ from include/linux/mmdebug.h:4,
+ from include/linux/mm.h:8,
+ from include/linux/memblock.h:18,
+ from mm/cma.c:28:
+mm/cma.c: In function 'cma_init_reserved_mem':
+include/linux/kernel.h:748:17: warning: comparison of distinct pointer types lacks a cast
+ (void) (&_max1 == &_max2); ^
+mm/cma.c:186:27: note: in expansion of macro 'max'
+ alignment = PAGE_SIZE << max(MAX_ORDER - 1, pageblock_order);
+ ^
+mm/cma.c: In function 'cma_declare_contiguous':
+include/linux/kernel.h:748:17: warning: comparison of distinct pointer types lacks a cast
+ (void) (&_max1 == &_max2); ^
+include/linux/kernel.h:747:9: note: in definition of macro 'max'
+ typeof(y) _max2 = (y); ^
+mm/cma.c:270:29: note: in expansion of macro 'max'
+ (phys_addr_t)PAGE_SIZE << max(MAX_ORDER - 1, pageblock_order));
+ ^
+include/linux/kernel.h:748:17: warning: comparison of distinct pointer types lacks a cast
+ (void) (&_max1 == &_max2); ^
+include/linux/kernel.h:747:21: note: in definition of macro 'max'
+ typeof(y) _max2 = (y); ^
+mm/cma.c:270:29: note: in expansion of macro 'max'
+ (phys_addr_t)PAGE_SIZE << max(MAX_ORDER - 1, pageblock_order));
+ ^
+
+[akpm@linux-foundation.org: coding-style fixes]
+Link: http://lkml.kernel.org/r/20160526150748.5be38a4f@canb.auug.org.au
+Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ mm/cma.c | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+--- a/mm/cma.c
++++ b/mm/cma.c
+@@ -183,7 +183,8 @@ int __init cma_init_reserved_mem(phys_ad
+ return -EINVAL;
+
+ /* ensure minimal alignment required by mm core */
+- alignment = PAGE_SIZE << max(MAX_ORDER - 1, pageblock_order);
++ alignment = PAGE_SIZE <<
++ max_t(unsigned long, MAX_ORDER - 1, pageblock_order);
+
+ /* alignment should be aligned with order_per_bit */
+ if (!IS_ALIGNED(alignment >> PAGE_SHIFT, 1 << order_per_bit))
+@@ -266,8 +267,8 @@ int __init cma_declare_contiguous(phys_a
+ * migratetype page by page allocator's buddy algorithm. In the case,
+ * you couldn't get a contiguous memory, which is not what we want.
+ */
+- alignment = max(alignment,
+- (phys_addr_t)PAGE_SIZE << max(MAX_ORDER - 1, pageblock_order));
++ alignment = max(alignment, (phys_addr_t)PAGE_SIZE <<
++ max_t(unsigned long, MAX_ORDER - 1, pageblock_order));
+ base = ALIGN(base, alignment);
+ size = ALIGN(size, alignment);
+ limit &= ~(alignment - 1);
--- /dev/null
+From 1e407ee3b21f981140491d5b8a36422979ca246f Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 25 Apr 2016 09:19:17 -0700
+Subject: powerpc/ptrace: Fix out of bounds array access warning
+
+From: Khem Raj <raj.khem@gmail.com>
+
+commit 1e407ee3b21f981140491d5b8a36422979ca246f upstream.
+
+gcc-6 correctly warns about a out of bounds access
+
+arch/powerpc/kernel/ptrace.c:407:24: warning: index 32 denotes an offset greater than size of 'u64[32][1] {aka long long unsigned int[32][1]}' [-Warray-bounds]
+ offsetof(struct thread_fp_state, fpr[32][0]));
+ ^
+
+check the end of array instead of beginning of next element to fix this
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Cc: Kees Cook <keescook@chromium.org>
+Cc: Michael Ellerman <mpe@ellerman.id.au>
+Cc: Segher Boessenkool <segher@kernel.crashing.org>
+Tested-by: Aaro Koskinen <aaro.koskinen@iki.fi>
+Acked-by: Olof Johansson <olof@lixom.net>
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+Cc: Arnd Bergmann <arnd@arndb.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/powerpc/kernel/ptrace.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/arch/powerpc/kernel/ptrace.c
++++ b/arch/powerpc/kernel/ptrace.c
+@@ -376,7 +376,7 @@ static int fpr_get(struct task_struct *t
+
+ #else
+ BUILD_BUG_ON(offsetof(struct thread_fp_state, fpscr) !=
+- offsetof(struct thread_fp_state, fpr[32][0]));
++ offsetof(struct thread_fp_state, fpr[32]));
+
+ return user_regset_copyout(&pos, &count, &kbuf, &ubuf,
+ &target->thread.fp_state, 0, -1);
+@@ -404,7 +404,7 @@ static int fpr_set(struct task_struct *t
+ return 0;
+ #else
+ BUILD_BUG_ON(offsetof(struct thread_fp_state, fpscr) !=
+- offsetof(struct thread_fp_state, fpr[32][0]));
++ offsetof(struct thread_fp_state, fpr[32]));
+
+ return user_regset_copyin(&pos, &count, &kbuf, &ubuf,
+ &target->thread.fp_state, 0, -1);
drm-dp-mst-check-peer-device-type-before-attempting-edid-read.patch
perf-build-fix-traceevent-plugins-build-race.patch
x86-xen-fix-upper-bound-of-pmd-loop-in-xen_cleanhighmap.patch
+powerpc-ptrace-fix-out-of-bounds-array-access-warning.patch
+arm-8584-1-floppy-avoid-gcc-6-warning.patch
+mm-cma-silence-warnings-due-to-max-usage.patch
+drm-exynos-fix-error-handling-in-exynos_drm_subdrv_open.patch
+cgroup-avoid-false-positive-gcc-6-warning.patch
+smc91x-avoid-self-comparison-warning.patch
+disable-frame-address-warning.patch
--- /dev/null
+From e3ebd894f084255fde19116955ba7054858ff5d6 Mon Sep 17 00:00:00 2001
+From: Arnd Bergmann <arnd@arndb.de>
+Date: Mon, 14 Mar 2016 23:45:12 +0100
+Subject: smc91x: avoid self-comparison warning
+
+From: Arnd Bergmann <arnd@arndb.de>
+
+commit e3ebd894f084255fde19116955ba7054858ff5d6 upstream.
+
+The smc91x driver defines a macro that compares its argument to
+itself, apparently to get a true result while using its argument
+to avoid a warning about unused local variables.
+
+Unfortunately, this triggers a warning with gcc-6, as the comparison
+is obviously useless:
+
+drivers/net/ethernet/smsc/smc91x.c: In function 'smc_hardware_send_pkt':
+drivers/net/ethernet/smsc/smc91x.c:563:14: error: self-comparison always evaluates to true [-Werror=tautological-compare]
+ if (!smc_special_trylock(&lp->lock, flags)) {
+
+This replaces the macro with another one that behaves similarly,
+with a cast to (void) to ensure the argument is used, and using
+a literal 'true' as its value.
+
+Signed-off-by: Arnd Bergmann <arnd@arndb.de>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/ethernet/smsc/smc91x.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/net/ethernet/smsc/smc91x.c
++++ b/drivers/net/ethernet/smsc/smc91x.c
+@@ -540,7 +540,7 @@ static inline void smc_rcv(struct net_d
+ #define smc_special_lock(lock, flags) spin_lock_irqsave(lock, flags)
+ #define smc_special_unlock(lock, flags) spin_unlock_irqrestore(lock, flags)
+ #else
+-#define smc_special_trylock(lock, flags) (flags == flags)
++#define smc_special_trylock(lock, flags) ((void)flags, true)
+ #define smc_special_lock(lock, flags) do { flags = 0; } while (0)
+ #define smc_special_unlock(lock, flags) do { flags = 0; } while (0)
+ #endif