summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPranith Kumar K <pkarampu@redhat.com>2013-04-24 18:05:13 +0530
committerVijay Bellur <vbellur@redhat.com>2013-05-07 04:39:44 -0700
commit5925d8a2512b8d4452b0b0efbafd9c7536ed3a51 (patch)
treeb665a719fe9ffea14717ed206bb6793e043963ce
parentdfa76943df9c36c3c7f5b31cf153b3c4bbc2ac2e (diff)
performance/io-cache: Avoid double mem_put in ioc_readv
On readv error io-cache frame->local is not set to NULL so the local is mem_put in STACK_DESTROY as well. This patch sets frame->local to NULL in all cases. BUG: 955751 Change-Id: I4a7340189efe02473452986b5870b02fcfa9038e Signed-off-by: Pranith Kumar K <pkarampu@redhat.com> Reviewed-on: http://review.gluster.org/4886 Reviewed-by: Raghavendra G <raghavendra@gluster.com> Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Vijay Bellur <vbellur@redhat.com>
-rw-r--r--xlators/performance/io-cache/src/page.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/xlators/performance/io-cache/src/page.c b/xlators/performance/io-cache/src/page.c
index 54c6f9b5019..b2e20ba659f 100644
--- a/xlators/performance/io-cache/src/page.c
+++ b/xlators/performance/io-cache/src/page.c
@@ -824,7 +824,6 @@ ioc_frame_unwind (call_frame_t *frame)
}
// ioc_local_lock (local);
- frame->local = NULL;
iobref = iobref_new ();
if (iobref == NULL) {
op_ret = -1;
@@ -875,6 +874,7 @@ unwind:
// ioc_local_unlock (local);
+ frame->local = NULL;
STACK_UNWIND_STRICT (readv, frame, op_ret, op_errno, vector,
count, &stbuf, iobref, NULL);
@@ -888,7 +888,8 @@ unwind:
}
pthread_mutex_destroy (&local->local_lock);
- mem_put (local);
+ if (local)
+ mem_put (local);
return;
}