On Fri, Nov 25, 2022 at 02:54:44PM +0800, Wupeng Ma wrote: > From: Ma Wupeng <mawupeng1@xxxxxxxxxx> > > If freeit it true, the value of ret must be zero, there is no need to > check the value of freeit after label unlock_mutex. > > We can drop variable freeit to do this cleanup. > > Signed-off-by: Ma Wupeng <mawupeng1@xxxxxxxxxx> Hi Wupeng, > --- > mm/memory-failure.c | 6 ++---- > 1 file changed, 2 insertions(+), 4 deletions(-) > > diff --git a/mm/memory-failure.c b/mm/memory-failure.c > index 2e62940c7bae..c77a9e37e27e 100644 > --- a/mm/memory-failure.c > +++ b/mm/memory-failure.c > @@ -2338,7 +2338,6 @@ int unpoison_memory(unsigned long pfn) > struct page *page; > struct page *p; > int ret = -EBUSY; > - int freeit = 0; > unsigned long count = 1; > bool huge = false; > static DEFINE_RATELIMIT_STATE(unpoison_rs, DEFAULT_RATELIMIT_INTERVAL, > @@ -2413,10 +2412,9 @@ int unpoison_memory(unsigned long pfn) > goto unlock_mutex; > } > } > - freeit = !!TestClearPageHWPoison(p); > > put_page(page); > - if (freeit) { > + if (TestClearPageHWPoison(p)) { This reorders put_page() and TestClearPageHWPoison(), but when we run into this else block, the target page or hugepage should have refcount > 1, so it does not cause any behavioral change. So I'm fine with it. Looks good to me. Thank you for the patch. Acked-by: Naoya Horiguchi <naoya.horiguchi@xxxxxxx> > put_page(page); > ret = 0; > } > @@ -2424,7 +2422,7 @@ int unpoison_memory(unsigned long pfn) > > unlock_mutex: > mutex_unlock(&mf_mutex); > - if (!ret || freeit) { > + if (!ret) { > if (!huge) > num_poisoned_pages_sub(pfn, 1); > unpoison_pr_info("Unpoison: Software-unpoisoned page %#lx\n", > -- > 2.25.1