All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mel Gorman <mel@csn.ul.ie>
To: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Minchan Kim <minchan.kim@gmail.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Andrea Arcangeli <aarcange@redhat.com>,
	Christoph Lameter <cl@linux-foundation.org>,
	Adam Litke <agl@us.ibm.com>, Avi Kivity <avi@redhat.com>,
	David Rientjes <rientjes@google.com>,
	KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
	Rik van Riel <riel@redhat.com>,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org
Subject: Re: [PATCH 02/11] mm,migration: Do not try to migrate unmapped anonymous pages
Date: Wed, 17 Mar 2010 12:07:35 +0000	[thread overview]
Message-ID: <20100317120734.GH12388@csn.ul.ie> (raw)
In-Reply-To: <20100317111234.d224f3fd.kamezawa.hiroyu@jp.fujitsu.com>

On Wed, Mar 17, 2010 at 11:12:34AM +0900, KAMEZAWA Hiroyuki wrote:
> On Tue, 16 Mar 2010 08:49:34 +0900
> KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> wrote:
> 
> > On Mon, 15 Mar 2010 14:21:24 +0000
> > Mel Gorman <mel@csn.ul.ie> wrote:
> > 
> > > On Mon, Mar 15, 2010 at 09:48:49PM +0900, Minchan Kim wrote:
> > > > On Mon, 2010-03-15 at 11:28 +0000, Mel Gorman wrote:
> > > > > The use after free looks like
> > > > > 
> > > > > 1. page_mapcount(page) was zero so anon_vma was no longer reliable
> > > > > 2. rcu lock taken but the anon_vma at this point can already be garbage because the
> > > > >    process exited
> > > > > 3. call try_to_unmap, looks up tha anon_vma and locks it. This causes problems
> > > > > 
> > > > > I thought the race would be closed but there is still a very tiny window there all
> > > > > right. The following alternative should close it. What do you think?
> > > > > 
> > > > >         if (PageAnon(page)) {
> > > > > 		rcu_read_lock();
> > > > > 
> > > > >                 /*
> > > > >                  * If the page has no mappings any more, just bail. An
> > > > >                  * unmapped anon page is likely to be freed soon but worse,
> > > > >                  * it's possible its anon_vma disappeared between when
> > > > >                  * the page was isolated and when we reached here while
> > > > >                  * the RCU lock was not held
> > > > >                  */
> > > > >                 if (!page_mapcount(page)) {
> > > > > 			rcu_read_unlock();
> > > > >                         goto uncharge;
> > > > > 		}
> > > > > 
> > > > >                 rcu_locked = 1;
> > > > >                 anon_vma = page_anon_vma(page);
> > > > >                 atomic_inc(&anon_vma->external_refcount);
> > > > >         }
> > > > > 
> > > > > The rcu_unlock label is not used here because the reference counts were not taken in
> > > > > the case where page_mapcount == 0.
> > > > > 
> > > > 
> > > > Please, repost above code with your use-after-free scenario comment.
> > > > 
> > > 
> > > This will be the replacement patch so.
> > > 
> > > ==== CUT HERE ====
> > > mm,migration: Do not try to migrate unmapped anonymous pages
> > > 
> > > rmap_walk_anon() was triggering errors in memory compaction that look like
> > > use-after-free errors. The problem is that between the page being isolated
> > > from the LRU and rcu_read_lock() being taken, the mapcount of the page
> > > dropped to 0 and the anon_vma gets freed. This can happen during memory
> > > compaction if pages being migrated belong to a process that exits before
> > > migration completes. Hence, the use-after-free race looks like
> > > 
> > >  1. Page isolated for migration
> > >  2. Process exits
> > >  3. page_mapcount(page) drops to zero so anon_vma was no longer reliable
> > >  4. unmap_and_move() takes the rcu_lock but the anon_vma is already garbage
> > >  4. call try_to_unmap, looks up tha anon_vma and "locks" it but the lock
> > >     is garbage.
> > > 
> > > This patch checks the mapcount after the rcu lock is taken. If the
> > > mapcount is zero, the anon_vma is assumed to be freed and no further
> > > action is taken.
> > > 
> > > Signed-off-by: Mel Gorman <mel@csn.ul.ie>
> > > Acked-by: Rik van Riel <riel@redhat.com>
> > 
> > Reviewd-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
> > 
> 
> BTW, I doubt freeing anon_vma can happen even when we check mapcount.
> 

Bear in mind that without this patch, then compaction can trigger
bad-dereference-bugs fairly trivially. Each time it's related to taking
anon_vma->lock. It's not being caught by sl*b or page-alloc use-after-free 
debugging. It's somewhat detected by lockdep which recognises the lock
it's trying to track is screwy.

> "unmap" is 2-stage operation.
> 	1. unmap_vmas() => modify ptes, free pages, etc.
> 	2. free_pgtables() => free pgtables, unlink vma and free it.
> 
> Then, if migration is enough slow. 
> 
> 	Migration():				Exit():
> 	check mapcount
> 	rcu_read_lock
> 	pte_lock				
> 	replace pte with migration pte		
> 	pte_unlock
> 						pte_lock
> 	copy page etc...			zap pte (clear pte)
> 						pte_unlock
> 						free_pgtables
> 						->free vma
> 						->free anon_vma
> 	pte_lock
> 	remap pte with new pfn(fail)
> 	pte_unlock
> 
> 	lock anon_vma->lock		# modification after free.

But the anon_vma is still valid. Minimally, it shouldn't be destroyed
until after the rcu_read_unlock but it's also protected by the refcount
taken by migration.

Look at anon_vma_unlink(). It checks for the anon_vma being empty with

empty = list_empty(&anon_vma->head) && !anonvma_external_refcount(anon_vma);

So though the vmas have been unmapped, the anon_vma should still not
have been freed until migration is completed. We drop our reference, see
the list is empty, free the anon_vma and call rcu_read_unlock().

> 	check list is empty
> 	unlock anon_vma->lock
> 	free anon_vma
> 	rcu_read_unlock
> 
> Hmm. IIUC, anon_vma is allocated as SLAB_DESTROY_BY_RCU. Then, while
> rcu_read_lock() is taken, anon_vma is anon_vma even if freed. But it
> may reused as anon_vma for someone else.
> (IOW, it may be reused but never pushed back to general purpose memory
>  until RCU grace period.)

I don't think it can be reused because we took the external_refcount
preventing it being freed.

> Then, touching anon_vma->lock never cause any corruption.
> 

It would be bad if the anon_vma is reused. We'd decrement the wrong
counter potentially leaking the anon_vma structure.

> Does use-after-free check for SLAB_DESTROY_BY_RCU correct behavior ?
> Above case is not use-after-free. It's safe and expected sequence.
> 

I don't think it's RCU that guarantees the correct behaviour here, it's
the external_refcount.

-- 
Mel Gorman
Part-time Phd Student                          Linux Technology Center
University of Limerick                         IBM Dublin Software Lab

WARNING: multiple messages have this Message-ID (diff)
From: Mel Gorman <mel@csn.ul.ie>
To: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Minchan Kim <minchan.kim@gmail.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Andrea Arcangeli <aarcange@redhat.com>,
	Christoph Lameter <cl@linux-foundation.org>,
	Adam Litke <agl@us.ibm.com>, Avi Kivity <avi@redhat.com>,
	David Rientjes <rientjes@google.com>,
	KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
	Rik van Riel <riel@redhat.com>,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org
Subject: Re: [PATCH 02/11] mm,migration: Do not try to migrate unmapped anonymous pages
Date: Wed, 17 Mar 2010 12:07:35 +0000	[thread overview]
Message-ID: <20100317120734.GH12388@csn.ul.ie> (raw)
In-Reply-To: <20100317111234.d224f3fd.kamezawa.hiroyu@jp.fujitsu.com>

On Wed, Mar 17, 2010 at 11:12:34AM +0900, KAMEZAWA Hiroyuki wrote:
> On Tue, 16 Mar 2010 08:49:34 +0900
> KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> wrote:
> 
> > On Mon, 15 Mar 2010 14:21:24 +0000
> > Mel Gorman <mel@csn.ul.ie> wrote:
> > 
> > > On Mon, Mar 15, 2010 at 09:48:49PM +0900, Minchan Kim wrote:
> > > > On Mon, 2010-03-15 at 11:28 +0000, Mel Gorman wrote:
> > > > > The use after free looks like
> > > > > 
> > > > > 1. page_mapcount(page) was zero so anon_vma was no longer reliable
> > > > > 2. rcu lock taken but the anon_vma at this point can already be garbage because the
> > > > >    process exited
> > > > > 3. call try_to_unmap, looks up tha anon_vma and locks it. This causes problems
> > > > > 
> > > > > I thought the race would be closed but there is still a very tiny window there all
> > > > > right. The following alternative should close it. What do you think?
> > > > > 
> > > > >         if (PageAnon(page)) {
> > > > > 		rcu_read_lock();
> > > > > 
> > > > >                 /*
> > > > >                  * If the page has no mappings any more, just bail. An
> > > > >                  * unmapped anon page is likely to be freed soon but worse,
> > > > >                  * it's possible its anon_vma disappeared between when
> > > > >                  * the page was isolated and when we reached here while
> > > > >                  * the RCU lock was not held
> > > > >                  */
> > > > >                 if (!page_mapcount(page)) {
> > > > > 			rcu_read_unlock();
> > > > >                         goto uncharge;
> > > > > 		}
> > > > > 
> > > > >                 rcu_locked = 1;
> > > > >                 anon_vma = page_anon_vma(page);
> > > > >                 atomic_inc(&anon_vma->external_refcount);
> > > > >         }
> > > > > 
> > > > > The rcu_unlock label is not used here because the reference counts were not taken in
> > > > > the case where page_mapcount == 0.
> > > > > 
> > > > 
> > > > Please, repost above code with your use-after-free scenario comment.
> > > > 
> > > 
> > > This will be the replacement patch so.
> > > 
> > > ==== CUT HERE ====
> > > mm,migration: Do not try to migrate unmapped anonymous pages
> > > 
> > > rmap_walk_anon() was triggering errors in memory compaction that look like
> > > use-after-free errors. The problem is that between the page being isolated
> > > from the LRU and rcu_read_lock() being taken, the mapcount of the page
> > > dropped to 0 and the anon_vma gets freed. This can happen during memory
> > > compaction if pages being migrated belong to a process that exits before
> > > migration completes. Hence, the use-after-free race looks like
> > > 
> > >  1. Page isolated for migration
> > >  2. Process exits
> > >  3. page_mapcount(page) drops to zero so anon_vma was no longer reliable
> > >  4. unmap_and_move() takes the rcu_lock but the anon_vma is already garbage
> > >  4. call try_to_unmap, looks up tha anon_vma and "locks" it but the lock
> > >     is garbage.
> > > 
> > > This patch checks the mapcount after the rcu lock is taken. If the
> > > mapcount is zero, the anon_vma is assumed to be freed and no further
> > > action is taken.
> > > 
> > > Signed-off-by: Mel Gorman <mel@csn.ul.ie>
> > > Acked-by: Rik van Riel <riel@redhat.com>
> > 
> > Reviewd-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
> > 
> 
> BTW, I doubt freeing anon_vma can happen even when we check mapcount.
> 

Bear in mind that without this patch, then compaction can trigger
bad-dereference-bugs fairly trivially. Each time it's related to taking
anon_vma->lock. It's not being caught by sl*b or page-alloc use-after-free 
debugging. It's somewhat detected by lockdep which recognises the lock
it's trying to track is screwy.

> "unmap" is 2-stage operation.
> 	1. unmap_vmas() => modify ptes, free pages, etc.
> 	2. free_pgtables() => free pgtables, unlink vma and free it.
> 
> Then, if migration is enough slow. 
> 
> 	Migration():				Exit():
> 	check mapcount
> 	rcu_read_lock
> 	pte_lock				
> 	replace pte with migration pte		
> 	pte_unlock
> 						pte_lock
> 	copy page etc...			zap pte (clear pte)
> 						pte_unlock
> 						free_pgtables
> 						->free vma
> 						->free anon_vma
> 	pte_lock
> 	remap pte with new pfn(fail)
> 	pte_unlock
> 
> 	lock anon_vma->lock		# modification after free.

