Thread (14 messages) 14 messages, 4 authors, 2012-08-23

Re: [PATCH] mm: mmu_notifier: fix inconsistent memory between secondary MMU and host

From: Andrew Morton <akpm@linux-foundation.org>
Date: 2012-08-22 19:15:41
Also in: kvm, lkml

On Wed, 22 Aug 2012 18:29:55 +0200
Andrea Arcangeli [off-list ref] wrote:
On Wed, Aug 22, 2012 at 02:03:41PM +0800, Xiao Guangrong wrote:
quoted
On 08/21/2012 11:06 PM, Andrea Arcangeli wrote:
quoted
CPU0  		    	    	CPU1
				oldpage[1] == 0 (both guest & host)
oldpage[0] = 1
trigger do_wp_page
We always do ptep_clear_flush before set_pte_at_notify(),
at this point, we have done:
  pte = 0 and flush all tlbs
quoted
mmu_notifier_change_pte
spte = newpage + writable
				guest does newpage[1] = 1
				vmexit
				host read oldpage[1] == 0
                  It can not happen, at this point pte = 0, host can not
		  access oldpage anymore, host read can generate #PF, it
                  will be blocked on page table lock until CPU 0 release the lock.
Agreed, this is why your fix is safe.

...

Thanks a lot for fixing this subtle race!
I'll take that as an ack.

Unfortunately we weren't told the user-visible effects of the bug,
which often makes it hard to determine which kernel versions should be
patched.  Please do always provide this information when fixing a bug.


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