Skip to contentSkip to conversation

Patch "ceph: fix ceph_get_caps() interruption" has been added to the 4.9-stable tree

PATCH [email protected] 1 participant 1 message Jan 23, 2017

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

ceph: fix ceph_get_caps() interruption

to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
ceph-fix-ceph_get_caps-interruption.patch
and it can be found in the queue-4.9 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From 6e09d0fb64402cec579f029ca4c7f39f5c48fc60 Mon Sep 17 00:00:00 2001

From: "Yan, Zheng" <[email protected]>
Date: Thu, 22 Dec 2016 16:05:43 +0800
Subject: ceph: fix ceph_get_caps() interruption

From: Yan, Zheng <[email protected]>

commit 6e09d0fb64402cec579f029ca4c7f39f5c48fc60 upstream.

Commit 5c341ee32881 ("ceph: fix scheduler warning due to nested blocking") causes infinite loop when process is interrupted. Fix it.

---
 fs/ceph/caps.c |    7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
fs/ceph/caps.c +6 -1
@@ -2511,8 +2511,13 @@ int ceph_get_caps(struct ceph_inode_info
 			add_wait_queue(&ci->i_cap_wq, &wait);
 
 			while (!try_get_cap_refs(ci, need, want, endoff,
-						 true, &_got, &err))
+						 true, &_got, &err)) {
+				if (signal_pending(current)) {
+					ret = -ERESTARTSYS;
+					break;
+				}
 				wait_woken(&wait, TASK_INTERRUPTIBLE, MAX_SCHEDULE_TIMEOUT);
+			}
 
 			remove_wait_queue(&ci->i_cap_wq, &wait);
 

Patches currently in stable-queue which might be from [email protected] are

queue-4.9/ceph-fix-scheduler-warning-due-to-nested-blocking.patch queue-4.9/ceph-fix-ceph_get_caps-interruption.patch