x86/mm: fix mod_l1_entry() return value when encountering r/o MMIO page
authorJan Beulich <jbeulich@suse.com>
Thu, 21 Jun 2012 09:30:59 +0000 (11:30 +0200)
committerJan Beulich <jbeulich@suse.com>
Thu, 21 Jun 2012 09:30:59 +0000 (11:30 +0200)
While putting together the workaround announced in
http://lists.xen.org/archives/html/xen-devel/2012-06/msg00709.html, I
found that mod_l1_entry(), upon encountering a set bit in
mmio_ro_ranges, would return 1 instead of 0 (the removal of the write
permission is supposed to be entirely transparent to the caller, even
more so to the calling guest).

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
xen/arch/x86/mm.c

index 876e1ef2c7ef3645da86439e45f2e6ece66b2c0f..ce0a67c1c8b9d5b2406b4be3cf282579241df1d1 100644 (file)
@@ -1875,6 +1875,7 @@ static int mod_l1_entry(l1_pgentry_t *pl1e, l1_pgentry_t nl1e,
             break;
         case 1:
             l1e_remove_flags(nl1e, _PAGE_RW);
+            rc = 0;
             break;
         }
         if ( page )