[kernel] r21640 - in dists/sid/linux/debian: . patches patches/bugfix/s390
Ben Hutchings
benh at moszumanska.debian.org
Tue Jul 29 01:30:15 UTC 2014
Author: benh
Date: Tue Jul 29 01:30:15 2014
New Revision: 21640
Log:
[s390,s390x] 3215: fix hanging console issue (Closes: #747922)
Added:
dists/sid/linux/debian/patches/bugfix/s390/s390-3215-fix-hanging-console-issue.patch
Modified:
dists/sid/linux/debian/changelog
dists/sid/linux/debian/patches/series
Modified: dists/sid/linux/debian/changelog
==============================================================================
--- dists/sid/linux/debian/changelog Sun Jul 27 23:40:39 2014 (r21639)
+++ dists/sid/linux/debian/changelog Tue Jul 29 01:30:15 2014 (r21640)
@@ -12,6 +12,7 @@
* [amd64] Make x32 syscall support conditional on a kernel parameter
* [amd64] Enable X86_X32 (Closes: #708070) and X86_X32_DISABLED.
Use the kernel parameter "syscall.x32=y" to enable support for x32.
+ * [s390,s390x] 3215: fix hanging console issue (Closes: #747922)
-- Aurelien Jarno <aurel32 at debian.org> Fri, 25 Jul 2014 23:02:24 +0200
Added: dists/sid/linux/debian/patches/bugfix/s390/s390-3215-fix-hanging-console-issue.patch
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ dists/sid/linux/debian/patches/bugfix/s390/s390-3215-fix-hanging-console-issue.patch Tue Jul 29 01:30:15 2014 (r21640)
@@ -0,0 +1,69 @@
+From: Martin Schwidefsky <schwidefsky at de.ibm.com>
+Date: Tue, 15 Jul 2014 17:53:12 +0200
+Subject: s390/3215: fix hanging console issue
+Origin: https://git.kernel.org/cgit/linux/kernel/git/s390/linux.git/commit?id=26d766c60f4ea08cd14f0f3435a6db3d6cc2ae96
+Bug-Debian: https://bugs.debian.org/747922
+
+The ccw_device_start in raw3215_start_io can fail. raw3215_try_io
+does not check if the request could be started and removes any
+pending timer. This can leave the system in a hanging state.
+Check for pending request after raw3215_start_io and start a
+timer if necessary.
+
+Signed-off-by: Martin Schwidefsky <schwidefsky at de.ibm.com>
+---
+ drivers/s390/char/con3215.c | 32 +++++++++++++++++---------------
+ 1 file changed, 17 insertions(+), 15 deletions(-)
+
+diff --git a/drivers/s390/char/con3215.c b/drivers/s390/char/con3215.c
+index 5af7f0b..a6d47e5 100644
+--- a/drivers/s390/char/con3215.c
++++ b/drivers/s390/char/con3215.c
+@@ -288,12 +288,16 @@ static void raw3215_timeout(unsigned long __data)
+ unsigned long flags;
+
+ spin_lock_irqsave(get_ccwdev_lock(raw->cdev), flags);
+- if (raw->flags & RAW3215_TIMER_RUNS) {
+- del_timer(&raw->timer);
+- raw->flags &= ~RAW3215_TIMER_RUNS;
+- if (!(raw->port.flags & ASYNC_SUSPENDED)) {
+- raw3215_mk_write_req(raw);
+- raw3215_start_io(raw);
++ raw->flags &= ~RAW3215_TIMER_RUNS;
++ if (!(raw->port.flags & ASYNC_SUSPENDED)) {
++ raw3215_mk_write_req(raw);
++ raw3215_start_io(raw);
++ if ((raw->queued_read || raw->queued_write) &&
++ !(raw->flags & RAW3215_WORKING) &&
++ !(raw->flags & RAW3215_TIMER_RUNS)) {
++ raw->timer.expires = RAW3215_TIMEOUT + jiffies;
++ add_timer(&raw->timer);
++ raw->flags |= RAW3215_TIMER_RUNS;
+ }
+ }
+ spin_unlock_irqrestore(get_ccwdev_lock(raw->cdev), flags);
+@@ -317,17 +321,15 @@ static inline void raw3215_try_io(struct raw3215_info *raw)
+ (raw->flags & RAW3215_FLUSHING)) {
+ /* execute write requests bigger than minimum size */
+ raw3215_start_io(raw);
+- if (raw->flags & RAW3215_TIMER_RUNS) {
+- del_timer(&raw->timer);
+- raw->flags &= ~RAW3215_TIMER_RUNS;
+- }
+- } else if (!(raw->flags & RAW3215_TIMER_RUNS)) {
+- /* delay small writes */
+- raw->timer.expires = RAW3215_TIMEOUT + jiffies;
+- add_timer(&raw->timer);
+- raw->flags |= RAW3215_TIMER_RUNS;
+ }
+ }
++ if ((raw->queued_read || raw->queued_write) &&
++ !(raw->flags & RAW3215_WORKING) &&
++ !(raw->flags & RAW3215_TIMER_RUNS)) {
++ raw->timer.expires = RAW3215_TIMEOUT + jiffies;
++ add_timer(&raw->timer);
++ raw->flags |= RAW3215_TIMER_RUNS;
++ }
+ }
+
+ /*
Modified: dists/sid/linux/debian/patches/series
==============================================================================
--- dists/sid/linux/debian/patches/series Sun Jul 27 23:40:39 2014 (r21639)
+++ dists/sid/linux/debian/patches/series Tue Jul 29 01:30:15 2014 (r21640)
@@ -112,3 +112,4 @@
features/mips/MIPS-Loongson-3-Add-Loongson-LS3A-RS780E-1-way-machi.patch
bugfix/x86/x86-reject-x32-executables-if-x32-abi-not-supported.patch
features/x86/x86-make-x32-syscall-support-conditional.patch
+bugfix/s390/s390-3215-fix-hanging-console-issue.patch
More information about the Kernel-svn-changes
mailing list