From 826e03db0903abab852bda37d6d77f3dd0f83cc6 Mon Sep 17 00:00:00 2001 From: Kinglong Mee Date: Thu, 18 Oct 2018 19:35:40 +0800 Subject: md-cache: fix dict leak of cached xattr Change-Id: I52f8e13e68528ba9679537ffdddf58ec08f9fd0c Updates: bz#1634220 Signed-off-by: Kinglong Mee --- xlators/performance/md-cache/src/md-cache.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'xlators/performance/md-cache/src/md-cache.c') diff --git a/xlators/performance/md-cache/src/md-cache.c b/xlators/performance/md-cache/src/md-cache.c index b151110a081..fc9d601015b 100644 --- a/xlators/performance/md-cache/src/md-cache.c +++ b/xlators/performance/md-cache/src/md-cache.c @@ -2352,6 +2352,9 @@ mdc_getxattr(call_frame_t *frame, xlator_t *this, loc_t *loc, const char *key, GF_ATOMIC_INC(conf->mdc_counter.xattr_hit); MDC_STACK_UNWIND(getxattr, frame, ret, op_errno, xattr, xdata); + if (xattr) + dict_unref(xattr); + return 0; uncached: @@ -2417,6 +2420,9 @@ mdc_fgetxattr(call_frame_t *frame, xlator_t *this, fd_t *fd, const char *key, GF_ATOMIC_INC(conf->mdc_counter.xattr_hit); MDC_STACK_UNWIND(fgetxattr, frame, ret, op_errno, xattr, xdata); + if (xattr) + dict_unref(xattr); + return 0; uncached: @@ -2500,6 +2506,9 @@ mdc_removexattr(call_frame_t *frame, xlator_t *this, loc_t *loc, GF_ATOMIC_INC(conf->mdc_counter.xattr_hit); MDC_STACK_UNWIND(removexattr, frame, ret, op_errno, xdata); + if (xattr) + dict_unref(xattr); + return 0; uncached: @@ -2583,6 +2592,10 @@ mdc_fremovexattr(call_frame_t *frame, xlator_t *this, fd_t *fd, GF_ATOMIC_INC(conf->mdc_counter.xattr_hit); MDC_STACK_UNWIND(fremovexattr, frame, ret, op_errno, xdata); + + if (xattr) + dict_unref(xattr); + return 0; uncached: -- cgit