summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/fs/msdosfs/msdosfs_vnops.c6
-rw-r--r--sys/msdosfs/msdosfs_vnops.c6
2 files changed, 6 insertions, 6 deletions
diff --git a/sys/fs/msdosfs/msdosfs_vnops.c b/sys/fs/msdosfs/msdosfs_vnops.c
index 3ef8e74..3ad5135 100644
--- a/sys/fs/msdosfs/msdosfs_vnops.c
+++ b/sys/fs/msdosfs/msdosfs_vnops.c
@@ -545,7 +545,7 @@ msdosfs_read(ap)
} */ *ap;
{
int error = 0;
- int diff;
+ off_t diff;
int blsize;
int isadir;
int orig_resid;
@@ -575,12 +575,12 @@ msdosfs_read(ap)
isadir = dep->de_Attributes & ATTR_DIRECTORY;
do {
+ if (uio->uio_offset >= dep->de_FileSize)
+ break;
lbn = de_cluster(pmp, uio->uio_offset);
on = uio->uio_offset & pmp->pm_crbomask;
n = min((u_long) (pmp->pm_bpcluster - on), uio->uio_resid);
diff = dep->de_FileSize - uio->uio_offset;
- if (diff <= 0)
- break;
if (diff < n)
n = diff;
/* convert cluster # to block # if a directory */
diff --git a/sys/msdosfs/msdosfs_vnops.c b/sys/msdosfs/msdosfs_vnops.c
index 3ef8e74..3ad5135 100644
--- a/sys/msdosfs/msdosfs_vnops.c
+++ b/sys/msdosfs/msdosfs_vnops.c
@@ -545,7 +545,7 @@ msdosfs_read(ap)
} */ *ap;
{
int error = 0;
- int diff;
+ off_t diff;
int blsize;
int isadir;
int orig_resid;
@@ -575,12 +575,12 @@ msdosfs_read(ap)
isadir = dep->de_Attributes & ATTR_DIRECTORY;
do {
+ if (uio->uio_offset >= dep->de_FileSize)
+ break;
lbn = de_cluster(pmp, uio->uio_offset);
on = uio->uio_offset & pmp->pm_crbomask;
n = min((u_long) (pmp->pm_bpcluster - on), uio->uio_resid);
diff = dep->de_FileSize - uio->uio_offset;
- if (diff <= 0)
- break;
if (diff < n)
n = diff;
/* convert cluster # to block # if a directory */
OpenPOWER on IntegriCloud