summaryrefslogtreecommitdiffstats
path: root/api
diff options
context:
space:
mode:
authorJiffin Tony Thottan <jthottan@redhat.com>2016-06-23 12:20:03 +0530
committerNiels de Vos <ndevos@redhat.com>2016-06-29 05:47:19 -0700
commit82a5e6cdacd9310f04830c47fd22e0aa9b7b7251 (patch)
tree7a8e6705fcec21a070e70b42a03a1c7d5bd3c99c /api
parent984ebffd03aaf6e1da9981b804d5a368e56150ee (diff)
gfapi : check the value "iovec" in glfs_io_async_cbk only for read
The glfs_io_async_cbk() is called from the cbk of all the async ops such as write, read, fsync, ftruncate. In all other cases, expect for read the value for "iovec" is NULL. From the code, glfs_io_async_cbk checks the value in common routine which may end up in failures. Thanks Joe Julian for finding issue and suggesting the fix. Cherry picked from commit 61d72b3d91f2655b04de4ef29262f738a8cf7369: > Change-Id: I0be0123da68f9d8fbb5d94ede2d45566a9add6a5 > BUG: 1349276 > Signed-off-by: Jiffin Tony Thottan <jthottan@redhat.com> > Reported-by: Joe Julian <me@joejulian.name> > Reviewed-on: http://review.gluster.org/14779 > Reviewed-by: Niels de Vos <ndevos@redhat.com> > Smoke: Gluster Build System <jenkins@build.gluster.org> > Tested-by: Kaleb KEITHLEY <kkeithle@redhat.com> > NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org> > CentOS-regression: Gluster Build System <jenkins@build.gluster.org> > Reviewed-by: Joe Julian <me@joejulian.name> Change-Id: I0be0123da68f9d8fbb5d94ede2d45566a9add6a5 BUG: 1350880 Reported-by: Joe Julian <me@joejulian.name> Signed-off-by: Niels de Vos <ndevos@redhat.com> Reviewed-on: http://review.gluster.org/14822 Smoke: Gluster Build System <jenkins@build.gluster.org> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org> Reviewed-by: Kaleb KEITHLEY <kkeithle@redhat.com> CentOS-regression: Gluster Build System <jenkins@build.gluster.org> Reviewed-by: jiffin tony Thottan <jthottan@redhat.com>
Diffstat (limited to 'api')
-rw-r--r--api/src/glfs-fops.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/api/src/glfs-fops.c b/api/src/glfs-fops.c
index ff7f457..13815f7 100644
--- a/api/src/glfs-fops.c
+++ b/api/src/glfs-fops.c
@@ -742,7 +742,6 @@ glfs_io_async_cbk (int op_ret, int op_errno, call_frame_t *frame,
GF_VALIDATE_OR_GOTO ("gfapi", frame, inval);
GF_VALIDATE_OR_GOTO ("gfapi", cookie, inval);
- GF_VALIDATE_OR_GOTO ("gfapi", iovec, inval);
gio = frame->local;
frame->local = NULL;
@@ -756,6 +755,12 @@ glfs_io_async_cbk (int op_ret, int op_errno, call_frame_t *frame,
if (op_ret <= 0) {
goto out;
} else if (gio->op == GF_FOP_READ) {
+ if (!iovec) {
+ op_ret = -1;
+ op_errno = EINVAL;
+ goto out;
+ }
+
op_ret = iov_copy (gio->iov, gio->count, iovec, count);
glfd->offset = gio->offset + op_ret;
} else if (gio->op == GF_FOP_WRITE) {