summaryrefslogtreecommitdiffstats
path: root/xlators/storage
diff options
context:
space:
mode:
authorXavi Hernandez <xhernandez@redhat.com>2018-08-02 22:55:35 +0200
committerShyamsundar Ranganathan <srangana@redhat.com>2018-08-03 22:20:15 +0000
commite47a320508661d8f33a7b583cf7f6999070d37de (patch)
tree405db2c00c5246eefdf84c1849c0c423b8d4d55d /xlators/storage
parent60fbef9a0b6057e87f3a4fbdcb3270bd65b649c1 (diff)
posix: prevent crash when SEEK_DATA/HOLE is not supported
Instead of not defining the 'seek' fop when it's not supported on the compilation platform, we simply return EINVAL when it's used. Fixes: bz#1611834 Change-Id: I253666d8910c5e2fffa3a3ba37085e5c1c058a8e Signed-off-by: Xavi Hernandez <xhernandez@redhat.com>
Diffstat (limited to 'xlators/storage')
-rw-r--r--xlators/storage/posix/src/posix-inode-fd-ops.c6
-rw-r--r--xlators/storage/posix/src/posix.c2
2 files changed, 4 insertions, 4 deletions
diff --git a/xlators/storage/posix/src/posix-inode-fd-ops.c b/xlators/storage/posix/src/posix-inode-fd-ops.c
index 8cfc4bceebc..1d15801b183 100644
--- a/xlators/storage/posix/src/posix-inode-fd-ops.c
+++ b/xlators/storage/posix/src/posix-inode-fd-ops.c
@@ -1049,11 +1049,11 @@ posix_ipc (call_frame_t *frame, xlator_t *this, int32_t op, dict_t *xdata)
}
-#ifdef HAVE_SEEK_HOLE
int32_t
posix_seek (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset,
gf_seek_what_t what, dict_t *xdata)
{
+#ifdef HAVE_SEEK_HOLE
struct posix_fd *pfd = NULL;
off_t ret = -1;
int err = 0;
@@ -1123,9 +1123,11 @@ out:
STACK_UNWIND_STRICT (seek, frame, (ret == -1 ? -1 : 0), err,
(ret == -1 ? -1 : ret), rsp_xdata);
+#else
+ STACK_UNWIND_STRICT (seek, frame, -1, EINVAL, 0, NULL);
+#endif
return 0;
}
-#endif
int32_t
posix_opendir (call_frame_t *frame, xlator_t *this,
diff --git a/xlators/storage/posix/src/posix.c b/xlators/storage/posix/src/posix.c
index c3e48d55ae6..b8a71ce0fd8 100644
--- a/xlators/storage/posix/src/posix.c
+++ b/xlators/storage/posix/src/posix.c
@@ -75,9 +75,7 @@ struct xlator_fops fops = {
.discard = posix_discard,
.zerofill = posix_zerofill,
.ipc = posix_ipc,
-#ifdef HAVE_SEEK_HOLE
.seek = posix_seek,
-#endif
.lease = posix_lease,
.put = posix_put,
};