Message ID | 20220408135323.1559401-4-naoya.horiguchi@linux.dev (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | mm/hwpoison: fix race between hugetlb free/demotion and memory_failure_hugetlb() | expand |
On 2022/4/8 21:53, Naoya Horiguchi wrote: > From: Naoya Horiguchi <naoya.horiguchi@nec.com> > > Reverts commit 888af2701db7 ("mm/memory-failure.c: fix race with > changing page compound again") because now we fetch the page refcount > under hugetlb_lock in try_memory_failure_hugetlb() so that the race > check is no longer necessary. > Thanks a lot. Reviewed-by: Miaohe Lin <linmiaohe@huawei.com> > Suggested-by: Miaohe Lin <linmiaohe@huawei.com> > Signed-off-by: Naoya Horiguchi <naoya.horiguchi@nec.com> > --- > include/linux/mm.h | 1 - > include/ras/ras_event.h | 1 - > mm/memory-failure.c | 11 ----------- > 3 files changed, 13 deletions(-) > > diff --git a/include/linux/mm.h b/include/linux/mm.h > index 9f44254af8ce..d446e834a3e5 100644 > --- a/include/linux/mm.h > +++ b/include/linux/mm.h > @@ -3251,7 +3251,6 @@ enum mf_action_page_type { > MF_MSG_BUDDY, > MF_MSG_DAX, > MF_MSG_UNSPLIT_THP, > - MF_MSG_DIFFERENT_PAGE_SIZE, > MF_MSG_UNKNOWN, > }; > > diff --git a/include/ras/ras_event.h b/include/ras/ras_event.h > index 1e694fd239b9..d0337a41141c 100644 > --- a/include/ras/ras_event.h > +++ b/include/ras/ras_event.h > @@ -374,7 +374,6 @@ TRACE_EVENT(aer_event, > EM ( MF_MSG_BUDDY, "free buddy page" ) \ > EM ( MF_MSG_DAX, "dax page" ) \ > EM ( MF_MSG_UNSPLIT_THP, "unsplit thp" ) \ > - EM ( MF_MSG_DIFFERENT_PAGE_SIZE, "different page size" ) \ > EMe ( MF_MSG_UNKNOWN, "unknown page" ) > > /* > diff --git a/mm/memory-failure.c b/mm/memory-failure.c > index b2e32cdc3823..e2674532678b 100644 > --- a/mm/memory-failure.c > +++ b/mm/memory-failure.c > @@ -733,7 +733,6 @@ static const char * const action_page_types[] = { > [MF_MSG_BUDDY] = "free buddy page", > [MF_MSG_DAX] = "dax page", > [MF_MSG_UNSPLIT_THP] = "unsplit thp", > - [MF_MSG_DIFFERENT_PAGE_SIZE] = "different page size", > [MF_MSG_UNKNOWN] = "unknown page", > }; > > @@ -1605,16 +1604,6 @@ static int try_memory_failure_hugetlb(unsigned long pfn, int flags, int *hugetlb > return res == MF_RECOVERED ? 0 : -EBUSY; > } > > - /* > - * The page could have changed compound pages due to race window. > - * If this happens just bail out. > - */ > - if (!PageHuge(p) || compound_head(p) != head) { > - action_result(pfn, MF_MSG_DIFFERENT_PAGE_SIZE, MF_IGNORED); > - res = -EBUSY; > - goto out; > - } > - > page_flags = head->flags; > > /* >
On 4/8/22 06:53, Naoya Horiguchi wrote: > From: Naoya Horiguchi <naoya.horiguchi@nec.com> > > Reverts commit 888af2701db7 ("mm/memory-failure.c: fix race with > changing page compound again") because now we fetch the page refcount > under hugetlb_lock in try_memory_failure_hugetlb() so that the race > check is no longer necessary. > > Suggested-by: Miaohe Lin <linmiaohe@huawei.com> > Signed-off-by: Naoya Horiguchi <naoya.horiguchi@nec.com> > --- > include/linux/mm.h | 1 - > include/ras/ras_event.h | 1 - > mm/memory-failure.c | 11 ----------- > 3 files changed, 13 deletions(-) Thanks! Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com>
diff --git a/include/linux/mm.h b/include/linux/mm.h index 9f44254af8ce..d446e834a3e5 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -3251,7 +3251,6 @@ enum mf_action_page_type { MF_MSG_BUDDY, MF_MSG_DAX, MF_MSG_UNSPLIT_THP, - MF_MSG_DIFFERENT_PAGE_SIZE, MF_MSG_UNKNOWN, }; diff --git a/include/ras/ras_event.h b/include/ras/ras_event.h index 1e694fd239b9..d0337a41141c 100644 --- a/include/ras/ras_event.h +++ b/include/ras/ras_event.h @@ -374,7 +374,6 @@ TRACE_EVENT(aer_event, EM ( MF_MSG_BUDDY, "free buddy page" ) \ EM ( MF_MSG_DAX, "dax page" ) \ EM ( MF_MSG_UNSPLIT_THP, "unsplit thp" ) \ - EM ( MF_MSG_DIFFERENT_PAGE_SIZE, "different page size" ) \ EMe ( MF_MSG_UNKNOWN, "unknown page" ) /* diff --git a/mm/memory-failure.c b/mm/memory-failure.c index b2e32cdc3823..e2674532678b 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c @@ -733,7 +733,6 @@ static const char * const action_page_types[] = { [MF_MSG_BUDDY] = "free buddy page", [MF_MSG_DAX] = "dax page", [MF_MSG_UNSPLIT_THP] = "unsplit thp", - [MF_MSG_DIFFERENT_PAGE_SIZE] = "different page size", [MF_MSG_UNKNOWN] = "unknown page", }; @@ -1605,16 +1604,6 @@ static int try_memory_failure_hugetlb(unsigned long pfn, int flags, int *hugetlb return res == MF_RECOVERED ? 0 : -EBUSY; } - /* - * The page could have changed compound pages due to race window. - * If this happens just bail out. - */ - if (!PageHuge(p) || compound_head(p) != head) { - action_result(pfn, MF_MSG_DIFFERENT_PAGE_SIZE, MF_IGNORED); - res = -EBUSY; - goto out; - } - page_flags = head->flags; /*