From 48a1738467c2328a9f8d0fce09b64f286ef533e0 Mon Sep 17 00:00:00 2001 From: Raghavendra Bhat Date: Thu, 29 Nov 2012 21:43:23 +0530 Subject: fix memory leaks * write-behind: free the inode context in wb_forget * distribute: in readdirp callback put the allocated context to the inode * distribute: check if the layout is NULL before accessing it in layout_unref Change-Id: I7698f81b85b99d06bf6b01fc1a6e51e1593b5e27 BUG: 790709 Signed-off-by: Raghavendra Bhat Reviewed-on: http://review.gluster.org/4250 Tested-by: Gluster Build System Reviewed-by: Anand Avati --- xlators/cluster/dht/src/dht-helper.c | 2 ++ xlators/cluster/dht/src/dht-layout.c | 2 +- xlators/performance/write-behind/src/write-behind.c | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) (limited to 'xlators') diff --git a/xlators/cluster/dht/src/dht-helper.c b/xlators/cluster/dht/src/dht-helper.c index 055ea7cb0..264172a90 100644 --- a/xlators/cluster/dht/src/dht-helper.c +++ b/xlators/cluster/dht/src/dht-helper.c @@ -948,6 +948,8 @@ dht_inode_ctx_time_update (inode_t *inode, xlator_t *this, struct iatt *stat, DHT_UPDATE_TIME(time->atime, time->atime_nsec, stat->ia_atime, stat->ia_atime_nsec, inode, post); + ret = dht_inode_ctx_set (inode, this, ctx); + return 0; } diff --git a/xlators/cluster/dht/src/dht-layout.c b/xlators/cluster/dht/src/dht-layout.c index da0e449fd..ef728209f 100644 --- a/xlators/cluster/dht/src/dht-layout.c +++ b/xlators/cluster/dht/src/dht-layout.c @@ -114,7 +114,7 @@ dht_layout_unref (xlator_t *this, dht_layout_t *layout) dht_conf_t *conf = NULL; int ref = 0; - if (layout->preset || !this->private) + if (!layout || layout->preset || !this->private) return; conf = this->private; diff --git a/xlators/performance/write-behind/src/write-behind.c b/xlators/performance/write-behind/src/write-behind.c index ffa333ce8..232e6c0de 100644 --- a/xlators/performance/write-behind/src/write-behind.c +++ b/xlators/performance/write-behind/src/write-behind.c @@ -1650,6 +1650,8 @@ wb_forget (xlator_t *this, inode_t *inode) } UNLOCK (&wb_inode->lock); + GF_FREE (wb_inode); + return 0; } -- cgit