On Tue, 19 Nov 2024 04:35:47 +0000 Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote: > On Mon, Nov 18, 2024 at 07:30:01PM -0800, Andrew Morton wrote: > > Matthew Wilcox (Oracle) (13): > > ksm: use a folio in try_to_merge_one_page() > > ksm: convert cmp_and_merge_page() to use a folio > > Unfortunately you left the crap patch in from Gaosheng. Linus, can you > apply this fixup? > > >From 3d7e7319bbb3ced1dfb9c82bb7e8c7386380799b Mon Sep 17 00:00:00 2001 > From: "Matthew Wilcox (Oracle)" <willy@xxxxxxxxxxxxx> > Date: Mon, 18 Nov 2024 23:32:25 -0500 > Subject: [PATCH] mm: Revert IS_ERR_OR_NULL check > > &foo->bar is address arithmetic, not a dereference of foo. > Huawei engineers seem particularly prone to not knowing this. It isn't only Huawai people. David acked Gaosheng's patch and it snuck past me (again). People keep on getting tricked by this idiom and I think we'd be better off with some nicely named wrapper to help readers understand what's going on. > --- a/mm/ksm.c > +++ b/mm/ksm.c > @@ -2261,8 +2261,7 @@ static void cmp_and_merge_page(struct page *page, struct ksm_rmap_item *rmap_ite > > /* Start by searching for the folio in the stable tree */ > kfolio = stable_tree_search(page); > - if (!IS_ERR_OR_NULL(kfolio) && &kfolio->page == page && > - rmap_item->head == stable_node) { > + if (&kfolio->page == page && rmap_item->head == stable_node) { > folio_put(kfolio); > return; > } Linus has already asked us to avoid this "funky sh*t": https://lkml.kernel.org/r/CAHk-=wicaWSn3JLwpexH=gu1HoHWpecyWoLYBwD3qPd0-t9aJA@xxxxxxxxxxxxxx