Hello community,
here is the log from the commit of package kernel-source for openSUSE:Factory checked in at 2016-09-05 21:15:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kernel-source (Old)
and /work/SRC/openSUSE:Factory/.kernel-source.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kernel-source"
Changes:
--------
--- /work/SRC/openSUSE:Factory/kernel-source/kernel-debug.changes 2016-08-25 09:53:22.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.kernel-source.new/kernel-debug.changes 2016-09-05 21:15:41.000000000 +0200
@@ -1,0 +2,18 @@
+Mon Aug 29 22:56:22 CEST 2016 - tiwai@suse.de
+
+- drm/i915: Fix S4 resume breakage
+ (bsc#984629,bsc#984632,bsc#993472).
+- drm/i915: Add distinct stubs for PM hibernation phases
+ (bsc#984632,bsc#993472).
+- x86 / hibernate: Use hlt_play_dead() when resuming from
+ hibernation (bsc#984629,bsc#993472).
+- commit 1d73b85
+
+-------------------------------------------------------------------
+Tue Aug 23 10:09:14 CEST 2016 - mkubecek@suse.cz
+
+- tcp: fix use after free in tcp_xmit_retransmit_queue()
+ (CVE-2016-6828 bsc#994296).
+- commit 73d7d3e
+
+-------------------------------------------------------------------
@@ -8,0 +27,6 @@
+Sat Aug 20 15:15:08 CEST 2016 - mmarek@suse.cz
+
+- rpm/old-flavors: Obsolte kernel-compute by kernel-rt (fate#320686)
+- commit 964f3e2
+
+-------------------------------------------------------------------
@@ -16,0 +41,6 @@
+Tue Aug 16 16:11:36 CEST 2016 - mmarek@suse.com
+
+- rpm/kernel-source.spec.in: Unroll a loop with only a single iteration
+- commit 601c09e
+
+-------------------------------------------------------------------
@@ -85,0 +116,7 @@
+
+-------------------------------------------------------------------
+Wed Jul 27 11:30:33 CEST 2016 - schwab@suse.de
+
+- group-source-files.pl: mark arch/*/scripts as devel
+ make[2]: /usr/src/linux-4.6.4-2/arch/powerpc/scripts/gcc-check-mprofile-kernel.sh: Command not found
+- commit aa32770
kernel-default.changes: same change
kernel-docs.changes: same change
kernel-lpae.changes: same change
kernel-obs-build.changes: same change
kernel-obs-qa.changes: same change
kernel-pae.changes: same change
kernel-source.changes: same change
kernel-syms.changes: same change
kernel-vanilla.changes: same change
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kernel-debug.spec ++++++
--- /var/tmp/diff_new_pack.veTfoN/_old 2016-09-05 21:15:46.000000000 +0200
+++ /var/tmp/diff_new_pack.veTfoN/_new 2016-09-05 21:15:46.000000000 +0200
@@ -63,7 +63,7 @@
Group: System/Kernel
Version: 4.7.2
%if 0%{?is_kotd}
-Release: <RELEASE>.g34ba8d6
+Release: <RELEASE>.g8a962cf
%else
Release: 0
%endif
kernel-default.spec: same change
++++++ kernel-docs.spec ++++++
--- /var/tmp/diff_new_pack.veTfoN/_old 2016-09-05 21:15:46.000000000 +0200
+++ /var/tmp/diff_new_pack.veTfoN/_new 2016-09-05 21:15:46.000000000 +0200
@@ -29,7 +29,7 @@
Group: Documentation/Man
Version: 4.7.2
%if 0%{?is_kotd}
-Release: <RELEASE>.g34ba8d6
+Release: <RELEASE>.g8a962cf
%else
Release: 0
%endif
++++++ kernel-lpae.spec ++++++
--- /var/tmp/diff_new_pack.veTfoN/_old 2016-09-05 21:15:46.000000000 +0200
+++ /var/tmp/diff_new_pack.veTfoN/_new 2016-09-05 21:15:46.000000000 +0200
@@ -63,7 +63,7 @@
Group: System/Kernel
Version: 4.7.2
%if 0%{?is_kotd}
-Release: <RELEASE>.g34ba8d6
+Release: <RELEASE>.g8a962cf
%else
Release: 0
%endif
++++++ kernel-obs-build.spec ++++++
--- /var/tmp/diff_new_pack.veTfoN/_old 2016-09-05 21:15:46.000000000 +0200
+++ /var/tmp/diff_new_pack.veTfoN/_new 2016-09-05 21:15:46.000000000 +0200
@@ -53,7 +53,7 @@
Group: SLES
Version: 4.7.2
%if 0%{?is_kotd}
-Release: <RELEASE>.g34ba8d6
+Release: <RELEASE>.g8a962cf
%else
Release: 0
%endif
kernel-obs-qa.spec: same change
++++++ kernel-pae.spec ++++++
--- /var/tmp/diff_new_pack.veTfoN/_old 2016-09-05 21:15:46.000000000 +0200
+++ /var/tmp/diff_new_pack.veTfoN/_new 2016-09-05 21:15:46.000000000 +0200
@@ -63,7 +63,7 @@
Group: System/Kernel
Version: 4.7.2
%if 0%{?is_kotd}
-Release: <RELEASE>.g34ba8d6
+Release: <RELEASE>.g8a962cf
%else
Release: 0
%endif
++++++ kernel-source.spec ++++++
--- /var/tmp/diff_new_pack.veTfoN/_old 2016-09-05 21:15:46.000000000 +0200
+++ /var/tmp/diff_new_pack.veTfoN/_new 2016-09-05 21:15:46.000000000 +0200
@@ -32,7 +32,7 @@
Group: Development/Sources
Version: 4.7.2
%if 0%{?is_kotd}
-Release: <RELEASE>.g34ba8d6
+Release: <RELEASE>.g8a962cf
%else
Release: 0
%endif
@@ -228,11 +228,9 @@
$RPM_BUILD_ROOT/usr/lib/rpm/
%endif
-for script in post; do
- sed -e "s:@KERNELRELEASE@:%kernelrelease:g" \
+sed -e "s:@KERNELRELEASE@:%kernelrelease:g" \
-e "s:@SRCVARIANT@:%variant:g" \
- %_sourcedir/source-$script.sh > %name-$script.sh
-done
+ %_sourcedir/source-post.sh > %name-post.sh
pushd "%buildroot"
perl "%_sourcedir/group-source-files.pl" \
++++++ kernel-syms.spec ++++++
--- /var/tmp/diff_new_pack.veTfoN/_old 2016-09-05 21:15:46.000000000 +0200
+++ /var/tmp/diff_new_pack.veTfoN/_new 2016-09-05 21:15:46.000000000 +0200
@@ -27,7 +27,7 @@
Version: 4.7.2
%if %using_buildservice
%if 0%{?is_kotd}
-Release: <RELEASE>.g34ba8d6
+Release: <RELEASE>.g8a962cf
%else
Release: 0
%endif
++++++ kernel-vanilla.spec ++++++
--- /var/tmp/diff_new_pack.veTfoN/_old 2016-09-05 21:15:46.000000000 +0200
+++ /var/tmp/diff_new_pack.veTfoN/_new 2016-09-05 21:15:46.000000000 +0200
@@ -63,7 +63,7 @@
Group: System/Kernel
Version: 4.7.2
%if 0%{?is_kotd}
-Release: <RELEASE>.g34ba8d6
+Release: <RELEASE>.g8a962cf
%else
Release: 0
%endif
++++++ group-source-files.pl ++++++
--- /var/tmp/diff_new_pack.veTfoN/_old 2016-09-05 21:15:46.000000000 +0200
+++ /var/tmp/diff_new_pack.veTfoN/_new 2016-09-05 21:15:46.000000000 +0200
@@ -39,6 +39,7 @@
m{^\Q$loc\E/arch/.*/module\.lds\b} ||
m{^\Q$loc\E/arch/arm/[^/]+/include/mach\b} ||
m{^\Q$loc\E/arch/arm/[^/]+/include/plat\b} ||
+ m{^\Q$loc\E/arch/[^/]+/scripts\b} ||
m{^\Q$loc\E/include/[^/]+\b} ||
m{^\Q$loc\E/scripts\b};
if (substr($_, 0, 1) ne "/") {
++++++ kernel-source.spec.in ++++++
--- /var/tmp/diff_new_pack.veTfoN/_old 2016-09-05 21:15:47.000000000 +0200
+++ /var/tmp/diff_new_pack.veTfoN/_new 2016-09-05 21:15:47.000000000 +0200
@@ -228,11 +228,9 @@
$RPM_BUILD_ROOT/usr/lib/rpm/
%endif
-for script in post; do
- sed -e "s:@KERNELRELEASE@:%kernelrelease:g" \
- -e "s:@SRCVARIANT@:%variant:g" \
- %_sourcedir/source-$script.sh > %name-$script.sh
-done
+sed -e "s:@KERNELRELEASE@:%kernelrelease:g" \
+ -e "s:@SRCVARIANT@:%variant:g" \
+ %_sourcedir/source-post.sh > %name-post.sh
pushd "%buildroot"
perl "%_sourcedir/group-source-files.pl" \
++++++ old-flavors ++++++
--- /var/tmp/diff_new_pack.veTfoN/_old 2016-09-05 21:15:47.000000000 +0200
+++ /var/tmp/diff_new_pack.veTfoN/_new 2016-09-05 21:15:47.000000000 +0200
@@ -39,7 +39,13 @@
i386/pae desktop 4.3
x86_64/default desktop 4.3
+# SLE 12 SP1
i386/pae xen 4.4
i386/pae ec2 4.4
x86_64/default xen 4.4
x86_64/default ec2 4.4
+
+x86_64/rt compute 3.13
+x86_64/rt_debug compute_debug 3.13
+
+
++++++ patches.fixes.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/drm-i915-Add-distinct-stubs-for-PM-hibernation-phase new/patches.fixes/drm-i915-Add-distinct-stubs-for-PM-hibernation-phase
--- old/patches.fixes/drm-i915-Add-distinct-stubs-for-PM-hibernation-phase 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/drm-i915-Add-distinct-stubs-for-PM-hibernation-phase 2016-08-30 01:57:41.000000000 +0200
@@ -0,0 +1,90 @@
+From 1f19ac2a0b1ad8e2a9c382efa7416b014c988949 Mon Sep 17 00:00:00 2001
+From: Chris Wilson
+Date: Sat, 14 May 2016 07:26:32 +0100
+Subject: [PATCH] drm/i915: Add distinct stubs for PM hibernation phases
+Git-commit: 1f19ac2a0b1ad8e2a9c382efa7416b014c988949
+Patch-mainline: 4.8-rc1
+References: bsc#984632,bsc#993472
+
+Currently for handling the extra hibernation phases we just call the
+equivalent suspend/resume phases. In the next couple of patches, I wish
+to specialise the hibernation phases to reduce the amount of work
+required for handling GEM objects.
+
+V2: There are more! Don't forget the freeze phases.
+
+Signed-off-by: Chris Wilson
+Cc: Imre Deak
+Cc: David Weinehall
+Reviewed-by: Joonas Lahtinen
+Reviewed-by: Imre Deak
+Link: http://patchwork.freedesktop.org/patch/msgid/1463207195-22076-1-git-send-ema...
+Acked-by: Takashi Iwai
+
+---
+ drivers/gpu/drm/i915/i915_drv.c | 45 ++++++++++++++++++++++++++++++++++------
+ 1 file changed, 39 insertions(+), 6 deletions(-)
+
+--- a/drivers/gpu/drm/i915/i915_drv.c
++++ b/drivers/gpu/drm/i915/i915_drv.c
+@@ -1119,6 +1119,39 @@ static int i915_pm_resume(struct device
+ return i915_drm_resume(drm_dev);
+ }
+
++/* freeze: before creating the hibernation_image */
++static int i915_pm_freeze(struct device *dev)
++{
++ return i915_pm_suspend(dev);
++}
++
++static int i915_pm_freeze_late(struct device *dev)
++{
++ return i915_pm_suspend_late(dev);
++}
++
++/* thaw: called after creating the hibernation image, but before turning off. */
++static int i915_pm_thaw_early(struct device *dev)
++{
++ return i915_pm_resume_early(dev);
++}
++
++static int i915_pm_thaw(struct device *dev)
++{
++ return i915_pm_resume(dev);
++}
++
++/* restore: called after loading the hibernation image. */
++static int i915_pm_restore_early(struct device *dev)
++{
++ return i915_pm_resume_early(dev);
++}
++
++static int i915_pm_restore(struct device *dev)
++{
++ return i915_pm_resume(dev);
++}
++
+ /*
+ * Save all Gunit registers that may be lost after a D3 and a subsequent
+ * S0i[R123] transition. The list of registers needing a save/restore is
+@@ -1673,14 +1706,14 @@ static const struct dev_pm_ops i915_pm_o
+ * @restore, @restore_early : called after rebooting and restoring the
+ * hibernation image [PMSG_RESTORE]
+ */
+- .freeze = i915_pm_suspend,
+- .freeze_late = i915_pm_suspend_late,
+- .thaw_early = i915_pm_resume_early,
+- .thaw = i915_pm_resume,
++ .freeze = i915_pm_freeze,
++ .freeze_late = i915_pm_freeze_late,
++ .thaw_early = i915_pm_thaw_early,
++ .thaw = i915_pm_thaw,
+ .poweroff = i915_pm_suspend,
+ .poweroff_late = i915_pm_poweroff_late,
+- .restore_early = i915_pm_resume_early,
+- .restore = i915_pm_resume,
++ .restore_early = i915_pm_restore_early,
++ .restore = i915_pm_restore,
+
+ /* S0ix (via runtime suspend) event handlers */
+ .runtime_suspend = intel_runtime_suspend,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/drm-i915-Fix-S4-resume-breakage new/patches.fixes/drm-i915-Fix-S4-resume-breakage
--- old/patches.fixes/drm-i915-Fix-S4-resume-breakage 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/drm-i915-Fix-S4-resume-breakage 2016-08-30 01:57:41.000000000 +0200
@@ -0,0 +1,33 @@
+From: Takashi Iwai
+Subject: drm/i915: Fix S4 resume breakage
+Patch-mainline: Submitted, suggested on ML
+References: bsc#984629,bsc#984632,bsc#993472
+
+We've seen S4 resume breakage on many Intel machines with SP2 kernel,
+where typically the machine gets a memory corruption or kernel Oops /
+panic. This problem was seen even on the upstream kernel, and through
+the bisection, it was pointed to be a side-effect of the commit:
+ 4c436d55b279bbc6b02aac02e7dc683fc09f884e
+ drm/i915: Enable Resource Streamer state save/restore on MI_SET_CONTEXT
+
+This patch fixes the regression by forcibly calling the GPU reset
+at prerequiste of PM S4 restore, as was suggested by the i915
+upstream dev.
+
+Signed-off-by: Takashi Iwai
+
+---
+ drivers/gpu/drm/i915/i915_drv.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/gpu/drm/i915/i915_drv.c
++++ b/drivers/gpu/drm/i915/i915_drv.c
+@@ -1144,6 +1144,8 @@ static int i915_pm_thaw(struct device *d
+ /* restore: called after loading the hibernation image. */
+ static int i915_pm_restore_early(struct device *dev)
+ {
++ /* for avoiding the memory corruption at S4 resume (bsc#984624) */
++ intel_gpu_reset(dev_to_i915(dev)->dev, ALL_ENGINES);
+ return i915_pm_resume_early(dev);
+ }
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/tcp-fix-use-after-free-in-tcp_xmit_retransmit_queue.patch new/patches.fixes/tcp-fix-use-after-free-in-tcp_xmit_retransmit_queue.patch
--- old/patches.fixes/tcp-fix-use-after-free-in-tcp_xmit_retransmit_queue.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/tcp-fix-use-after-free-in-tcp_xmit_retransmit_queue.patch 2016-08-30 01:57:41.000000000 +0200
@@ -0,0 +1,60 @@
+From: Eric Dumazet
+Date: Wed, 17 Aug 2016 05:56:26 -0700
+Subject: tcp: fix use after free in tcp_xmit_retransmit_queue()
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+Patch-mainline: Queued in subsystem maintainer repository (target: v4.8)
+Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git
+Git-commit: bb1fceca22492109be12640d49f5ea5a544c6bb4
+References: CVE-2016-6828 bsc#994296
+
+When tcp_sendmsg() allocates a fresh and empty skb, it puts it at the
+tail of the write queue using tcp_add_write_queue_tail()
+
+Then it attempts to copy user data into this fresh skb.
+
+If the copy fails, we undo the work and remove the fresh skb.
+
+Unfortunately, this undo lacks the change done to tp->highest_sack and
+we can leave a dangling pointer (to a freed skb)
+
+Later, tcp_xmit_retransmit_queue() can dereference this pointer and
+access freed memory. For regular kernels where memory is not unmapped,
+this might cause SACK bugs because tcp_highest_sack_seq() is buggy,
+returning garbage instead of tp->snd_nxt, but with various debug
+features like CONFIG_DEBUG_PAGEALLOC, this can crash the kernel.
+
+This bug was found by Marco Grassi thanks to syzkaller.
+
+Fixes: 6859d49475d4 ("[TCP]: Abstract tp->highest_sack accessing & point to next skb")
+Reported-by: Marco Grassi
+Signed-off-by: Eric Dumazet
+Cc: Ilpo Järvinen
+Cc: Yuchung Cheng
+Cc: Neal Cardwell
+Acked-by: Neal Cardwell
+Reviewed-by: Cong Wang
+Signed-off-by: David S. Miller
+Acked-by: Michal Kubecek
+
+---
+ include/net/tcp.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/include/net/tcp.h b/include/net/tcp.h
+index 0bcc70f4e1fb..725405170f0e 100644
+--- a/include/net/tcp.h
++++ b/include/net/tcp.h
+@@ -1522,6 +1522,8 @@ static inline void tcp_check_send_head(struct sock *sk, struct sk_buff *skb_unli
+ {
+ if (sk->sk_send_head == skb_unlinked)
+ sk->sk_send_head = NULL;
++ if (tcp_sk(sk)->highest_sack == skb_unlinked)
++ tcp_sk(sk)->highest_sack = NULL;
+ }
+
+ static inline void tcp_init_send_head(struct sock *sk)
+--
+2.9.3
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/x86-hibernate-Use-hlt_play_dead-when-resuming-from-h new/patches.fixes/x86-hibernate-Use-hlt_play_dead-when-resuming-from-h
--- old/patches.fixes/x86-hibernate-Use-hlt_play_dead-when-resuming-from-h 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/x86-hibernate-Use-hlt_play_dead-when-resuming-from-h 2016-08-30 01:57:41.000000000 +0200
@@ -0,0 +1,161 @@
+From 406f992e4a372dafbe3c2cff7efbb2002a5c8ebd Mon Sep 17 00:00:00 2001
+From: "Rafael J. Wysocki"
+Date: Thu, 14 Jul 2016 03:55:23 +0200
+Subject: [PATCH] x86 / hibernate: Use hlt_play_dead() when resuming from hibernation
+Git-commit: 406f992e4a372dafbe3c2cff7efbb2002a5c8ebd
+Patch-mainline: 4.8-rc1
+References: bsc#984629,bsc#993472
+
+On Intel hardware, native_play_dead() uses mwait_play_dead() by
+default and only falls back to the other methods if that fails.
+That also happens during resume from hibernation, when the restore
+(boot) kernel runs disable_nonboot_cpus() to take all of the CPUs
+except for the boot one offline.
+
+However, that is problematic, because the address passed to
+__monitor() in mwait_play_dead() is likely to be written to in the
+last phase of hibernate image restoration and that causes the "dead"
+CPU to start executing instructions again. Unfortunately, the page
+containing the address in that CPU's instruction pointer may not be
+valid any more at that point.
+
+First, that page may have been overwritten with image kernel memory
+contents already, so the instructions the CPU attempts to execute may
+simply be invalid. Second, the page tables previously used by that
+CPU may have been overwritten by image kernel memory contents, so the
+address in its instruction pointer is impossible to resolve then.
+
+A report from Varun Koyyalagunta and investigation carried out by
+Chen Yu show that the latter sometimes happens in practice.
+
+To prevent it from happening, temporarily change the smp_ops.play_dead
+pointer during resume from hibernation so that it points to a special
+"play dead" routine which uses hlt_play_dead() and avoids the
+inadvertent "revivals" of "dead" CPUs this way.
+
+A slightly unpleasant consequence of this change is that if the
+system is hibernated with one or more CPUs offline, it will generally
+draw more power after resume than it did before hibernation, because
+the physical state entered by CPUs via hlt_play_dead() is higher-power
+than the mwait_play_dead() one in the majority of cases. It is
+possible to work around this, but it is unclear how much of a problem
+that's going to be in practice, so the workaround will be implemented
+later if it turns out to be necessary.
+
+Link: https://bugzilla.kernel.org/show_bug.cgi?id=106371
+Reported-by: Varun Koyyalagunta
+Original-by: Chen Yu
+Tested-by: Chen Yu
+Signed-off-by: Rafael J. Wysocki
+Acked-by: Ingo Molnar
+Acked-by: Takashi Iwai
+
+---
+ arch/x86/include/asm/smp.h | 1 +
+ arch/x86/kernel/smpboot.c | 2 +-
+ arch/x86/power/cpu.c | 30 ++++++++++++++++++++++++++++++
+ kernel/power/hibernate.c | 7 ++++++-
+ kernel/power/power.h | 2 ++
+ 5 files changed, 40 insertions(+), 2 deletions(-)
+
+--- a/arch/x86/include/asm/smp.h
++++ b/arch/x86/include/asm/smp.h
+@@ -135,6 +135,7 @@ int native_cpu_up(unsigned int cpunum, s
+ int native_cpu_disable(void);
+ int common_cpu_die(unsigned int cpu);
+ void native_cpu_die(unsigned int cpu);
++void hlt_play_dead(void);
+ void native_play_dead(void);
+ void play_dead_common(void);
+ void wbinvd_on_cpu(int cpu);
+--- a/arch/x86/kernel/smpboot.c
++++ b/arch/x86/kernel/smpboot.c
+@@ -1622,7 +1622,7 @@ static inline void mwait_play_dead(void)
+ }
+ }
+
+-static inline void hlt_play_dead(void)
++void hlt_play_dead(void)
+ {
+ if (__this_cpu_read(cpu_info.x86) >= 4)
+ wbinvd();
+--- a/arch/x86/power/cpu.c
++++ b/arch/x86/power/cpu.c
+@@ -12,6 +12,7 @@
+ #include
+ #include
+ #include
++#include
+
+ #include
+ #include
+@@ -266,6 +267,35 @@ void notrace restore_processor_state(voi
+ EXPORT_SYMBOL(restore_processor_state);
+ #endif
+
++#if defined(CONFIG_HIBERNATION) && defined(CONFIG_HOTPLUG_CPU)
++static void resume_play_dead(void)
++{
++ play_dead_common();
++ tboot_shutdown(TB_SHUTDOWN_WFS);
++ hlt_play_dead();
++}
++
++int hibernate_resume_nonboot_cpu_disable(void)
++{
++ void (*play_dead)(void) = smp_ops.play_dead;
++ int ret;
++
++ /*
++ * Ensure that MONITOR/MWAIT will not be used in the "play dead" loop
++ * during hibernate image restoration, because it is likely that the
++ * monitored address will be actually written to at that time and then
++ * the "dead" CPU will attempt to execute instructions again, but the
++ * address in its instruction pointer may not be possible to resolve
++ * any more at that point (the page tables used by it previously may
++ * have been overwritten by hibernate image data).
++ */
++ smp_ops.play_dead = resume_play_dead;
++ ret = disable_nonboot_cpus();
++ smp_ops.play_dead = play_dead;
++ return ret;
++}
++#endif
++
+ /*
+ * When bsp_check() is called in hibernate and suspend, cpu hotplug
+ * is disabled already. So it's unnessary to handle race condition between
+--- a/kernel/power/hibernate.c
++++ b/kernel/power/hibernate.c
+@@ -409,6 +409,11 @@ int hibernation_snapshot(int platform_mo
+ goto Close;
+ }
+
++int __weak hibernate_resume_nonboot_cpu_disable(void)
++{
++ return disable_nonboot_cpus();
++}
++
+ /**
+ * resume_target_kernel - Restore system state from a hibernation image.
+ * @platform_mode: Whether or not to use the platform driver.
+@@ -433,7 +438,7 @@ static int resume_target_kernel(bool pla
+ if (error)
+ goto Cleanup;
+
+- error = disable_nonboot_cpus();
++ error = hibernate_resume_nonboot_cpu_disable();
+ if (error)
+ goto Enable_cpus;
+
+--- a/kernel/power/power.h
++++ b/kernel/power/power.h
+@@ -38,6 +38,8 @@ static inline char *check_image_kernel(s
+ }
+ #endif /* CONFIG_ARCH_HIBERNATION_HEADER */
+
++extern int hibernate_resume_nonboot_cpu_disable(void);
++
+ /*
+ * Keep some memory free so that I/O operations can succeed without paging
+ * [Might this be more than 4 MB?]
++++++ series.conf ++++++
--- /var/tmp/diff_new_pack.veTfoN/_old 2016-09-05 21:15:47.000000000 +0200
+++ /var/tmp/diff_new_pack.veTfoN/_new 2016-09-05 21:15:47.000000000 +0200
@@ -221,6 +221,7 @@
########################################################
# Networking, IPv6
########################################################
+ patches.fixes/tcp-fix-use-after-free-in-tcp_xmit_retransmit_queue.patch
########################################################
# Netfilter
@@ -325,6 +326,9 @@
########################################################
# DRM/Video
########################################################
+ patches.fixes/x86-hibernate-Use-hlt_play_dead-when-resuming-from-h
+ patches.fixes/drm-i915-Add-distinct-stubs-for-PM-hibernation-phase
+ patches.fixes/drm-i915-Fix-S4-resume-breakage
########################################################
# video4linux
++++++ source-timestamp ++++++
--- /var/tmp/diff_new_pack.veTfoN/_old 2016-09-05 21:15:47.000000000 +0200
+++ /var/tmp/diff_new_pack.veTfoN/_new 2016-09-05 21:15:47.000000000 +0200
@@ -1,3 +1,3 @@
-2016-08-21 10:59:11 +0200
-GIT Revision: 34ba8d6bb0b78bf6f6aae1aadb8ee9de3aa35910
+2016-08-30 01:57:41 +0200
+GIT Revision: 8a962cfa88053c89b833b7ae38ed32d14882cbae
GIT Branch: stable