[kernel/f20] Add patch to fix smdb soft-lockup (rhbz 1082586)

Josh Boyer jwboyer at fedoraproject.org
Tue May 6 12:28:12 UTC 2014


commit 0dd4df32f2e2453de6f4e0ade38a6d77e41ab417
Author: Josh Boyer <jwboyer at fedoraproject.org>
Date:   Tue May 6 08:28:30 2014 -0400

    Add patch to fix smdb soft-lockup (rhbz 1082586)

 kernel.spec                                        |    9 ++++
 ...-__break_lease-to-sleep-even-when-break_t.patch |   50 ++++++++++++++++++++
 2 files changed, 59 insertions(+), 0 deletions(-)
---
diff --git a/kernel.spec b/kernel.spec
index 6e93917..52b10b7 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -766,6 +766,9 @@ Patch25073: net-Start-with-correct-mac_len-in-skb_network_protoc.patch
 #rhbz 1089545
 Patch25074: 0001-acpi-video-Add-use_native_backlight-quirks-for-Think.patch
 
+#rhbz 1082586
+Patch25075: locks-allow-__break_lease-to-sleep-even-when-break_t.patch
+
 # END OF PATCH DEFINITIONS
 
 %endif
@@ -1485,6 +1488,9 @@ ApplyPatch net-Start-with-correct-mac_len-in-skb_network_protoc.patch
 #rhbz 1089545
 ApplyPatch 0001-acpi-video-Add-use_native_backlight-quirks-for-Think.patch
 
+#rhbz 1082586
+ApplyPatch locks-allow-__break_lease-to-sleep-even-when-break_t.patch
+
 # END OF PATCH APPLICATIONS
 
 %endif
@@ -2296,6 +2302,9 @@ fi
 #                 ||----w |
 #                 ||     ||
 %changelog
+* Tue May 06 2014 Josh Boyer <jwboyer at fedoraproject.org>
+- Add patch to fix smdb soft-lockup (rhbz 1082586)
+
 * Mon May 05 2014 Hans de Goede <hdegoede at redhat.com>
 - Add use_native_brightness quirk for the ThinkPad T530 (rhbz 1089545)
 
diff --git a/locks-allow-__break_lease-to-sleep-even-when-break_t.patch b/locks-allow-__break_lease-to-sleep-even-when-break_t.patch
new file mode 100644
index 0000000..ee893f0
--- /dev/null
+++ b/locks-allow-__break_lease-to-sleep-even-when-break_t.patch
@@ -0,0 +1,50 @@
+Bugzilla: 1082586
+Upstream-status: 3.15 and sent for stable
+
+From f1c6bb2cb8b81013e8979806f8e15e3d53efb96d Mon Sep 17 00:00:00 2001
+From: Jeff Layton <jlayton at redhat.com>
+Date: Tue, 15 Apr 2014 06:17:49 -0400
+Subject: [PATCH] locks: allow __break_lease to sleep even when break_time is 0
+
+A fl->fl_break_time of 0 has a special meaning to the lease break code
+that basically means "never break the lease". knfsd uses this to ensure
+that leases don't disappear out from under it.
+
+Unfortunately, the code in __break_lease can end up passing this value
+to wait_event_interruptible as a timeout, which prevents it from going
+to sleep at all. This makes __break_lease to spin in a tight loop and
+causes soft lockups.
+
+Fix this by ensuring that we pass a minimum value of 1 as a timeout
+instead.
+
+Cc: <stable at vger.kernel.org>
+Cc: J. Bruce Fields <bfields at fieldses.org>
+Reported-by: Terry Barnaby <terry1 at beam.ltd.uk>
+Signed-off-by: Jeff Layton <jlayton at redhat.com>
+---
+ fs/locks.c | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+diff --git a/fs/locks.c b/fs/locks.c
+index 13fc7a6d380a..b380f5543614 100644
+--- a/fs/locks.c
++++ b/fs/locks.c
+@@ -1391,11 +1391,10 @@ int __break_lease(struct inode *inode, unsigned int mode, unsigned int type)
+ 
+ restart:
+ 	break_time = flock->fl_break_time;
+-	if (break_time != 0) {
++	if (break_time != 0)
+ 		break_time -= jiffies;
+-		if (break_time == 0)
+-			break_time++;
+-	}
++	if (break_time == 0)
++		break_time++;
+ 	locks_insert_block(flock, new_fl);
+ 	spin_unlock(&inode->i_lock);
+ 	error = wait_event_interruptible_timeout(new_fl->fl_wait,
+-- 
+1.9.0
+


More information about the scm-commits mailing list