7f4c2a
From 99c25e8b07f36adf7786164ff9ca4225b1835ca0 Mon Sep 17 00:00:00 2001
7f4c2a
From: Pranith Kumar K <pkarampu@redhat.com>
7f4c2a
Date: Sat, 13 Jun 2015 17:33:14 +0530
7f4c2a
Subject: [PATCH 122/129] cluster/dht: Prevent use after free bug
7f4c2a
7f4c2a
        Backport of http://review.gluster.org/11209
7f4c2a
7f4c2a
BUG: 1233046
7f4c2a
Change-Id: If3685c9ed84a6720d8696d11773005e9786b503f
7f4c2a
Signed-off-by: Pranith Kumar K <pkarampu@redhat.com>
7f4c2a
Reviewed-on: https://code.engineering.redhat.com/gerrit/50997
7f4c2a
Reviewed-by: Raghavendra Gowdappa <rgowdapp@redhat.com>
7f4c2a
Tested-by: Raghavendra Gowdappa <rgowdapp@redhat.com>
7f4c2a
---
7f4c2a
 xlators/cluster/dht/src/dht-helper.c |    4 +++-
7f4c2a
 1 files changed, 3 insertions(+), 1 deletions(-)
7f4c2a
7f4c2a
diff --git a/xlators/cluster/dht/src/dht-helper.c b/xlators/cluster/dht/src/dht-helper.c
7f4c2a
index ac2f794..f24c62c 100644
7f4c2a
--- a/xlators/cluster/dht/src/dht-helper.c
7f4c2a
+++ b/xlators/cluster/dht/src/dht-helper.c
7f4c2a
@@ -1577,6 +1577,8 @@ dht_unlock_inodelk (call_frame_t *frame, dht_lock_t **lk_array, int lk_count,
7f4c2a
                                    local->lock.locks[i]->domain,
7f4c2a
                                    &local->lock.locks[i]->loc, F_SETLK,
7f4c2a
                                    &flock, NULL);
7f4c2a
+                if (!--call_cnt)
7f4c2a
+                        break;
7f4c2a
         }
7f4c2a
 
7f4c2a
         return 0;
7f4c2a
@@ -1666,7 +1668,7 @@ dht_nonblocking_inodelk (call_frame_t *frame, dht_lock_t **lk_array,
7f4c2a
 
7f4c2a
         local->call_cnt = lk_count;
7f4c2a
 
7f4c2a
-        for (i = 0; i < local->lock.lk_count; i++) {
7f4c2a
+        for (i = 0; i < lk_count; i++) {
7f4c2a
                 flock.l_type = local->lock.locks[i]->type;
7f4c2a
 
7f4c2a
                 STACK_WIND_COOKIE (lock_frame, dht_nonblocking_inodelk_cbk,
7f4c2a
-- 
7f4c2a
1.7.1
7f4c2a