diff options
author | Michal Hocko <mhocko@suse.com> | 2017-07-06 18:37:42 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2017-07-06 19:24:32 -0400 |
commit | bfe63d3beabfac93521c8b7ccd40befd7a90148e (patch) | |
tree | eb79c201a35ba6e0983eb913af8e707acab2c426 | |
parent | c8f9565716e37fe764a3007d90cecb35b3b4a77a (diff) |
mm: drop page_initialized check from get_nid_for_pfn
Commit c04fc586c1a4 ("mm: show node to memory section relationship with
symlinks in sysfs") has added means to export memblock<->node
association into the sysfs. It has also introduced get_nid_for_pfn
which is a rather confusing counterpart of pfn_to_nid which checks also
whether the pfn page is already initialized (page_initialized).
This is done by checking page::lru != NULL which doesn't make any sense
at all. Nothing in this path really relies on the lru list being used
or initialized. Just remove it because this will become a problem with
later patches.
Thanks to Reza Arbab for testing which revealed this to be a problem
(http://lkml.kernel.org/r/20170403202337.GA12482@dhcp22.suse.cz)
Link: http://lkml.kernel.org/r/20170515085827.16474-4-mhocko@kernel.org
Signed-off-by: Michal Hocko <mhocko@suse.com>
Acked-by: Vlastimil Babka <vbabka@suse.cz>
Cc: Reza Arbab <arbab@linux.vnet.ibm.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Andrea Arcangeli <aarcange@redhat.com>
Cc: Balbir Singh <bsingharora@gmail.com>
Cc: Dan Williams <dan.j.williams@intel.com>
Cc: Daniel Kiper <daniel.kiper@oracle.com>
Cc: David Rientjes <rientjes@google.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Igor Mammedov <imammedo@redhat.com>
Cc: Jerome Glisse <jglisse@redhat.com>
Cc: Joonsoo Kim <js1304@gmail.com>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Mel Gorman <mgorman@suse.de>
Cc: Tobias Regnery <tobias.regnery@gmail.com>
Cc: Toshi Kani <toshi.kani@hpe.com>
Cc: Vitaly Kuznetsov <vkuznets@redhat.com>
Cc: Xishi Qiu <qiuxishi@huawei.com>
Cc: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | drivers/base/node.c | 7 |
1 files changed, 0 insertions, 7 deletions
diff --git a/drivers/base/node.c b/drivers/base/node.c index 0440d95c9b5b..db769d3148b7 100644 --- a/drivers/base/node.c +++ b/drivers/base/node.c | |||
@@ -368,21 +368,14 @@ int unregister_cpu_under_node(unsigned int cpu, unsigned int nid) | |||
368 | } | 368 | } |
369 | 369 | ||
370 | #ifdef CONFIG_MEMORY_HOTPLUG_SPARSE | 370 | #ifdef CONFIG_MEMORY_HOTPLUG_SPARSE |
371 | #define page_initialized(page) (page->lru.next) | ||
372 | |||
373 | static int __ref get_nid_for_pfn(unsigned long pfn) | 371 | static int __ref get_nid_for_pfn(unsigned long pfn) |
374 | { | 372 | { |
375 | struct page *page; | ||
376 | |||
377 | if (!pfn_valid_within(pfn)) | 373 | if (!pfn_valid_within(pfn)) |
378 | return -1; | 374 | return -1; |
379 | #ifdef CONFIG_DEFERRED_STRUCT_PAGE_INIT | 375 | #ifdef CONFIG_DEFERRED_STRUCT_PAGE_INIT |
380 | if (system_state < SYSTEM_RUNNING) | 376 | if (system_state < SYSTEM_RUNNING) |
381 | return early_pfn_to_nid(pfn); | 377 | return early_pfn_to_nid(pfn); |
382 | #endif | 378 | #endif |
383 | page = pfn_to_page(pfn); | ||
384 | if (!page_initialized(page)) | ||
385 | return -1; | ||
386 | return pfn_to_nid(pfn); | 379 | return pfn_to_nid(pfn); |
387 | } | 380 | } |
388 | 381 | ||