But the anon_vma is still valid. Minimally, it shouldn't be destroyed
until after the rcu_read_unlock but it's also protected by the refcount
taken by migration.

Look at anon_vma_unlink(). It checks for the anon_vma being empty with

empty = list_empty(&anon_vma->head) && !anonvma_external_refcount(anon_vma);

So though the vmas have been unmapped, the anon_vma should still not
have been freed until migration is completed. We drop our reference, see
the list is empty, free the anon_vma and call rcu_read_unlock().

> 	check list is empty
> 	unlock anon_vma->lock
> 	free anon_vma
> 	rcu_read_unlock
> 
> Hmm. IIUC, anon_vma is allocated as SLAB_DESTROY_BY_RCU. Then, while
> rcu_read_lock() is taken, anon_vma is anon_vma even if freed. But it
> may reused as anon_vma for someone else.
> (IOW, it may be reused but never pushed back to general purpose memory
>  until RCU grace period.)

I don't think it can be reused because we took the external_refcount
preventing it being freed.

> Then, touching anon_vma->lock never cause any corruption.
> 

It would be bad if the anon_vma is reused. We'd decrement the wrong
counter potentially leaking the anon_vma structure.

> Does use-after-free check for SLAB_DESTROY_BY_RCU correct behavior ?
> Above case is not use-after-free. It's safe and expected sequence.
> 

I don't think it's RCU that guarantees the correct behaviour here, it's
the external_refcount.

-- 
Mel Gorman
Part-time Phd Student                          Linux Technology Center
University of Limerick                         IBM Dublin Software Lab

--
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>

  parent reply	other threads:[~2010-03-17 12:07 UTC|newest]

