summaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
Diffstat (limited to 'fs')
-rw-r--r--fs/fs.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/fs/fs.c b/fs/fs.c
index 9cda1d9968..af73c8c8aa 100644
--- a/fs/fs.c
+++ b/fs/fs.c
@@ -751,14 +751,13 @@ int erase(int fd, size_t count, unsigned long offset)
if (check_fd(fd))
return -errno;
+ if (offset >= f->size)
+ return 0;
+ if (count > f->size - offset)
+ count = f->size - offset;
dev = f->dev;
-
fsdrv = dev_to_fs_driver(dev);
-
- if (f->pos + count > f->size)
- count = f->size - f->pos;
-
if (fsdrv->erase)
ret = fsdrv->erase(dev, f, count, offset);
else
@@ -780,14 +779,13 @@ int protect(int fd, size_t count, unsigned long offset, int prot)
if (check_fd(fd))
return -errno;
+ if (offset >= f->size)
+ return 0;
+ if (count > f->size - offset)
+ count = f->size - offset;
dev = f->dev;
-
fsdrv = dev_to_fs_driver(dev);
-
- if (f->pos + count > f->size)
- count = f->size - f->pos;
-
if (fsdrv->protect)
ret = fsdrv->protect(dev, f, count, offset, prot);
else