[linux] 01/01: Update to 4.8.15
debian-kernel at lists.debian.org
debian-kernel at lists.debian.org
Fri Dec 16 10:17:41 UTC 2016
This is an automated email from the git hooks/post-receive script.
carnil pushed a commit to branch sid
in repository linux.
commit 8e3469b562d553653ec18b6d07d5910db8a66b2a
Author: Salvatore Bonaccorso <carnil at debian.org>
Date: Thu Dec 15 20:52:48 2016 +0100
Update to 4.8.15
---
debian/changelog | 39 ++++-
.../rtmutex-Prevent-dequeue-vs.-unlock-race.patch | 168 ---------------------
...number-of-sata-port-for-linkstation-ls-gl.patch | 37 -----
debian/patches/series | 1 -
debian/patches/series-rt | 1 -
5 files changed, 34 insertions(+), 212 deletions(-)
diff --git a/debian/changelog b/debian/changelog
index ba0b981..aab9934 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
-linux (4.8.14-1) UNRELEASED; urgency=medium
+linux (4.8.15-1) UNRELEASED; urgency=medium
* New upstream stable update:
https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.8.12
@@ -117,14 +117,43 @@ linux (4.8.14-1) UNRELEASED; urgency=medium
- flowcache: Increase threshold for refusing new allocations
- esp4: Fix integrity verification when ESN are used
- esp6: Fix integrity verification when ESN are used
+ https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.8.15
+ - [powerpc] eeh: Fix deadlock when PE frozen state can't be cleared
+ - [powerpc] mm: Fix lazy icache flush on pre-POWER5
+ - [powerpc] boot: Fix build failure in 32-bit boot wrapper
+ - fuse: fix clearing suid, sgid for chown()
+ - [hppa/parisc] Purge TLB before setting PTE
+ - [hppa/parisc] Remove unnecessary TLB purges from flush_dcache_page_asm
+ and flush_icache_page_asm
+ - [hppa/parisc] Fix TLB related boot crash on SMP machines
+ - zram: restrict add/remove attributes to root only
+ - locking/rtmutex: Prevent dequeue vs. unlock race
+ - locking/rtmutex: Use READ_ONCE() in rt_mutex_owner()
+ - device-dax: fix private mapping restriction, permit read-only
+ - scsi: lpfc: fix oops/BUG in lpfc_sli_ringtxcmpl_put()
+ - sched/autogroup: Fix 64-bit kernel nice level adjustment
+ - [x86] perf: Fix full width counter, counter overflow
+ - acpi, nfit: fix extended status translations for ACPI DSMs
+ - acpi, nfit, libnvdimm: fix / harden ars_status output length handling
+ - acpi, nfit: validate ars_status output buffer size
+ - acpi, nfit: fix bus vs dimm confusion in xlat_status
+ - [armel, armhf] crypto: marvell - Don't copy hash operation twice into
+ the SRAM
+ - crypto: caam - fix pointer size for AArch64 boot loader, AArch32 kernel
+ - [armel, armhf] crypto: marvell - Don't corrupt state of an STD req for
+ re-stepped ahash
+ - can: raw: raw_setsockopt: limit number of can_filter that can be set
+ - can: peak: fix bad memory access and free sequence
+ - [armel] dts: orion5x: fix number of sata port for linkstation ls-gl
+ (Closes: #845611)
+ - ceph: don't set req->r_locked_dir in ceph_d_revalidate
+ - [m68k] Fix ndelay() macro
+ - batman-adv: Check for alloc errors when preparing TT local data
+ - hotplug: Make register and unregister notifier API symmetric
[ Uwe Kleine-König ]
* [armhf] dts: armada-385: add support for Turris Omnia
- [ Roger Shimizu ]
- * [armel] dts: marvell: fix number of sata port for linkstation ls-gl
- (Closes: #845611)
-
[ Salvatore Bonaccorso ]
* Add ABI reference for 4.8.0-2
* Ignore ABI changes in KVM
diff --git a/debian/patches/features/all/rt/rtmutex-Prevent-dequeue-vs.-unlock-race.patch b/debian/patches/features/all/rt/rtmutex-Prevent-dequeue-vs.-unlock-race.patch
deleted file mode 100644
index e4f7095..0000000
--- a/debian/patches/features/all/rt/rtmutex-Prevent-dequeue-vs.-unlock-race.patch
+++ /dev/null
@@ -1,168 +0,0 @@
-From: Thomas Gleixner <tglx at linutronix.de>
-Date: Thu, 1 Dec 2016 16:47:21 +0100
-Subject: [PATCH] rtmutex: Prevent dequeue vs. unlock race
-Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.8/older/patches-4.8.14-rt9.tar.xz
-
-David reported a futex/rtmutex state corruption. It's caused by the
-following problem:
-
-CPU0 CPU1 CPU2
-
-l->owner=T1
- rt_mutex_lock(l)
- lock(l->wait_lock)
- l->owner = T1 | HAS_WAITERS;
- enqueue(T2)
- boost()
- unlock(l->wait_lock)
- schedule()
-
- rt_mutex_lock(l)
- lock(l->wait_lock)
- l->owner = T1 | HAS_WAITERS;
- enqueue(T3)
- boost()
- unlock(l->wait_lock)
- schedule()
- signal(->T2) signal(->T3)
- lock(l->wait_lock)
- dequeue(T2)
- deboost()
- unlock(l->wait_lock)
- lock(l->wait_lock)
- dequeue(T3)
- ===> wait list is now empty
- deboost()
- unlock(l->wait_lock)
- lock(l->wait_lock)
- fixup_rt_mutex_waiters()
- if (wait_list_empty(l)) {
- owner = l->owner & ~HAS_WAITERS;
- l->owner = owner
- ==> l->owner = T1
- }
-
- lock(l->wait_lock)
-rt_mutex_unlock(l) fixup_rt_mutex_waiters()
- if (wait_list_empty(l)) {
- owner = l->owner & ~HAS_WAITERS;
-cmpxchg(l->owner, T1, NULL)
- ===> Success (l->owner = NULL)
- l->owner = owner
- ==> l->owner = T1
- }
-
-That means the problem is caused by fixup_rt_mutex_waiters() which does the
-RMW to clear the waiters bit unconditionally when there are no waiters in
-the rtmutexes rbtree.
-
-This can be fatal: A concurrent unlock can release the rtmutex in the
-fastpath because the waiters bit is not set. If the cmpxchg() gets in the
-middle of the RMW operation then the previous owner, which just unlocked
-the rtmutex is set as the owner again when the write takes place after the
-successfull cmpxchg().
-
-The solution is rather trivial: Verify that the owner member of the rtmutex
-has the waiters bit set before clearing it. This does not require a
-cmpxchg() or other atomic operations because the waiters bit can only be
-set and cleared with the rtmutex wait_lock held. It's also safe against the
-fast path unlock attempt. The unlock attempt via cmpxchg() will either see
-the bit set and take the slowpath or see the bit cleared and release it
-atomically in the fastpath.
-
-It's remarkable that the test program provided by David triggers on ARM64
-and MIPS64 really quick, but it refuses to reproduce on x8664, while the
-problem exists there as well. That refusal might explain that this got not
-discovered earlier despite the bug existing from day one of the rtmutex
-implementation more than 10 years ago.
-
-Thanks to David for meticulously instrumenting the code and providing the
-information which allowed to decode this subtle problem.
-
-Fixes: 23f78d4a03c5 ("[PATCH] pi-futex: rt mutex core")
-Cc: stable at vger.kernel.org
-Cc: stable-rt at vger.kernel.org
-Reported-by: David Daney <ddaney at caviumnetworks.com>
-Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
-Signed-off-by: Sebastian Andrzej Siewior <bigeasy at linutronix.de>
----
- kernel/locking/rtmutex.c | 68 +++++++++++++++++++++++++++++++++++++++++++++--
- 1 file changed, 66 insertions(+), 2 deletions(-)
-
---- a/kernel/locking/rtmutex.c
-+++ b/kernel/locking/rtmutex.c
-@@ -65,8 +65,72 @@ static inline void clear_rt_mutex_waiter
-
- static void fixup_rt_mutex_waiters(struct rt_mutex *lock)
- {
-- if (!rt_mutex_has_waiters(lock))
-- clear_rt_mutex_waiters(lock);
-+ unsigned long owner, *p = (unsigned long *) &lock->owner;
-+
-+ if (rt_mutex_has_waiters(lock))
-+ return;
-+
-+ /*
-+ * The rbtree has no waiters enqueued, now make sure that the
-+ * lock->owner still has the waiters bit set, otherwise the
-+ * following can happen:
-+ *
-+ * CPU 0 CPU 1 CPU2
-+ * l->owner=T1
-+ * rt_mutex_lock(l)
-+ * lock(l->lock)
-+ * l->owner = T1 | HAS_WAITERS;
-+ * enqueue(T2)
-+ * boost()
-+ * unlock(l->lock)
-+ * block()
-+ *
-+ * rt_mutex_lock(l)
-+ * lock(l->lock)
-+ * l->owner = T1 | HAS_WAITERS;
-+ * enqueue(T3)
-+ * boost()
-+ * unlock(l->lock)
-+ * block()
-+ * signal(->T2) signal(->T3)
-+ * lock(l->lock)
-+ * dequeue(T2)
-+ * deboost()
-+ * unlock(l->lock)
-+ * lock(l->lock)
-+ * dequeue(T3)
-+ * ==> wait list is empty
-+ * deboost()
-+ * unlock(l->lock)
-+ * lock(l->lock)
-+ * fixup_rt_mutex_waiters()
-+ * if (wait_list_empty(l) {
-+ * l->owner = owner
-+ * owner = l->owner & ~HAS_WAITERS;
-+ * ==> l->owner = T1
-+ * }
-+ * lock(l->lock)
-+ * rt_mutex_unlock(l) fixup_rt_mutex_waiters()
-+ * if (wait_list_empty(l) {
-+ * owner = l->owner & ~HAS_WAITERS;
-+ * cmpxchg(l->owner, T1, NULL)
-+ * ===> Success (l->owner = NULL)
-+ *
-+ * l->owner = owner
-+ * ==> l->owner = T1
-+ * }
-+ *
-+ * With the check for the waiter bit in place T3 on CPU2 will not
-+ * overwrite. All tasks fiddling with the waiters bit are
-+ * serialized by l->lock, so nothing else can modify the waiters
-+ * bit. If the bit is set then nothing can change l->owner either
-+ * so the simple RMW is safe. The cmpxchg() will simply fail if it
-+ * happens in the middle of the RMW because the waiters bit is
-+ * still set.
-+ */
-+ owner = READ_ONCE(*p);
-+ if (owner & RT_MUTEX_HAS_WAITERS)
-+ WRITE_ONCE(*p, owner & ~RT_MUTEX_HAS_WAITERS);
- }
-
- /*
diff --git a/debian/patches/features/arm/arm-dts-orion5x-fix-number-of-sata-port-for-linkstation-ls-gl.patch b/debian/patches/features/arm/arm-dts-orion5x-fix-number-of-sata-port-for-linkstation-ls-gl.patch
deleted file mode 100644
index 6eb39d2..0000000
--- a/debian/patches/features/arm/arm-dts-orion5x-fix-number-of-sata-port-for-linkstation-ls-gl.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From: Roger Shimizu <rogershimizu at gmail.com>
-Date: Fri, 2 Dec 2016 00:11:12 +0900
-Subject: [PATCH] ARM: dts: orion5x: fix number of sata port for linkstation
- ls-gl
-Origin: https://git.kernel.org/linus/038ccb3e8cee52e07dc118ff99f47eaebc1d0746
-
-Bug report from Debian [0] shows there's minor changed model of
-Linkstation LS-GL that uses the 2nd SATA port of the SoC.
-So it's necessary to enable two SATA ports, though for that specific
-model only the 2nd one is used.
-
-[0] https://bugs.debian.org/845611
-
-Fixes: b1742ffa9ddb ("ARM: dts: orion5x: add device tree for buffalo linkstation ls-gl")
-Reported-by: Ryan Tandy <ryan at nardis.ca>
-Tested-by: Ryan Tandy <ryan at nardis.ca>
-Signed-off-by: Roger Shimizu <rogershimizu at gmail.com>
-Signed-off-by: Gregory CLEMENT <gregory.clement at free-electrons.com>
----
- arch/arm/boot/dts/orion5x-linkstation-lsgl.dts | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/arch/arm/boot/dts/orion5x-linkstation-lsgl.dts b/arch/arm/boot/dts/orion5x-linkstation-lsgl.dts
-index 1cf644b..51dc734 100644
---- a/arch/arm/boot/dts/orion5x-linkstation-lsgl.dts
-+++ b/arch/arm/boot/dts/orion5x-linkstation-lsgl.dts
-@@ -82,6 +82,10 @@
- gpios = <&gpio0 9 GPIO_ACTIVE_HIGH>;
- };
-
-+&sata {
-+ nr-ports = <2>;
-+};
-+
- &ehci1 {
- status = "okay";
- };
diff --git a/debian/patches/series b/debian/patches/series
index cc32ebc..1f6687d 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -56,7 +56,6 @@ features/x86/x86-memtest-WARN-if-bad-RAM-found.patch
features/x86/x86-make-x32-syscall-support-conditional.patch
features/arm/arm-dts-imx53-add-support-for-usb-armory-board.patch
features/arm/arm-dts-add-support-for-turris-omnia.patch
-features/arm/arm-dts-orion5x-fix-number-of-sata-port-for-linkstation-ls-gl.patch
# Miscellaneous bug fixes
bugfix/all/kbuild-use-nostdinc-in-compile-tests.patch
diff --git a/debian/patches/series-rt b/debian/patches/series-rt
index 3564c44..6430649 100644
--- a/debian/patches/series-rt
+++ b/debian/patches/series-rt
@@ -45,7 +45,6 @@ features/all/rt/NFSv4-replace-seqcount_t-with-a-seqlock_t.patch
############################################################
# Submitted on LKML
############################################################
-features/all/rt/rtmutex-Prevent-dequeue-vs.-unlock-race.patch
# SPARC part of erly printk consolidation
features/all/rt/sparc64-use-generic-rwsem-spinlocks-rt.patch
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/kernel/linux.git
More information about the Kernel-svn-changes
mailing list