Messages in this thread | | | Date | Mon, 18 Mar 2024 13:25:50 +0100 | Subject | Re: [PATCH 01/12] mm/ksm: catch tail page abnormal in page_stable_node | From | David Hildenbrand <> |
| |
On 18.03.24 13:14, alexs@kernel.org wrote: > From: Alex Shi <alexs@kernel.org> > > commit 19138349ed59 ("mm/migrate: Add folio_migrate_flags()") change the > meaning of func page_stable_node() to check the compound head for tail > 'page' instead of tail page self. > But seems both semantics are same at results, the func always return NULL > for tail page. So adding a bug monitor here in case of abnormal. > > Signed-off-by: Alex Shi <alexs@kernel.org> > Cc: Izik Eidus <izik.eidus@ravellosystems.com> > Cc: Matthew Wilcox <willy@infradead.org> > Cc: Andrea Arcangeli <aarcange@redhat.com> > Cc: Hugh Dickins <hughd@google.com> > Cc: Chris Wright <chrisw@sous-sol.org> > To: linux-kernel@vger.kernel.org > To: linux-mm@kvack.org > To: Andrew Morton <akpm@linux-foundation.org> > --- > mm/ksm.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/mm/ksm.c b/mm/ksm.c > index 8c001819cf10..3ff469961927 100644 > --- a/mm/ksm.c > +++ b/mm/ksm.c > @@ -1091,7 +1091,12 @@ static inline struct ksm_stable_node *folio_stable_node(struct folio *folio) > > static inline struct ksm_stable_node *page_stable_node(struct page *page) > { > - return folio_stable_node(page_folio(page)); > + struct ksm_stable_node *node; > + > + node = folio_stable_node(page_folio(page)); > + VM_BUG_ON_PAGE(PageTail(page) && node, page);
I don't really understand why we would want this.
Only KSM folios can have a node in the stable tree. KSM folios cannot be large folios. At that is precisely what folio_stable_node() checks.
If we'd have a large folio identify as a KSM folio we'd be in much bigger trouble.
Besides, I'm sure you read "22) Do not crash the kernel" in Documentation/process/coding-style.rst
-- Cheers,
David / dhildenb
| |