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; + /* Add a check for n to ensure it's within bounds. */ + if (n >= folio_nr_pages(folio)) { + 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;