[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 15/18] PVH xen: add hypercall support for PVH
>>> On 25.06.13 at 02:01, Mukesh Rathor <mukesh.rathor@xxxxxxxxxx> wrote: > int hvm_do_hypercall(struct cpu_user_regs *regs) > { > struct vcpu *curr = current; > struct segment_register sreg; > int mode = hvm_guest_x86_mode(curr); > uint32_t eax = regs->eax; > + hvm_hypercall_t **hcall_table; If you properly cont-qualified this, ... > @@ -3348,17 +3379,24 @@ int hvm_do_hypercall(struct cpu_user_regs *regs) > eax, regs->rdi, regs->rsi, regs->rdx, > regs->r10, regs->r8, regs->r9); > > + if ( is_pvh_vcpu(curr) ) > + hcall_table = (hvm_hypercall_t **)pvh_hypercall64_table; > + else > + hcall_table = (hvm_hypercall_t **)hvm_hypercall64_table; ... you wouldn't need these dangerous casts. > @@ -3777,7 +3815,7 @@ long do_hvm_op(unsigned long op, > XEN_GUEST_HANDLE_PARAM(void) arg) > return -ESRCH; > > rc = -EINVAL; > - if ( !is_hvm_domain(d) ) > + if ( is_pv_domain(d) ) > goto param_fail; > > rc = xsm_hvm_param(XSM_TARGET, d, op); > @@ -3949,7 +3987,7 @@ long do_hvm_op(unsigned long op, > XEN_GUEST_HANDLE_PARAM(void) arg) > break; > } > > - if ( rc == 0 ) > + if ( rc == 0 && !is_pvh_domain(d) ) > { > d->arch.hvm_domain.params[a.index] = a.value; > This last check I think you do because params[] points nowhere for PVH guests. If so - why don't you just drop this and the earlier hunk? Or otherwise some of the case statements between need to also guard against accessing the unset pointer. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |