diff options
author | kaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk> | 2004-05-19 12:10:16 +0000 |
---|---|---|
committer | kaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk> | 2004-05-19 12:10:16 +0000 |
commit | 74a3bae43b0d35ffbed59f01dbedb2079aab488a (patch) | |
tree | 5d41094798f59cb9de9f1621686def17a5c95aea /xen | |
parent | c9cfbb332258e79114d427a0049bfe6fbb0c19d4 (diff) | |
download | xen-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.c | 12 | ||||
-rw-r--r-- | xen/include/xen/mm.h | 2 |
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) |