diff options
author | Luis Henriques <lhenriques@suse.com> | 2017-07-28 11:56:40 +0100 |
---|---|---|
committer | Ilya Dryomov <idryomov@gmail.com> | 2017-09-06 19:56:50 +0200 |
commit | 397f238994a5dae1b10e8a6efe9a2e2a95052cee (patch) | |
tree | 7df8cdbc580dd035874af23647653836da0da0d6 /fs/ceph | |
parent | 06d74376c8af32f5b8d777a943aa4dc99165088b (diff) | |
download | linux-stable-397f238994a5dae1b10e8a6efe9a2e2a95052cee.tar.gz linux-stable-397f238994a5dae1b10e8a6efe9a2e2a95052cee.tar.bz2 linux-stable-397f238994a5dae1b10e8a6efe9a2e2a95052cee.zip |
ceph: check negative offsets in ceph_llseek()
When a user requests SEEK_HOLE or SEEK_DATA with a negative offset
ceph_llseek should return -ENXIO. Currently -EINVAL is being returned for
SEEK_DATA and 0 for SEEK_HOLE.
Signed-off-by: Luis Henriques <lhenriques@suse.com>
Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Diffstat (limited to 'fs/ceph')
-rw-r--r-- | fs/ceph/file.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/ceph/file.c b/fs/ceph/file.c index 2eb43a54e2d6..9634eb79b041 100644 --- a/fs/ceph/file.c +++ b/fs/ceph/file.c @@ -1481,13 +1481,13 @@ static loff_t ceph_llseek(struct file *file, loff_t offset, int whence) offset += file->f_pos; break; case SEEK_DATA: - if (offset >= i_size) { + if (offset < 0 || offset >= i_size) { ret = -ENXIO; goto out; } break; case SEEK_HOLE: - if (offset >= i_size) { + if (offset < 0 || offset >= i_size) { ret = -ENXIO; goto out; } |