Thread (4 messages) 4 messages, 2 authors, 2015-08-27

Re: [PATCH v2] mm/page_alloc: add a helper function to check page before alloc/free

From: Yaowei Bai <hidden>
Date: 2015-08-27 13:02:21
Also in: lkml

On Tue, Aug 25, 2015 at 04:03:22PM +0200, Michal Hocko wrote:
On Tue 25-08-15 21:26:30, Yaowei Bai wrote:
[...]
quoted
 static inline int check_new_page(struct page *page)
 {
-	const char *bad_reason = NULL;
-	unsigned long bad_flags = 0;
-
-	if (unlikely(page_mapcount(page)))
-		bad_reason = "nonzero mapcount";
-	if (unlikely(page->mapping != NULL))
-		bad_reason = "non-NULL mapping";
-	if (unlikely(atomic_read(&page->_count) != 0))
-		bad_reason = "nonzero _count";
-	if (unlikely(page->flags & __PG_HWPOISON)) {
-		bad_reason = "HWPoisoned (hardware-corrupted)";
-		bad_flags = __PG_HWPOISON;
-	}
You have removed this check AFAICS. Now looking at 39ad4f19671d ("mm:
check __PG_HWPOISON separately from PAGE_FLAGS_CHECK_AT_*") I am not
sure it is correct to check it in the free path as it was removed from
the mask by this commit.
I just refactored these two function and it looks well, will resend it soon.
quoted
-	if (unlikely(page->flags & PAGE_FLAGS_CHECK_AT_PREP)) {
-		bad_reason = "PAGE_FLAGS_CHECK_AT_PREP flag set";
-		bad_flags = PAGE_FLAGS_CHECK_AT_PREP;
-	}
-#ifdef CONFIG_MEMCG
-	if (unlikely(page->mem_cgroup))
-		bad_reason = "page still charged to cgroup";
-#endif
-	if (unlikely(bad_reason)) {
-		bad_page(page, bad_reason, bad_flags);
-		return 1;
-	}
-	return 0;
+	return check_one_page(page, PAGE_FLAGS_CHECK_AT_PREP);
 }
 
 static int prep_new_page(struct page *page, unsigned int order, gfp_t gfp_flags,
-- 
1.9.1
-- 
Michal Hocko
SUSE Labs
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help