summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/fs/tmpfs/tmpfs_vnops.c27
1 files changed, 15 insertions, 12 deletions
diff --git a/sys/fs/tmpfs/tmpfs_vnops.c b/sys/fs/tmpfs/tmpfs_vnops.c
index 1d38ed9..711c0a6 100644
--- a/sys/fs/tmpfs/tmpfs_vnops.c
+++ b/sys/fs/tmpfs/tmpfs_vnops.c
@@ -1219,22 +1219,25 @@ tmpfs_readdir(struct vop_readdir_args *v)
startoff = uio->uio_offset;
- switch (startoff) {
- case TMPFS_DIRCOOKIE_DOT:
+ if (uio->uio_offset == TMPFS_DIRCOOKIE_DOT) {
error = tmpfs_dir_getdotdent(node, uio);
- if (error == 0)
- cnt++;
- break;
- case TMPFS_DIRCOOKIE_DOTDOT:
+ if (error != 0)
+ goto outok;
+ cnt++;
+ }
+
+ if (uio->uio_offset == TMPFS_DIRCOOKIE_DOTDOT) {
error = tmpfs_dir_getdotdotdent(node, uio);
- if (error == 0)
- cnt++;
- break;
- default:
- error = tmpfs_dir_getdents(node, uio, &cnt);
- MPASS(error >= -1);
+ if (error != 0)
+ goto outok;
+ cnt++;
}
+ error = tmpfs_dir_getdents(node, uio, &cnt);
+
+outok:
+ MPASS(error >= -1);
+
if (error == -1)
error = 0;
OpenPOWER on IntegriCloud