Thread overview: 218+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-03-12 16:41 [PATCH 0/11] Memory Compaction v4 Mel Gorman
2010-03-12 16:41 ` Mel Gorman
2010-03-12 16:41 ` [PATCH 01/11] mm,migration: Take a reference to the anon_vma before migrating Mel Gorman
2010-03-12 16:41   ` Mel Gorman
2010-03-14 15:01   ` Minchan Kim
2010-03-14 15:01     ` Minchan Kim
2010-03-15  5:06   ` KAMEZAWA Hiroyuki
2010-03-15  5:06     ` KAMEZAWA Hiroyuki
2010-03-17  1:44   ` KOSAKI Motohiro
2010-03-17  1:44     ` KOSAKI Motohiro
2010-03-17 11:45     ` Mel Gorman
2010-03-17 11:45       ` Mel Gorman
2010-03-17 16:38       ` Christoph Lameter
2010-03-17 16:38         ` Christoph Lameter
2010-03-18 11:12         ` Mel Gorman
2010-03-18 11:12           ` Mel Gorman
2010-03-18 16:31           ` Christoph Lameter
2010-03-18 16:31             ` Christoph Lameter
2010-03-12 16:41 ` [PATCH 02/11] mm,migration: Do not try to migrate unmapped anonymous pages Mel Gorman
2010-03-12 16:41   ` Mel Gorman
2010-03-15  0:28   ` Minchan Kim
2010-03-15  0:28     ` Minchan Kim
2010-03-15  5:34     ` KAMEZAWA Hiroyuki
2010-03-15  5:34       ` KAMEZAWA Hiroyuki
2010-03-15  6:28       ` Minchan Kim
2010-03-15  6:28         ` Minchan Kim
2010-03-15  6:44         ` KAMEZAWA Hiroyuki
2010-03-15  6:44           ` KAMEZAWA Hiroyuki
2010-03-15  7:09           ` KAMEZAWA Hiroyuki
2010-03-15  7:09             ` KAMEZAWA Hiroyuki
2010-03-15 13:48             ` Minchan Kim
2010-03-15 13:48               ` Minchan Kim
2010-03-15  7:11           ` Minchan Kim
2010-03-15  7:11             ` Minchan Kim
2010-03-15 11:28       ` Mel Gorman
2010-03-15 11:28         ` Mel Gorman
2010-03-15 12:48         ` Minchan Kim
2010-03-15 12:48           ` Minchan Kim
2010-03-15 14:21           ` Mel Gorman
2010-03-15 14:21             ` Mel Gorman
2010-03-15 14:33             ` Minchan Kim
2010-03-15 14:33               ` Minchan Kim
2010-03-15 23:49             ` KAMEZAWA Hiroyuki
2010-03-15 23:49               ` KAMEZAWA Hiroyuki
2010-03-17  2:12               ` KAMEZAWA Hiroyuki
2010-03-17  2:12                 ` KAMEZAWA Hiroyuki
2010-03-17  3:00                 ` Minchan Kim
2010-03-17  3:00                   ` Minchan Kim
2010-03-17  3:15                   ` KAMEZAWA Hiroyuki
2010-03-17  3:15                     ` KAMEZAWA Hiroyuki
2010-03-17  4:15                     ` Minchan Kim
2010-03-17  4:15                       ` Minchan Kim
2010-03-17  4:19                       ` KAMEZAWA Hiroyuki
2010-03-17  4:19                         ` KAMEZAWA Hiroyuki
2010-03-17 16:41                     ` Christoph Lameter
2010-03-17 16:41                       ` Christoph Lameter
2010-03-18  0:30                       ` KAMEZAWA Hiroyuki
2010-03-18  0:30                         ` KAMEZAWA Hiroyuki
2010-03-17 12:07                 ` Mel Gorman [this message]
2010-03-17 12:07                   ` Mel Gorman
2010-03-17  2:03             ` KOSAKI Motohiro
2010-03-17  2:03               ` KOSAKI Motohiro
2010-03-17 11:51               ` Mel Gorman
2010-03-17 11:51                 ` Mel Gorman
2010-03-18  0:48                 ` KOSAKI Motohiro
2010-03-18  0:48                   ` KOSAKI Motohiro
2010-03-18 11:14                   ` Mel Gorman
2010-03-18 11:14                     ` Mel Gorman
2010-03-19  6:21                     ` KOSAKI Motohiro
2010-03-19  6:21                       ` KOSAKI Motohiro
2010-03-19  8:59                       ` Mel Gorman
2010-03-19  8:59                         ` Mel Gorman
2010-03-25  2:49                         ` KOSAKI Motohiro
2010-03-25  2:49                           ` KOSAKI Motohiro
2010-03-25  8:32                           ` Mel Gorman
2010-03-25  8:32                             ` Mel Gorman
2010-03-25  8:56                             ` KOSAKI Motohiro
2010-03-25  8:56                               ` KOSAKI Motohiro
2010-03-25  9:18                               ` Mel Gorman
2010-03-25  9:18                                 ` Mel Gorman
2010-03-25  9:02                             ` KAMEZAWA Hiroyuki
2010-03-25  9:02                               ` KAMEZAWA Hiroyuki
2010-03-25  9:09                               ` KOSAKI Motohiro
2010-03-25  9:09                                 ` KOSAKI Motohiro
2010-03-25  9:08                                 ` KAMEZAWA Hiroyuki
2010-03-25  9:08                                   ` KAMEZAWA Hiroyuki
2010-03-25  9:21                                 ` Mel Gorman
2010-03-25  9:21                                   ` Mel Gorman
2010-03-25  9:41                                   ` KAMEZAWA Hiroyuki
2010-03-25  9:41                                     ` KAMEZAWA Hiroyuki
2010-03-25  9:59                                     ` KOSAKI Motohiro
2010-03-25  9:59                                       ` KOSAKI Motohiro
2010-03-25 10:12                                       ` KAMEZAWA Hiroyuki
2010-03-25 10:12                                         ` KAMEZAWA Hiroyuki
2010-03-25 13:39                                         ` Mel Gorman
2010-03-25 13:39                                           ` Mel Gorman
2010-03-26  3:07                                           ` KOSAKI Motohiro
2010-03-26  3:07                                             ` KOSAKI Motohiro
2010-03-26 13:49                                             ` Mel Gorman
2010-03-26 13:49                                               ` Mel Gorman
2010-03-25 15:29                                         ` Minchan Kim
2010-03-25 15:29                                           ` Minchan Kim
2010-03-26  0:58                                           ` KAMEZAWA Hiroyuki
2010-03-26  0:58                                             ` KAMEZAWA Hiroyuki
2010-03-26  1:39                                             ` Minchan Kim
2010-03-26  1:39                                               ` Minchan Kim
2010-03-25 14:35                                   ` Christoph Lameter
2010-03-25 14:35                                     ` Christoph Lameter
2010-03-25 16:16                               ` Minchan Kim
2010-03-25 16:16                                 ` Minchan Kim
2010-03-12 16:41 ` [PATCH 03/11] mm: Share the anon_vma ref counts between KSM and page migration Mel Gorman
2010-03-12 16:41   ` Mel Gorman
2010-03-12 17:14   ` Rik van Riel
2010-03-12 17:14     ` Rik van Riel
2010-03-15  5:35   ` KAMEZAWA Hiroyuki
2010-03-15  5:35     ` KAMEZAWA Hiroyuki
2010-03-17  2:06   ` KOSAKI Motohiro
2010-03-17  2:06     ` KOSAKI Motohiro
2010-03-12 16:41 ` [PATCH 04/11] Allow CONFIG_MIGRATION to be set without CONFIG_NUMA or memory hot-remove Mel Gorman
2010-03-12 16:41   ` Mel Gorman
2010-03-17  2:28   ` KOSAKI Motohiro
2010-03-17  2:28     ` KOSAKI Motohiro
2010-03-17 11:32     ` Mel Gorman
2010-03-17 11:32       ` Mel Gorman
2010-03-17 16:37       ` Christoph Lameter
2010-03-17 16:37         ` Christoph Lameter
2010-03-17 23:56         ` KOSAKI Motohiro
2010-03-17 23:56           ` KOSAKI Motohiro
2010-03-18 11:24           ` Mel Gorman
2010-03-18 11:24             ` Mel Gorman
2010-03-19  6:21             ` KOSAKI Motohiro
2010-03-19  6:21               ` KOSAKI Motohiro
2010-03-19 10:16               ` Mel Gorman
2010-03-19 10:16                 ` Mel Gorman
2010-03-25  3:28                 ` KOSAKI Motohiro
2010-03-25  3:28                   ` KOSAKI Motohiro
2010-03-12 16:41 ` [PATCH 05/11] Export unusable free space index via /proc/unusable_index Mel Gorman
2010-03-12 16:41   ` Mel Gorman
2010-03-15  5:41   ` KAMEZAWA Hiroyuki
2010-03-15  5:41     ` KAMEZAWA Hiroyuki
2010-03-15  9:48     ` Mel Gorman
2010-03-15  9:48       ` Mel Gorman
2010-03-17  2:42   ` KOSAKI Motohiro
2010-03-17  2:42     ` KOSAKI Motohiro
2010-03-12 16:41 ` [PATCH 06/11] Export fragmentation index via /proc/extfrag_index Mel Gorman
2010-03-12 16:41   ` Mel Gorman
2010-03-17  2:49   ` KOSAKI Motohiro
2010-03-17  2:49     ` KOSAKI Motohiro
2010-03-17 11:33     ` Mel Gorman
2010-03-17 11:33       ` Mel Gorman
2010-03-23  0:22       ` KOSAKI Motohiro
2010-03-23  0:22         ` KOSAKI Motohiro
2010-03-23 12:03         ` Mel Gorman
2010-03-23 12:03           ` Mel Gorman
2010-03-25  2:47           ` KOSAKI Motohiro
2010-03-25  2:47             ` KOSAKI Motohiro
2010-03-25  8:47             ` Mel Gorman
2010-03-25  8:47               ` Mel Gorman
2010-03-25 11:20               ` KOSAKI Motohiro
2010-03-25 11:20                 ` KOSAKI Motohiro
2010-03-25 14:11                 ` Mel Gorman
2010-03-25 14:11                   ` Mel Gorman
2010-03-26  3:10                   ` KOSAKI Motohiro
2010-03-26  3:10                     ` KOSAKI Motohiro
2010-03-12 16:41 ` [PATCH 07/11] Memory compaction core Mel Gorman
2010-03-12 16:41   ` Mel Gorman
2010-03-15 13:44   ` Minchan Kim
2010-03-15 13:44     ` Minchan Kim
2010-03-15 14:41     ` Mel Gorman
2010-03-15 14:41       ` Mel Gorman
2010-03-17 10:31   ` KOSAKI Motohiro
2010-03-17 10:31     ` KOSAKI Motohiro
2010-03-17 11:40     ` Mel Gorman
2010-03-17 11:40       ` Mel Gorman
2010-03-18  2:35       ` KOSAKI Motohiro
2010-03-18  2:35         ` KOSAKI Motohiro
2010-03-18 11:43         ` Mel Gorman
2010-03-18 11:43           ` Mel Gorman
2010-03-19  6:21           ` KOSAKI Motohiro
2010-03-19  6:21             ` KOSAKI Motohiro
2010-03-18 17:08     ` Mel Gorman
2010-03-18 17:08       ` Mel Gorman
2010-03-12 16:41 ` [PATCH 08/11] Add /proc trigger for memory compaction Mel Gorman
2010-03-12 16:41   ` Mel Gorman
2010-03-17  3:18   ` KOSAKI Motohiro
2010-03-17  3:18     ` KOSAKI Motohiro
2010-03-12 16:41 ` [PATCH 09/11] Add /sys trigger for per-node " Mel Gorman
2010-03-12 16:41   ` Mel Gorman
2010-03-17  3:18   ` KOSAKI Motohiro
2010-03-17  3:18     ` KOSAKI Motohiro
2010-03-12 16:41 ` [PATCH 10/11] Direct compact when a high-order allocation fails Mel Gorman
2010-03-12 16:41   ` Mel Gorman
2010-03-16  2:47   ` Minchan Kim
2010-03-16  2:47     ` Minchan Kim
2010-03-19  6:21   ` KOSAKI Motohiro
2010-03-19  6:21     ` KOSAKI Motohiro
2010-03-19  6:31     ` KOSAKI Motohiro
2010-03-19  6:31       ` KOSAKI Motohiro
2010-03-19 10:10       ` Mel Gorman
2010-03-19 10:10         ` Mel Gorman
2010-03-25 11:22         ` KOSAKI Motohiro
2010-03-25 11:22           ` KOSAKI Motohiro
2010-03-19 10:09     ` Mel Gorman
2010-03-19 10:09       ` Mel Gorman
2010-03-25 11:08       ` KOSAKI Motohiro
2010-03-25 11:08         ` KOSAKI Motohiro
2010-03-25 15:11         ` Mel Gorman
2010-03-25 15:11           ` Mel Gorman
2010-03-26  6:01           ` KOSAKI Motohiro
2010-03-26  6:01             ` KOSAKI Motohiro
2010-03-12 16:41 ` [PATCH 11/11] Do not compact within a preferred zone after a compaction failure Mel Gorman
2010-03-12 16:41   ` Mel Gorman
2010-03-23 12:25 [PATCH 0/11] Memory Compaction v5 Mel Gorman
2010-03-23 12:25 ` [PATCH 02/11] mm,migration: Do not try to migrate unmapped anonymous pages Mel Gorman
2010-03-23 12:25   ` Mel Gorman
2010-03-23 17:22   ` Christoph Lameter
2010-03-23 17:22     ` Christoph Lameter
2010-03-23 18:04     ` Mel Gorman
2010-03-23 18:04       ` Mel Gorman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100317120734.GH12388@csn.ul.ie \
    --to=mel@csn.ul.ie \
    --cc=aarcange@redhat.com \
    --cc=agl@us.ibm.com \
    --cc=akpm@linux-foundation.org \
    --cc=avi@redhat.com \
    --cc=cl@linux-foundation.org \
    --cc=kamezawa.hiroyu@jp.fujitsu.com \
    --cc=kosaki.motohiro@jp.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=minchan.kim@gmail.com \
    --cc=riel@redhat.com \
    --cc=rientjes@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.