[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <79f4fd24076c15fa1d59cc5dfa4646d550c3432b.1448283890.git.jslaby@suse.cz>
Date: Mon, 23 Nov 2015 14:12:15 +0100
From: Jiri Slaby <jslaby@...e.cz>
To: stable@...r.kernel.org
Cc: linux-kernel@...r.kernel.org, "Yan, Zheng" <zheng.z.yan@...el.com>,
Jiri Slaby <jslaby@...e.cz>
Subject: [PATCH 3.12 54/72] ceph: fix kick_requests()
From: "Yan, Zheng" <zheng.z.yan@...el.com>
3.12-stable review patch. If anyone has any objections, please let me know.
===============
commit 282c105225ec3229f344c5fced795b9e1e634440 upstream.
__do_request() may unregister the request. So we should update
iterator 'p' before calling __do_request()
Signed-off-by: "Yan, Zheng" <zheng.z.yan@...el.com>
Signed-off-by: Jiri Slaby <jslaby@...e.cz>
---
fs/ceph/mds_client.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c
index 16c7e4ab94f0..5ef4c6ca5cb5 100644
--- a/fs/ceph/mds_client.c
+++ b/fs/ceph/mds_client.c
@@ -1975,11 +1975,12 @@ static void __wake_requests(struct ceph_mds_client *mdsc,
static void kick_requests(struct ceph_mds_client *mdsc, int mds)
{
struct ceph_mds_request *req;
- struct rb_node *p;
+ struct rb_node *p = rb_first(&mdsc->request_tree);
dout("kick_requests mds%d\n", mds);
- for (p = rb_first(&mdsc->request_tree); p; p = rb_next(p)) {
+ while (p) {
req = rb_entry(p, struct ceph_mds_request, r_node);
+ p = rb_next(p);
if (req->r_got_unsafe)
continue;
if (req->r_session &&
--
2.6.3
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists