diff --git a/mm/filemap.c b/mm/filemap.c
index 5770688684492e69e514c9f0556ae5e1c6345954..ffdfbc8b0e3cab54b046b36929b1a38fd987e04a 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -2385,6 +2385,8 @@ static void filemap_get_read_batch(struct address_space *mapping,
 			continue;
 		if (xas.xa_index > max || xa_is_value(folio))
 			break;
+		if (xa_is_sibling(folio))
+			break;
 		if (!folio_try_get_rcu(folio))
 			goto retry;