Callers of p2m_pod_zero_check() pass a count of up to POD_SWEEP_STRIDE. Move the definition of POD_SWEEP_STRIDE and give the arrays a fixed bound.
Signed-off-by: Andrew Cooper <andrew.coop...@citrix.com> --- CC: Jan Beulich <jbeul...@suse.com> CC: Wei Liu <wei.l...@citrix.com> CC: George Dunlap <george.dun...@eu.citrix.com> --- xen/arch/x86/mm/p2m-pod.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/xen/arch/x86/mm/p2m-pod.c b/xen/arch/x86/mm/p2m-pod.c index f1b221f..7978456 100644 --- a/xen/arch/x86/mm/p2m-pod.c +++ b/xen/arch/x86/mm/p2m-pod.c @@ -862,15 +862,19 @@ p2m_pod_zero_check_superpage(struct p2m_domain *p2m, gfn_t gfn) return ret; } +#define POD_SWEEP_LIMIT 1024 +#define POD_SWEEP_STRIDE 16 + static void p2m_pod_zero_check(struct p2m_domain *p2m, const gfn_t *gfns, unsigned int count) { - mfn_t mfns[count]; - p2m_type_t types[count]; - unsigned long *map[count]; + mfn_t mfns[POD_SWEEP_STRIDE]; + p2m_type_t types[POD_SWEEP_STRIDE]; + unsigned long *map[POD_SWEEP_STRIDE]; struct domain *d = p2m->domain; unsigned int i, j, max_ref = 1; + BUG_ON(count > POD_SWEEP_STRIDE); /* Allow an extra refcount for one shadow pt mapping in shadowed domains */ if ( paging_mode_shadow(d) ) @@ -1012,8 +1016,6 @@ p2m_pod_zero_check(struct p2m_domain *p2m, const gfn_t *gfns, unsigned int count unmap_domain_page(map[i]); } -#define POD_SWEEP_LIMIT 1024 -#define POD_SWEEP_STRIDE 16 static void p2m_pod_emergency_sweep(struct p2m_domain *p2m) { -- 2.1.4 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel