From 93de6e1f8106220d1c41f2ca9fdc207c76dd0560 Mon Sep 17 00:00:00 2001 From: Raghavendra Bhat Date: Thu, 14 Oct 2010 05:56:53 +0000 Subject: NULL checks in the fops of io-cache Signed-off-by: Raghavendra Bhat Signed-off-by: Anand V. Avati BUG: 1757 () URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1757 --- xlators/performance/io-cache/src/io-cache.c | 41 ++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 7 deletions(-) diff --git a/xlators/performance/io-cache/src/io-cache.c b/xlators/performance/io-cache/src/io-cache.c index e76764bcb6a..f124d0807ee 100644 --- a/xlators/performance/io-cache/src/io-cache.c +++ b/xlators/performance/io-cache/src/io-cache.c @@ -198,8 +198,11 @@ ioc_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this, goto out; } - if (!this || !this->private) + if (!this || !this->private) { + op_ret = -1; + op_errno = EINVAL; goto out; + } table = this->private; @@ -529,6 +532,12 @@ ioc_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret, uint32_t weight = 0xffffffff; local = frame->local; + if (!this || !this->private) { + op_ret = -1; + op_errno = EINVAL; + goto out; + } + table = this->private; if (op_ret != -1) { @@ -573,6 +582,7 @@ ioc_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret, } } +out: GF_FREE (local); frame->local = NULL; @@ -607,6 +617,12 @@ ioc_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this, const char *path = NULL; local = frame->local; + if (!this || !this->private) { + op_ret = -1; + op_errno = EINVAL; + goto out; + } + table = this->private; path = local->file_loc.path; @@ -649,7 +665,8 @@ ioc_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this, fd_ctx_set (fd, this, 1); } } - + +out: frame->local = NULL; GF_FREE (local); @@ -673,6 +690,12 @@ ioc_mknod_cbk (call_frame_t *frame, void *cookie, xlator_t *this, const char *path = NULL; local = frame->local; + if (!this || !this->private) { + op_ret = -1; + op_errno = EINVAL; + goto out; + } + table = this->private; path = local->file_loc.path; @@ -693,7 +716,8 @@ ioc_mknod_cbk (call_frame_t *frame, void *cookie, xlator_t *this, inode_ctx_put (inode, this, (uint64_t)(long)ioc_inode); } - + +out: frame->local = NULL; loc_wipe (&local->file_loc); @@ -1624,6 +1648,9 @@ reconfigure (xlator_t *this, dict_t *options) char *cache_size_string = NULL; int ret = 0; + if (!this || !this->private) + goto out; + table = this->private; ioc_table_lock (table); @@ -1938,11 +1965,10 @@ ioc_priv_dump (xlator_t *this) char key_prefix[GF_DUMP_MAX_BUF_LEN]; char key[GF_DUMP_MAX_BUF_LEN]; - GF_ASSERT (this); + if (!this || !this->private) + goto out; + priv = this->private; - - GF_ASSERT (priv); - gf_proc_dump_build_key (key_prefix, "xlator.performance.io-cache", "priv"); gf_proc_dump_add_section (key_prefix); @@ -1956,6 +1982,7 @@ ioc_priv_dump (xlator_t *this) gf_proc_dump_build_key (key, key_prefix, "inode_count"); gf_proc_dump_write (key, "%u", priv->inode_count); +out: return 0; } -- cgit