* + mmhwpoison-double-check-page-count-in-__get_any_page.patch added to -mm tree
@ 2020-09-22 17:00 akpm
0 siblings, 0 replies; 3+ messages in thread
From: akpm @ 2020-09-22 17:00 UTC (permalink / raw)
To: mm-commits, zeil, tony.luck, osalvador, mike.kravetz, mhocko,
david, dave.hansen, cai, aris, aneesh.kumar, aneesh.kumar,
naoya.horiguchi
The patch titled
Subject: mm,hwpoison: double-check page count in __get_any_page()
has been added to the -mm tree. Its filename is
mmhwpoison-double-check-page-count-in-__get_any_page.patch
This patch should soon appear at
https://ozlabs.org/~akpm/mmots/broken-out/mmhwpoison-double-check-page-count-in-__get_any_page.patch
and later at
https://ozlabs.org/~akpm/mmotm/broken-out/mmhwpoison-double-check-page-count-in-__get_any_page.patch
Before you just go and hit "reply", please:
a) Consider who else should be cc'ed
b) Prefer to cc a suitable mailing list as well
c) Ideally: find the original patch on the mailing list and do a
reply-to-all to that, adding suitable additional cc's
*** Remember to use Documentation/process/submit-checklist.rst when testing your code ***
The -mm tree is included into linux-next and is updated
there every 3-4 working days
------------------------------------------------------
From: Naoya Horiguchi <naoya.horiguchi@nec.com>
Subject: mm,hwpoison: double-check page count in __get_any_page()
Soft offlining could fail with EIO due to the race condition with hugepage
migration. This issuse became visible due to the change by previous patch
that makes soft offline handler take page refcount by its own. We have no
way to directly pin zero refcount page, and the page considered as a zero
refcount page could be allocated just after the first check.
This patch adds the second check to find the race and gives us chance to
handle it more reliably.
Link: https://lkml.kernel.org/r/20200922135650.1634-14-osalvador@suse.de
Signed-off-by: Naoya Horiguchi <naoya.horiguchi@nec.com>
Reported-by: Qian Cai <cai@lca.pw>
Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com>
Cc: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Cc: Aristeu Rozanski <aris@ruivo.org>
Cc: Dave Hansen <dave.hansen@intel.com>
Cc: David Hildenbrand <david@redhat.com>
Cc: Dmitry Yakunin <zeil@yandex-team.ru>
Cc: Michal Hocko <mhocko@kernel.org>
Cc: Mike Kravetz <mike.kravetz@oracle.com>
Cc: Oscar Salvador <osalvador@suse.com>
Cc: Tony Luck <tony.luck@intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
mm/memory-failure.c | 6 ++++++
1 file changed, 6 insertions(+)
--- a/mm/memory-failure.c~mmhwpoison-double-check-page-count-in-__get_any_page
+++ a/mm/memory-failure.c
@@ -1707,6 +1707,9 @@ static int __get_any_page(struct page *p
} else if (is_free_buddy_page(p)) {
pr_info("%s: %#lx free buddy page\n", __func__, pfn);
ret = 0;
+ } else if (page_count(p)) {
+ /* raced with allocation */
+ ret = -EBUSY;
} else {
pr_info("%s: %#lx: unknown zero refcount page type %lx\n",
__func__, pfn, p->flags);
@@ -1723,6 +1726,9 @@ static int get_any_page(struct page *pag
{
int ret = __get_any_page(page, pfn, flags);
+ if (ret == -EBUSY)
+ ret = __get_any_page(page, pfn, flags);
+
if (ret == 1 && !PageHuge(page) &&
!PageLRU(page) && !__PageMovable(page)) {
/*
_
Patches currently in -mm which might be from naoya.horiguchi@nec.com are
mmhwpoison-cleanup-unused-pagehuge-check.patch
mm-hwpoison-remove-recalculating-hpage.patch
mmhwpoison-inject-dont-pin-for-hwpoison_filter.patch
mmhwpoison-introduce-mf_msg_unsplit_thp.patch
mmhwpoison-double-check-page-count-in-__get_any_page.patch
^ permalink raw reply [flat|nested] 3+ messages in thread
* + mmhwpoison-double-check-page-count-in-__get_any_page.patch added to -mm tree
@ 2020-08-07 1:07 akpm
0 siblings, 0 replies; 3+ messages in thread
From: akpm @ 2020-08-07 1:07 UTC (permalink / raw)
To: aneesh.kumar, aneesh.kumar, cai, dave.hansen, david, mhocko,
mike.kravetz, mm-commits, naoya.horiguchi, osalvador, tony.luck,
zeil
The patch titled
Subject: mm,hwpoison: double-check page count in __get_any_page()
has been added to the -mm tree. Its filename is
mmhwpoison-double-check-page-count-in-__get_any_page.patch
This patch should soon appear at
http://ozlabs.org/~akpm/mmots/broken-out/mmhwpoison-double-check-page-count-in-__get_any_page.patch
and later at
http://ozlabs.org/~akpm/mmotm/broken-out/mmhwpoison-double-check-page-count-in-__get_any_page.patch
Before you just go and hit "reply", please:
a) Consider who else should be cc'ed
b) Prefer to cc a suitable mailing list as well
c) Ideally: find the original patch on the mailing list and do a
reply-to-all to that, adding suitable additional cc's
*** Remember to use Documentation/process/submit-checklist.rst when testing your code ***
The -mm tree is included into linux-next and is updated
there every 3-4 working days
------------------------------------------------------
From: Naoya Horiguchi <naoya.horiguchi@nec.com>
Subject: mm,hwpoison: double-check page count in __get_any_page()
Soft offlining could fail with EIO due to the race condition with hugepage
migration. This issuse became visible due to the change by previous patch
that makes soft offline handler take page refcount by its own. We have no
way to directly pin zero refcount page, and the page considered as a zero
refcount page could be allocated just after the first check.
This patch adds the second check to find the race and gives us chance to
handle it more reliably.
Link: http://lkml.kernel.org/r/20200806184923.7007-13-nao.horiguchi@gmail.com
Signed-off-by: Naoya Horiguchi <naoya.horiguchi@nec.com>
Reported-by: Qian Cai <cai@lca.pw>
Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com>
Cc: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Cc: Dave Hansen <dave.hansen@intel.com>
Cc: David Hildenbrand <david@redhat.com>
Cc: Dmitry Yakunin <zeil@yandex-team.ru>
Cc: Michal Hocko <mhocko@kernel.org>
Cc: Mike Kravetz <mike.kravetz@oracle.com>
Cc: Oscar Salvador <osalvador@suse.com>
Cc: Tony Luck <tony.luck@intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
mm/memory-failure.c | 6 ++++++
1 file changed, 6 insertions(+)
--- a/mm/memory-failure.c~mmhwpoison-double-check-page-count-in-__get_any_page
+++ a/mm/memory-failure.c
@@ -1707,6 +1707,9 @@ static int __get_any_page(struct page *p
} else if (is_free_buddy_page(p)) {
pr_info("%s: %#lx free buddy page\n", __func__, pfn);
ret = 0;
+ } else if (page_count(p)) {
+ /* raced with allocation */
+ ret = -EBUSY;
} else {
pr_info("%s: %#lx: unknown zero refcount page type %lx\n",
__func__, pfn, p->flags);
@@ -1723,6 +1726,9 @@ static int get_any_page(struct page *pag
{
int ret = __get_any_page(page, pfn, flags);
+ if (ret == -EBUSY)
+ ret = __get_any_page(page, pfn, flags);
+
if (ret == 1 && !PageHuge(page) &&
!PageLRU(page) && !__PageMovable(page)) {
/*
_
Patches currently in -mm which might be from naoya.horiguchi@nec.com are
mmhwpoison-cleanup-unused-pagehuge-check.patch
mm-hwpoison-remove-recalculating-hpage.patch
mmhwpoison-inject-dont-pin-for-hwpoison_filter.patch
mmhwpoison-introduce-mf_msg_unsplit_thp.patch
mmhwpoison-double-check-page-count-in-__get_any_page.patch
^ permalink raw reply [flat|nested] 3+ messages in thread
* incoming
@ 2020-07-24 4:14 Andrew Morton
2020-07-31 20:06 ` + mmhwpoison-double-check-page-count-in-__get_any_page.patch added to -mm tree Andrew Morton
0 siblings, 1 reply; 3+ messages in thread
From: Andrew Morton @ 2020-07-24 4:14 UTC (permalink / raw)
To: Linus Torvalds; +Cc: mm-commits, linux-mm
15 patches, based on f37e99aca03f63aa3f2bd13ceaf769455d12c4b0.
Subsystems affected by this patch series:
mm/pagemap
mm/shmem
mm/hotfixes
mm/memcg
mm/hugetlb
mailmap
squashfs
scripts
io-mapping
MAINTAINERS
gdb
Subsystem: mm/pagemap
Yang Shi <yang.shi@linux.alibaba.com>:
mm/memory.c: avoid access flag update TLB flush for retried page fault
"Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>:
mm/mmap.c: close race between munmap() and expand_upwards()/downwards()
Subsystem: mm/shmem
Chengguang Xu <cgxu519@mykernel.net>:
vfs/xattr: mm/shmem: kernfs: release simple xattr entry in a right way
Subsystem: mm/hotfixes
Tom Rix <trix@redhat.com>:
mm: initialize return of vm_insert_pages
Bhupesh Sharma <bhsharma@redhat.com>:
mm/memcontrol: fix OOPS inside mem_cgroup_get_nr_swap_pages()
Subsystem: mm/memcg
Hugh Dickins <hughd@google.com>:
mm/memcg: fix refcount error while moving and swapping
Muchun Song <songmuchun@bytedance.com>:
mm: memcg/slab: fix memory leak at non-root kmem_cache destroy
Subsystem: mm/hugetlb
Barry Song <song.bao.hua@hisilicon.com>:
mm/hugetlb: avoid hardcoding while checking if cma is enabled
"Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>:
khugepaged: fix null-pointer dereference due to race
Subsystem: mailmap
Mike Rapoport <rppt@linux.ibm.com>:
mailmap: add entry for Mike Rapoport
Subsystem: squashfs
Phillip Lougher <phillip@squashfs.org.uk>:
squashfs: fix length field overlap check in metadata reading
Subsystem: scripts
Pi-Hsun Shih <pihsun@chromium.org>:
scripts/decode_stacktrace: strip basepath from all paths
Subsystem: io-mapping
"Michael J. Ruhl" <michael.j.ruhl@intel.com>:
io-mapping: indicate mapping failure
Subsystem: MAINTAINERS
Andrey Konovalov <andreyknvl@google.com>:
MAINTAINERS: add KCOV section
Subsystem: gdb
Stefano Garzarella <sgarzare@redhat.com>:
scripts/gdb: fix lx-symbols 'gdb.error' while loading modules
.mailmap | 3 +++
MAINTAINERS | 11 +++++++++++
fs/squashfs/block.c | 2 +-
include/linux/io-mapping.h | 5 ++++-
include/linux/xattr.h | 3 ++-
mm/hugetlb.c | 15 ++++++++++-----
mm/khugepaged.c | 3 +++
mm/memcontrol.c | 13 ++++++++++---
mm/memory.c | 9 +++++++--
mm/mmap.c | 16 ++++++++++++++--
mm/shmem.c | 2 +-
mm/slab_common.c | 35 ++++++++++++++++++++++++++++-------
scripts/decode_stacktrace.sh | 4 ++--
scripts/gdb/linux/symbols.py | 2 +-
14 files changed, 97 insertions(+), 26 deletions(-)
^ permalink raw reply [flat|nested] 3+ messages in thread
* + mmhwpoison-double-check-page-count-in-__get_any_page.patch added to -mm tree
2020-07-24 4:14 incoming Andrew Morton
@ 2020-07-31 20:06 ` Andrew Morton
0 siblings, 0 replies; 3+ messages in thread
From: Andrew Morton @ 2020-07-31 20:06 UTC (permalink / raw)
To: aneesh.kumar, aneesh.kumar, cai, dave.hansen, david, mhocko,
mike.kravetz, mm-commits, n-horiguchi, naoya.horiguchi,
osalvador, osalvador, tony.luck, zeil
The patch titled
Subject: mm,hwpoison: double-check page count in __get_any_page()
has been added to the -mm tree. Its filename is
mmhwpoison-double-check-page-count-in-__get_any_page.patch
This patch should soon appear at
http://ozlabs.org/~akpm/mmots/broken-out/mmhwpoison-double-check-page-count-in-__get_any_page.patch
and later at
http://ozlabs.org/~akpm/mmotm/broken-out/mmhwpoison-double-check-page-count-in-__get_any_page.patch
Before you just go and hit "reply", please:
a) Consider who else should be cc'ed
b) Prefer to cc a suitable mailing list as well
c) Ideally: find the original patch on the mailing list and do a
reply-to-all to that, adding suitable additional cc's
*** Remember to use Documentation/process/submit-checklist.rst when testing your code ***
The -mm tree is included into linux-next and is updated
there every 3-4 working days
------------------------------------------------------
From: Naoya Horiguchi <naoya.horiguchi@nec.com>
Subject: mm,hwpoison: double-check page count in __get_any_page()
Soft offlining could fail with EIO due to the race condition with hugepage
migration. This issuse became visible due to the change by previous patch
that makes soft offline handler take page refcount by its own. We have no
way to directly pin zero refcount page, and the page considered as a zero
refcount page could be allocated just after the first check.
This patch adds the second check to find the race and gives us chance to
handle it more reliably.
Link: http://lkml.kernel.org/r/20200731122112.11263-17-nao.horiguchi@gmail.com
Signed-off-by: Naoya Horiguchi <naoya.horiguchi@nec.com>
Reported-by: Qian Cai <cai@lca.pw>
Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com>
Cc: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Cc: Dave Hansen <dave.hansen@intel.com>
Cc: David Hildenbrand <david@redhat.com>
Cc: Dmitry Yakunin <zeil@yandex-team.ru>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Mike Kravetz <mike.kravetz@oracle.com>
Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
Cc: Oscar Salvador <osalvador@suse.com>
Cc: Oscar Salvador <osalvador@suse.de>
Cc: Tony Luck <tony.luck@intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
mm/memory-failure.c | 6 ++++++
1 file changed, 6 insertions(+)
--- a/mm/memory-failure.c~mmhwpoison-double-check-page-count-in-__get_any_page
+++ a/mm/memory-failure.c
@@ -1701,6 +1701,9 @@ static int __get_any_page(struct page *p
} else if (is_free_buddy_page(p)) {
pr_info("%s: %#lx free buddy page\n", __func__, pfn);
ret = 0;
+ } else if (page_count(p)) {
+ /* raced with allocation */
+ ret = -EBUSY;
} else {
pr_info("%s: %#lx: unknown zero refcount page type %lx\n",
__func__, pfn, p->flags);
@@ -1717,6 +1720,9 @@ static int get_any_page(struct page *pag
{
int ret = __get_any_page(page, pfn);
+ if (ret == -EBUSY)
+ ret = __get_any_page(page, pfn);
+
if (ret == 1 && !PageHuge(page) &&
!PageLRU(page) && !__PageMovable(page)) {
/*
_
Patches currently in -mm which might be from naoya.horiguchi@nec.com are
mmhwpoison-cleanup-unused-pagehuge-check.patch
mm-hwpoison-remove-recalculating-hpage.patch
mmmadvise-call-soft_offline_page-without-mf_count_increased.patch
mmhwpoison-inject-dont-pin-for-hwpoison_filter.patch
mmhwpoison-remove-mf_count_increased.patch
mmhwpoison-remove-flag-argument-from-soft-offline-functions.patch
mmhwpoison-introduce-mf_msg_unsplit_thp.patch
mmhwpoison-double-check-page-count-in-__get_any_page.patch
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2020-09-22 17:00 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-22 17:00 + mmhwpoison-double-check-page-count-in-__get_any_page.patch added to -mm tree akpm
-- strict thread matches above, loose matches on Subject: below --
2020-08-07 1:07 akpm
2020-07-24 4:14 incoming Andrew Morton
2020-07-31 20:06 ` + mmhwpoison-double-check-page-count-in-__get_any_page.patch added to -mm tree Andrew Morton
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).