diff --git a/fs/orangefs/dir.c b/fs/orangefs/dir.c
index cac601498925febed61febf6aa574843c942e55c..d327cbd17756dcbc18ca787602e436c24e70d198 100644
--- a/fs/orangefs/dir.c
+++ b/fs/orangefs/dir.c
@@ -135,9 +135,12 @@ static int parse_readdir(struct orangefs_dir *od,
 
 	count = 1;
 	part = od->part;
-	while (part && part->next) {
-		part = part->next;
+	while (part) {
 		count++;
+		if (part->next)
+			part = part->next;
+		else
+			break;
 	}
 
 	new = (void *)op->downcall.trailer_buf;