diff options
| author | Xavi Hernandez <xhernandez@redhat.com> | 2018-08-02 22:55:35 +0200 | 
|---|---|---|
| committer | Shyamsundar Ranganathan <srangana@redhat.com> | 2018-08-03 22:20:15 +0000 | 
| commit | e47a320508661d8f33a7b583cf7f6999070d37de (patch) | |
| tree | 405db2c00c5246eefdf84c1849c0c423b8d4d55d | |
| parent | 60fbef9a0b6057e87f3a4fbdcb3270bd65b649c1 (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>
| -rw-r--r-- | xlators/storage/posix/src/posix-inode-fd-ops.c | 6 | ||||
| -rw-r--r-- | xlators/storage/posix/src/posix.c | 2 | 
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,  };  | 
