|
|
3604df |
From e100d3435a04f57ed54ff1f6a07ae76a1a4e0abb Mon Sep 17 00:00:00 2001
|
|
|
3604df |
From: Ashish Pandey <aspandey@redhat.com>
|
|
|
3604df |
Date: Fri, 2 Dec 2016 13:15:20 +0530
|
|
|
3604df |
Subject: [PATCH 219/227] cluster/ec: Check xdata to avoid memory leak
|
|
|
3604df |
|
|
|
3604df |
Problem: ec_writev_start calls ec_make_internal_fop_xdata
|
|
|
3604df |
to set "yes" in xdata before ec_readv (an internal fop)
|
|
|
3604df |
is called for head and tail. Second call to this function
|
|
|
3604df |
is overwriting the previous allocated dict_t to "xdata",
|
|
|
3604df |
which results in memory leak.
|
|
|
3604df |
|
|
|
3604df |
Solution: In ec_make_internal_fop_xdata, check if *xdata
|
|
|
3604df |
is NULL or not to avoid overwriting *xdata.
|
|
|
3604df |
|
|
|
3604df |
>Reviewed-on: http://review.gluster.org/16007
|
|
|
3604df |
>Reviewed-by: Xavier Hernandez <xhernandez@datalab.es>
|
|
|
3604df |
>Reviewed-by: Pranith Kumar Karampuri <pkarampu@redhat.com>
|
|
|
3604df |
>Tested-by: Pranith Kumar Karampuri <pkarampu@redhat.com>
|
|
|
3604df |
>Smoke: Gluster Build System <jenkins@build.gluster.org>
|
|
|
3604df |
>NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
|
|
|
3604df |
>CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
|
|
|
3604df |
|
|
|
3604df |
Change-Id: I49b83923e11aff9b92d002e86424c0c2e1f5f74f
|
|
|
3604df |
BUG: 1399105
|
|
|
3604df |
Signed-off-by: Ashish Pandey <aspandey@redhat.com>
|
|
|
3604df |
Reviewed-on: https://code.engineering.redhat.com/gerrit/92048
|
|
|
3604df |
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
|
|
|
3604df |
Tested-by: Atin Mukherjee <amukherj@redhat.com>
|
|
|
3604df |
---
|
|
|
3604df |
xlators/cluster/ec/src/ec-inode-write.c | 3 +++
|
|
|
3604df |
1 file changed, 3 insertions(+)
|
|
|
3604df |
|
|
|
3604df |
diff --git a/xlators/cluster/ec/src/ec-inode-write.c b/xlators/cluster/ec/src/ec-inode-write.c
|
|
|
3604df |
index 6aeda5a..92c6b8a 100644
|
|
|
3604df |
--- a/xlators/cluster/ec/src/ec-inode-write.c
|
|
|
3604df |
+++ b/xlators/cluster/ec/src/ec-inode-write.c
|
|
|
3604df |
@@ -1270,6 +1270,9 @@ ec_make_internal_fop_xdata (dict_t **xdata)
|
|
|
3604df |
{
|
|
|
3604df |
dict_t *dict = NULL;
|
|
|
3604df |
|
|
|
3604df |
+ if (*xdata)
|
|
|
3604df |
+ return 0;
|
|
|
3604df |
+
|
|
|
3604df |
dict = dict_new();
|
|
|
3604df |
if (!dict)
|
|
|
3604df |
goto out;
|
|
|
3604df |
--
|
|
|
3604df |
2.9.3
|
|
|
3604df |
|