summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRavishankar N <ravishankar@redhat.com>2015-04-13 05:47:09 +0000
committerVijay Bellur <vbellur@redhat.com>2015-04-28 22:01:37 -0700
commitde909177699bdf0e084476e8191834be56edd9b0 (patch)
tree45554b3937e0292ae04130a491719f4758b5a6d8
parent211b75e21e3f4a93307ae47b4fc9dc6cd3681394 (diff)
quick-read: Do a null check before unref
Backport of http://review.gluster.org/10206 Commit 4ea5b8d2046b9e0bc7f24cdf1b2e72ab8b462c9e seems to have removed the check as a part of static analyis fixes but I'm seeing errors in the client log. --------------------- touch /mnt/fuse_mnt/zero-byte-file echo 3 > /proc/sys/vm/drop_caches cat /mnt/fuse_mnt/zero-byte-file mount log: [2015-04-13 05:52:21.683256] E [iobuf.c:790:iobuf_unref] (--> /usr/local/lib/libglusterfs.so.0(_gf_log_callingfn+0x232)[0x7feda12c0e24] (--> /usr/local/lib/libglusterfs.so.0(iobuf_unref+0x56)[0x7feda1304c8e] (--> /usr/local/lib/glusterfs/3.7dev/xlator/performance/quick-read.so(qr_readv_cached+0x466)[0x7fed95b7e2fc] (--> /usr/local/lib/glusterfs/3.7dev/xlator/performance/quick-read.so(qr_readv+0x70)[0x7fed95b7e385] (--> /usr/local/lib/libglusterfs.so.0(default_readv_resume+0x270)[0x7feda12d4401] ))))) 0-iobuf: invalid argument: iobuf --------------------- Change-Id: Ia6b29165cdef8783a716fe1e72d3d13bf0220aae BUG: 1214168 Signed-off-by: Ravishankar N <ravishankar@redhat.com> Reviewed-on: http://review.gluster.org/10329 Tested-by: NetBSD Build System Reviewed-by: Raghavendra Talur <rtalur@redhat.com> Tested-by: Raghavendra Talur <rtalur@redhat.com> Reviewed-by: Vijay Bellur <vbellur@redhat.com>
-rw-r--r--xlators/performance/quick-read/src/quick-read.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/xlators/performance/quick-read/src/quick-read.c b/xlators/performance/quick-read/src/quick-read.c
index aa44c5d..53f9a5d 100644
--- a/xlators/performance/quick-read/src/quick-read.c
+++ b/xlators/performance/quick-read/src/quick-read.c
@@ -587,9 +587,11 @@ unlock:
STACK_UNWIND_STRICT (readv, frame, op_ret, 0, &iov, 1,
&buf, iobref, xdata);
}
- iobuf_unref (iobuf);
+ if (iobuf)
+ iobuf_unref (iobuf);
- iobref_unref (iobref);
+ if (iobref)
+ iobref_unref (iobref);
return op_ret;
}