diff options
author | Josh Boyer <jwboyer@fedoraproject.org> | 2014-05-06 08:28:30 -0400 |
---|---|---|
committer | Josh Boyer <jwboyer@fedoraproject.org> | 2014-05-06 08:28:30 -0400 |
commit | 0dd4df32f2e2453de6f4e0ade38a6d77e41ab417 (patch) | |
tree | 4081c04c45da50e401d00570a31c458ae415dfab | |
parent | b2aa988fdb0a7e6eee57757852164136229034b9 (diff) | |
download | kernel-0dd4df32f2e2453de6f4e0ade38a6d77e41ab417.tar.gz kernel-0dd4df32f2e2453de6f4e0ade38a6d77e41ab417.tar.xz kernel-0dd4df32f2e2453de6f4e0ade38a6d77e41ab417.zip |
Add patch to fix smdb soft-lockup (rhbz 1082586)
-rw-r--r-- | kernel.spec | 9 | ||||
-rw-r--r-- | locks-allow-__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 6e939170..52b10b78 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@fedoraproject.org> +- Add patch to fix smdb soft-lockup (rhbz 1082586) + * Mon May 05 2014 Hans de Goede <hdegoede@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 00000000..ee893f09 --- /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@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@vger.kernel.org> +Cc: J. Bruce Fields <bfields@fieldses.org> +Reported-by: Terry Barnaby <terry1@beam.ltd.uk> +Signed-off-by: Jeff Layton <jlayton@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 + |