From 8c6eb5e04f837f679b3ca04ef784054afb18d66c Mon Sep 17 00:00:00 2001 From: Shyam Date: Thu, 11 Sep 2014 14:21:23 +0530 Subject: cluster/dht: Fixed double UNWIND in lookup everywhere code In dht_lookup_everywhere_done: Line: 1194 we call DHT_STACK_UNWIND and in the same if condition we go ahead and call, goto unwind_hashed_and_cached; which at Line 1371 calls another UNWIND. As is obvious, higher frames could cleanup their locals and on receiving the next unwind could cause a coredump of the process. Fixed the same by calling the required return post the first unwind Change-Id: Ic5d57da98255b8616a65b4caaedabeba9144fd49 BUG: 1140549 Signed-off-by: Shyam Reviewed-on: http://review.gluster.org/8666 Reviewed-by: N Balachandran Reviewed-by: Vijay Bellur Reviewed-by: Jeff Darcy Tested-by: Gluster Build System Reviewed-by: susant palai (cherry picked from commit b3314ea6e820fb659255d0e6e9a32ea259b7526d) Signed-off-by: Nithya Balachandran Reviewed-on: http://review.gluster.org/8732 Reviewed-by: Niels de Vos --- xlators/cluster/dht/src/dht-common.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'xlators/cluster/dht/src/dht-common.c') diff --git a/xlators/cluster/dht/src/dht-common.c b/xlators/cluster/dht/src/dht-common.c index 52d9e50cd1e..ca15f0d1754 100644 --- a/xlators/cluster/dht/src/dht-common.c +++ b/xlators/cluster/dht/src/dht-common.c @@ -1122,11 +1122,11 @@ dht_lookup_everywhere_done (call_frame_t *frame, xlator_t *this) local->skip_unlink.hashed_gfid)){ /*GFID different, return error*/ - DHT_STACK_UNWIND (lookup, frame, -1, - ESTALE, NULL, NULL, NULL, - NULL); - + DHT_STACK_UNWIND (lookup, frame, -1, + ESTALE, NULL, NULL, + NULL, NULL); + return 0; } ret = dht_layout_preset (this, cached_subvol, -- cgit