From: "Yan, Zheng" <[email protected]>

This patch has been added to the 3.12 stable tree. If you have any
objections, please let us 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" <[email protected]>
Signed-off-by: Jiri Slaby <[email protected]>
---
 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 stable" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to