From: Suravee Suthikulpanit <suravee.suthikulpa...@amd.com> At the time of registering HVM I/O handler, the HVM domain might not have been initialized, which means the hvm_domain.io_handler would be NULL. In the hvm_next_io_handler(), this should be checked before returning and referencing the array. Also, the io_handler_count should only be incremented on success.
So, this patch adds error handling in hvm_next_io_handler. Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpa...@amd.com> --- xen/arch/x86/hvm/intercept.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/xen/arch/x86/hvm/intercept.c b/xen/arch/x86/hvm/intercept.c index 7096d74..b837f5f 100644 --- a/xen/arch/x86/hvm/intercept.c +++ b/xen/arch/x86/hvm/intercept.c @@ -248,7 +248,10 @@ int hvm_io_intercept(ioreq_t *p) struct hvm_io_handler *hvm_next_io_handler(struct domain *d) { - unsigned int i = d->arch.hvm_domain.io_handler_count++; + unsigned int i = d->arch.hvm_domain.io_handler_count; + + if ( !d->arch.hvm_domain.io_handler ) + return NULL; if ( i == NR_IO_HANDLERS ) { @@ -256,6 +259,7 @@ struct hvm_io_handler *hvm_next_io_handler(struct domain *d) return NULL; } + d->arch.hvm_domain.io_handler_count++; return &d->arch.hvm_domain.io_handler[i]; } -- 1.9.1 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel