[PATCH] migration_entry_wait fix.

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: KAMEZAWA Hiroyuki
Date: Tuesday, June 17, 2008 - 6:54 pm

On Wed, 18 Jun 2008 10:13:49 +0900
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> wrote:

This is obviously buggy....sorry..quilt refresh miss..

==
In speculative page cache lookup protocol, page_count(page) is set to 0
while radix-tree modification is going on, truncation, migration, etc...

While page migration, a page fault to page under migration should wait
unlock_page() and migration_entry_wait() waits for the page from its
pte entry. It does get_page() -> wait_on_page_locked() -> put_page() now.

In page migration, page_freeze_refs() -> page_unfreeze_refs() is called.

Here, page_unfreeze_refs() expects page_count(page) == 0 and panics
if page_count(page) != 0. To avoid this, we shouldn't touch page_count()
if it is zero. This patch uses page_cache_get_speculative() to avoid
the panic.

From: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
Signed-off-by: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
---
 mm/migrate.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Index: test-2.6.26-rc5-mm3/mm/migrate.c
===================================================================
--- test-2.6.26-rc5-mm3.orig/mm/migrate.c
+++ test-2.6.26-rc5-mm3/mm/migrate.c
@@ -243,7 +243,8 @@ void migration_entry_wait(struct mm_stru
 
 	page = migration_entry_to_page(entry);
 
-	get_page(page);
+	if (!page_cache_get_speculative(page))
+		goto out;
 	pte_unmap_unlock(ptep, ptl);
 	wait_on_page_locked(page);
 	put_page(page);

--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
2.6.26-rc5-mm3, Andrew Morton, (Wed Jun 11, 10:59 pm)
2.6.26-rc5-mm3: kernel BUG at mm/vmscan.c:510, Alexey Dobriyan, (Thu Jun 12, 12:58 am)
Re: 2.6.26-rc5-mm3: kernel BUG at mm/vmscan.c:510, Andrew Morton, (Thu Jun 12, 1:22 am)
Re: 2.6.26-rc5-mm3: kernel BUG at mm/vmscan.c:510, Alexey Dobriyan, (Thu Jun 12, 1:23 am)
[BUG] 2.6.26-rc5-mm3 kernel BUG at mm/filemap.c:575!, Kamalesh Babulal, (Thu Jun 12, 1:44 am)
Re: [BUG] 2.6.26-rc5-mm3 kernel BUG at mm/filemap.c:575!, Andrew Morton, (Thu Jun 12, 1:57 am)
Re: [BUG] 2.6.26-rc5-mm3 kernel BUG at mm/filemap.c:575!, KAMEZAWA Hiroyuki, (Thu Jun 12, 4:20 am)
Re: 2.6.26-rc5-mm3, Byron Bradley, (Thu Jun 12, 4:32 pm)
Re: 2.6.26-rc5-mm3, Daniel Walker, (Thu Jun 12, 4:55 pm)
Re: 2.6.26-rc5-mm3, Byron Bradley, (Thu Jun 12, 5:04 pm)
Re: [BUG] 2.6.26-rc5-mm3 kernel BUG at mm/filemap.c:575!, KAMEZAWA Hiroyuki, (Thu Jun 12, 5:25 pm)
[PATCH] fix double unlock_page() in 2.6.26-rc5-mm3 kernel ..., KAMEZAWA Hiroyuki, (Thu Jun 12, 6:44 pm)
Re: [BUG] 2.6.26-rc5-mm3 kernel BUG at mm/filemap.c:575!, Valdis.Kletnieks, (Thu Jun 12, 9:18 pm)
Re: [BUG] 2.6.26-rc5-mm3 kernel BUG at mm/filemap.c:575!, Andrew Morton, (Fri Jun 13, 12:16 am)
Re: [PATCH] fix double unlock_page() in 2.6.26-rc5-mm3 ker ..., KAMEZAWA Hiroyuki, (Mon Jun 16, 7:32 pm)
[PATCH][RFC] fix kernel BUG at mm/migrate.c:719! in 2.6.26 ..., Daisuke Nishimura, (Tue Jun 17, 12:35 am)
[Bad page] trying to free locked page? (Re: [PATCH][RFC] f ..., Daisuke Nishimura, (Tue Jun 17, 12:47 am)
Re: [Bad page] trying to free locked page? (Re: [PATCH][RF ..., KAMEZAWA Hiroyuki, (Tue Jun 17, 2:03 am)
Re: [Bad page] trying to free locked page? (Re: [PATCH][RF ..., Daisuke Nishimura, (Tue Jun 17, 2:15 am)
Re: [PATCH][RFC] fix kernel BUG at mm/migrate.c:719! in 2. ..., Lee Schermerhorn, (Tue Jun 17, 10:46 am)
Re: [Bad page] trying to free locked page? (Re: [PATCH][RF ..., Lee Schermerhorn, (Tue Jun 17, 11:29 am)
Re: [PATCH][RFC] fix kernel BUG at mm/migrate.c:719! in 2. ..., Lee Schermerhorn, (Tue Jun 17, 12:28 pm)
[PATCH] unevictable mlocked pages: initialize mm member o ..., Lee Schermerhorn, (Tue Jun 17, 1:00 pm)
Re: [PATCH][RFC] fix kernel BUG at mm/migrate.c:719! in 2. ..., KAMEZAWA Hiroyuki, (Tue Jun 17, 6:13 pm)
Re: [PATCH][RFC] fix kernel BUG at mm/migrate.c:719! in 2. ..., Daisuke Nishimura, (Tue Jun 17, 6:26 pm)
Re: [PATCH][RFC] fix kernel BUG at mm/migrate.c:719! in 2. ..., Daisuke Nishimura, (Tue Jun 17, 6:54 pm)
[PATCH] migration_entry_wait fix., KAMEZAWA Hiroyuki, (Tue Jun 17, 6:54 pm)
Re: [Bad page] trying to free locked page? (Re: [PATCH][RF ..., Daisuke Nishimura, (Tue Jun 17, 7:32 pm)
Re: [Bad page] trying to free locked page? (Re: [PATCH][RF ..., Daisuke Nishimura, (Tue Jun 17, 7:40 pm)
Re: [PATCH][RFC] fix kernel BUG at mm/migrate.c:719! in 2. ..., Daisuke Nishimura, (Tue Jun 17, 7:59 pm)
Re: [PATCH][RFC] fix kernel BUG at mm/migrate.c:719! in 2. ..., Daisuke Nishimura, (Tue Jun 17, 9:41 pm)
Re: [PATCH][RFC] fix kernel BUG at mm/migrate.c:719! in 2. ..., KAMEZAWA Hiroyuki, (Tue Jun 17, 9:59 pm)
Re: [PATCH] migration_entry_wait fix., KOSAKI Motohiro, (Tue Jun 17, 10:26 pm)
Re: [PATCH] migration_entry_wait fix., Nick Piggin, (Tue Jun 17, 10:35 pm)
Re: [PATCH] migration_entry_wait fix., KAMEZAWA Hiroyuki, (Tue Jun 17, 11:04 pm)
Re: [PATCH] migration_entry_wait fix., Nick Piggin, (Tue Jun 17, 11:42 pm)
Re: [PATCH] migration_entry_wait fix., KAMEZAWA Hiroyuki, (Tue Jun 17, 11:52 pm)
Re: [PATCH -mm][BUGFIX] migration_entry_wait fix. v2, KOSAKI Motohiro, (Wed Jun 18, 12:26 am)
[PATCH -mm][BUGFIX] migration_entry_wait fix. v2, KAMEZAWA Hiroyuki, (Wed Jun 18, 12:29 am)
Re: [PATCH -mm][BUGFIX] migration_entry_wait fix. v2, Nick Piggin, (Wed Jun 18, 12:40 am)
[PATCH][-mm] remove redundant page-&gt;mapping check, KOSAKI Motohiro, (Wed Jun 18, 12:54 am)
[Experimental][PATCH] putback_lru_page rework, KAMEZAWA Hiroyuki, (Wed Jun 18, 2:40 am)
Re: [Experimental][PATCH] putback_lru_page rework, KOSAKI Motohiro, (Wed Jun 18, 4:36 am)
Re: [Experimental][PATCH] putback_lru_page rework, KAMEZAWA Hiroyuki, (Wed Jun 18, 4:55 am)
Re: [Experimental][PATCH] putback_lru_page rework, Daisuke Nishimura, (Wed Jun 18, 7:50 am)
Re: 2.6.26-rc5-mm3, Daniel Walker, (Wed Jun 18, 10:55 am)
Re: [Experimental][PATCH] putback_lru_page rework, Lee Schermerhorn, (Wed Jun 18, 11:21 am)
Re: [Experimental][PATCH] putback_lru_page rework, KAMEZAWA Hiroyuki, (Wed Jun 18, 5:22 pm)
[BUG][PATCH -mm] avoid BUG() in __stop_machine_run(), Hidehiro Kawai, (Wed Jun 18, 11:59 pm)
Re: [Experimental][PATCH] putback_lru_page rework, Daisuke Nishimura, (Thu Jun 19, 1:00 am)
Re: [Experimental][PATCH] putback_lru_page rework, KAMEZAWA Hiroyuki, (Thu Jun 19, 1:24 am)
Re: 2.6.26-rc5-mm3, Ingo Molnar, (Thu Jun 19, 2:13 am)
Re: [BUG][PATCH -mm] avoid BUG() in __stop_machine_run(), Rusty Russell, (Thu Jun 19, 3:12 am)
Re: 2.6.26-rc5-mm3, Daniel Walker, (Thu Jun 19, 7:39 am)
Re: [Experimental][PATCH] putback_lru_page rework, Lee Schermerhorn, (Thu Jun 19, 7:45 am)
Re: Re: [Experimental][PATCH] putback_lru_page rework, kamezawa.hiroyu, (Thu Jun 19, 8:32 am)
Re: [BUG][PATCH -mm] avoid BUG() in __stop_machine_run(), Jeremy Fitzhardinge, (Thu Jun 19, 8:51 am)
Re: 2.6.26-rc5-mm3: BUG large value for HugePages_Rsvd, Jon Tollefson, (Thu Jun 19, 9:27 am)
Re: 2.6.26-rc5-mm3: BUG large value for HugePages_Rsvd, Andy Whitcroft, (Thu Jun 19, 10:16 am)
Re: [Experimental][PATCH] putback_lru_page rework, KAMEZAWA Hiroyuki, (Thu Jun 19, 5:47 pm)
Re: [Experimental][PATCH] putback_lru_page rework, KAMEZAWA Hiroyuki, (Thu Jun 19, 6:13 pm)
Re: 2.6.26-rc5-mm3: BUG large value for HugePages_Rsvd, Jon Tollefson, (Thu Jun 19, 8:18 pm)
Re: Re: [Experimental][PATCH] putback_lru_page rework, Lee Schermerhorn, (Fri Jun 20, 9:24 am)
Re: [Experimental][PATCH] putback_lru_page rework, Lee Schermerhorn, (Fri Jun 20, 10:10 am)
Re: [Experimental][PATCH] putback_lru_page rework, Lee Schermerhorn, (Fri Jun 20, 1:41 pm)
Re: [Experimental][PATCH] putback_lru_page rework, KOSAKI Motohiro, (Sat Jun 21, 1:39 am)
Re: [Experimental][PATCH] putback_lru_page rework, KOSAKI Motohiro, (Sat Jun 21, 1:41 am)
Re: [Experimental][PATCH] putback_lru_page rework, KOSAKI Motohiro, (Sat Jun 21, 1:56 am)
Re: [Experimental][PATCH] putback_lru_page rework, KAMEZAWA Hiroyuki, (Sun Jun 22, 5:30 pm)
Re: [BUG][PATCH -mm] avoid BUG() in __stop_machine_run(), Rusty Russell, (Sun Jun 22, 8:55 pm)