diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h
index 908ee0aad..ab562ff45 100644
--- a/include/linux/page-flags.h
+++ b/include/linux/page-flags.h
@@ -306,6 +306,12 @@ static const unsigned long *const_folio_flags(const struct folio *folio,
 {
 	const struct page *page = &folio->page;
 
+	long nr_pages = folio_nr_pages(folio);
+	if (n >= nr_pages) {
+		pr_err("Invalid folio index: n=%u, folio_nr_pages=%u\n", n, folio_nr_pages(folio));
+		return -EINVAL;
+	}
+
 	VM_BUG_ON_PGFLAGS(PageTail(page), page);
 	VM_BUG_ON_PGFLAGS(n > 0 && !test_bit(PG_head, &page->flags), page);
 	return &page[n].flags;