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>
This commit is contained in:
parent
60fbef9a0b
commit
e47a320508
@ -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,
|
||||
|
@ -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,
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user