On 13 Sep 2023, at 16:12, Zi Yan wrote: > From: Zi Yan <ziy@xxxxxxxxxx> > > When dealing with hugetlb pages, manipulating struct page pointers > directly can get to wrong struct page, since struct page is not guaranteed > to be contiguous on SPARSEMEM without VMEMMAP. Use nth_page() to handle > it properly. > > Fixes: 2813b9c02962 ("kasan, mm, arm64: tag non slab memory allocated via pagealloc") > Cc: <stable@xxxxxxxxxxxxxxx> > Signed-off-by: Zi Yan <ziy@xxxxxxxxxx> > Reviewed-by: Muchun Song <songmuchun@xxxxxxxxxxxxx> > --- > mm/cma.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/mm/cma.c b/mm/cma.c > index da2967c6a223..2b2494fd6b59 100644 > --- a/mm/cma.c > +++ b/mm/cma.c > @@ -505,7 +505,7 @@ struct page *cma_alloc(struct cma *cma, unsigned long count, > */ > if (page) { > for (i = 0; i < count; i++) > - page_kasan_tag_reset(page + i); > + page_kasan_tag_reset(nth_page(page, i)); > } > > if (ret && !no_warn) { > -- > 2.40.1 Without the fix, page_kasan_tag_reset() could reset wrong page tags, causing a wrong kasan result. No related bug is reported. The fix comes from code inspection. -- Best Regards, Yan, Zi
Attachment:
signature.asc
Description: OpenPGP digital signature