aboutsummaryrefslogtreecommitdiffstats
path: root/xen
diff options
context:
space:
mode:
authorkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>2004-05-19 12:10:16 +0000
committerkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>2004-05-19 12:10:16 +0000
commit74a3bae43b0d35ffbed59f01dbedb2079aab488a (patch)
tree5d41094798f59cb9de9f1621686def17a5c95aea /xen
parentc9cfbb332258e79114d427a0049bfe6fbb0c19d4 (diff)
downloadxen-74a3bae43b0d35ffbed59f01dbedb2079aab488a.tar.gz
xen-74a3bae43b0d35ffbed59f01dbedb2079aab488a.tar.bz2
xen-74a3bae43b0d35ffbed59f01dbedb2079aab488a.zip
bitkeeper revision 1.913 (40ab4ea8vu84ako0LR_rQN0fDuznVw)
Fix the mmu_update hypercall interface.
Diffstat (limited to 'xen')
-rw-r--r--xen/common/memory.c12
-rw-r--r--xen/include/xen/mm.h2
2 files changed, 4 insertions, 10 deletions
diff --git a/xen/common/memory.c b/xen/common/memory.c
index e5d4db2e81..5b03588b2c 100644
--- a/xen/common/memory.c
+++ b/xen/common/memory.c
@@ -988,9 +988,8 @@ static int do_extended_command(unsigned long ptr, unsigned long val)
}
-int do_mmu_update(mmu_update_t *ureqs, int * p_count)
+int do_mmu_update(mmu_update_t *ureqs, int count, int *success_count)
{
- int count;
mmu_update_t req;
unsigned long va = 0, deferred_ops, pfn, prev_pfn = 0;
struct pfn_info *page;
@@ -999,11 +998,6 @@ int do_mmu_update(mmu_update_t *ureqs, int * p_count)
unsigned long prev_spfn = 0;
l1_pgentry_t *prev_spl1e = 0;
- if ( unlikely( get_user(count, p_count) ) )
- {
- return -EFAULT;
- }
-
perfc_incrc(calls_to_mmu_update);
perfc_addc(num_page_updates, count);
@@ -1160,8 +1154,8 @@ int do_mmu_update(mmu_update_t *ureqs, int * p_count)
percpu_info[cpu].gps = percpu_info[cpu].pts = NULL;
}
- if ( unlikely(rc) )
- put_user( count, p_count );
+ if ( unlikely(success_count != NULL) )
+ put_user(count, success_count);
return rc;
}
diff --git a/xen/include/xen/mm.h b/xen/include/xen/mm.h
index c132ad9662..ecb73627a3 100644
--- a/xen/include/xen/mm.h
+++ b/xen/include/xen/mm.h
@@ -314,7 +314,7 @@ int check_descriptor(unsigned long a, unsigned long b);
#define machine_to_phys_mapping ((unsigned long *)RDWR_MPT_VIRT_START)
/* Part of the domain API. */
-int do_mmu_update(mmu_update_t *updates, int *count);
+int do_mmu_update(mmu_update_t *updates, int count, int *success_count);
#define DEFAULT_GDT_ENTRIES ((LAST_RESERVED_GDT_ENTRY*8)+7)
#define DEFAULT_GDT_ADDRESS ((unsigned long)gdt_table)