summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/fs/tmpfs/tmpfs_subr.c7
-rw-r--r--sys/fs/tmpfs/tmpfs_vnops.c2
2 files changed, 5 insertions, 4 deletions
diff --git a/sys/fs/tmpfs/tmpfs_subr.c b/sys/fs/tmpfs/tmpfs_subr.c
index 84a2038..62dd0bf 100644
--- a/sys/fs/tmpfs/tmpfs_subr.c
+++ b/sys/fs/tmpfs/tmpfs_subr.c
@@ -827,9 +827,10 @@ tmpfs_dir_getdents(struct tmpfs_node *node, struct uio *uio, off_t *cntp)
/* Copy the new dirent structure into the output buffer and
* advance pointers. */
error = uiomove(&d, d.d_reclen, uio);
-
- (*cntp)++;
- de = TAILQ_NEXT(de, td_entries);
+ if (error == 0) {
+ (*cntp)++;
+ de = TAILQ_NEXT(de, td_entries);
+ }
} while (error == 0 && uio->uio_resid > 0 && de != NULL);
/* Update the offset and cache. */
diff --git a/sys/fs/tmpfs/tmpfs_vnops.c b/sys/fs/tmpfs/tmpfs_vnops.c
index 059a790..a57c1f2 100644
--- a/sys/fs/tmpfs/tmpfs_vnops.c
+++ b/sys/fs/tmpfs/tmpfs_vnops.c
@@ -1349,7 +1349,7 @@ outok:
MPASS(error >= -1);
if (error == -1)
- error = 0;
+ error = (cnt != 0) ? 0 : EINVAL;
if (eofflag != NULL)
*eofflag =
OpenPOWER on IntegriCloud