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>
This commit is contained in:
Luis Henriques 2017-07-28 11:56:40 +01:00 committed by Ilya Dryomov
parent 06d74376c8
commit 397f238994
1 changed files with 2 additions and 2 deletions

View File

@ -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;
}