[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen stable-4.12] vm_event: fix XEN_VM_EVENT_RESUME domctl
commit 9d2a3128dc5e755d2ff8cc2ac1d2e94152797054 Author: Petre Pircalabu <ppircalabu@xxxxxxxxxxxxxxx> AuthorDate: Wed May 15 09:38:13 2019 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Wed May 15 09:38:13 2019 +0200 vm_event: fix XEN_VM_EVENT_RESUME domctl Make XEN_VM_EVENT_RESUME return 0 in case of success, instead of -EINVAL. Remove vm_event_resume form vm_event.h header and set the function's visibility to static as is used only in vm_event.c. Move the vm_event_check_ring test inside vm_event_resume in order to simplify the code. Signed-off-by: Petre Pircalabu <ppircalabu@xxxxxxxxxxxxxxx> Acked-by: Razvan Cojocaru <rcojocaru@xxxxxxxxxxxxxxx> master commit: b32c0446b103aa801ee18780b2fdd78dfc0b9052 master date: 2019-04-05 15:42:03 +0200 --- xen/common/vm_event.c | 37 ++++++++++++------------------------- xen/include/xen/vm_event.h | 2 -- 2 files changed, 12 insertions(+), 27 deletions(-) diff --git a/xen/common/vm_event.c b/xen/common/vm_event.c index 26cfa2c605..bb8751e065 100644 --- a/xen/common/vm_event.c +++ b/xen/common/vm_event.c @@ -366,7 +366,7 @@ int vm_event_get_response(struct domain *d, struct vm_event_domain *ved, * Note: responses are handled the same way regardless of which ring they * arrive on. */ -void vm_event_resume(struct domain *d, struct vm_event_domain *ved) +static int vm_event_resume(struct domain *d, struct vm_event_domain *ved) { vm_event_response_t rsp; @@ -380,6 +380,9 @@ void vm_event_resume(struct domain *d, struct vm_event_domain *ved) */ ASSERT(d != current->domain); + if ( unlikely(!vm_event_check_ring(ved)) ) + return -ENODEV; + /* Pull all responses off the ring. */ while ( vm_event_get_response(d, ved, &rsp) ) { @@ -443,6 +446,8 @@ void vm_event_resume(struct domain *d, struct vm_event_domain *ved) vm_event_vcpu_unpause(v); } } + + return 0; } void vm_event_cancel_slot(struct domain *d, struct vm_event_domain *ved) @@ -529,30 +534,21 @@ int __vm_event_claim_slot(struct domain *d, struct vm_event_domain *ved, /* Registered with Xen-bound event channel for incoming notifications. */ static void mem_paging_notification(struct vcpu *v, unsigned int port) { - struct domain *domain = v->domain; - - if ( likely(vm_event_check_ring(domain->vm_event_paging)) ) - vm_event_resume(domain, domain->vm_event_paging); + vm_event_resume(v->domain, v->domain->vm_event_paging); } #endif /* Registered with Xen-bound event channel for incoming notifications. */ static void monitor_notification(struct vcpu *v, unsigned int port) { - struct domain *domain = v->domain; - - if ( likely(vm_event_check_ring(domain->vm_event_monitor)) ) - vm_event_resume(domain, domain->vm_event_monitor); + vm_event_resume(v->domain, v->domain->vm_event_monitor); } #ifdef CONFIG_HAS_MEM_SHARING /* Registered with Xen-bound event channel for incoming notifications. */ static void mem_sharing_notification(struct vcpu *v, unsigned int port) { - struct domain *domain = v->domain; - - if ( likely(vm_event_check_ring(domain->vm_event_share)) ) - vm_event_resume(domain, domain->vm_event_share); + vm_event_resume(v->domain, v->domain->vm_event_share); } #endif @@ -667,10 +663,7 @@ int vm_event_domctl(struct domain *d, struct xen_domctl_vm_event_op *vec, break; case XEN_VM_EVENT_RESUME: - if ( vm_event_check_ring(d->vm_event_paging) ) - vm_event_resume(d, d->vm_event_paging); - else - rc = -ENODEV; + rc = vm_event_resume(d, d->vm_event_paging); break; default: @@ -708,10 +701,7 @@ int vm_event_domctl(struct domain *d, struct xen_domctl_vm_event_op *vec, break; case XEN_VM_EVENT_RESUME: - if ( vm_event_check_ring(d->vm_event_monitor) ) - vm_event_resume(d, d->vm_event_monitor); - else - rc = -ENODEV; + rc = vm_event_resume(d, d->vm_event_monitor); break; default: @@ -755,10 +745,7 @@ int vm_event_domctl(struct domain *d, struct xen_domctl_vm_event_op *vec, break; case XEN_VM_EVENT_RESUME: - if ( vm_event_check_ring(d->vm_event_share) ) - vm_event_resume(d, d->vm_event_share); - else - rc = -ENODEV; + rc = vm_event_resume(d, d->vm_event_share); break; default: diff --git a/xen/include/xen/vm_event.h b/xen/include/xen/vm_event.h index 5302ee55c1..53af2d50a6 100644 --- a/xen/include/xen/vm_event.h +++ b/xen/include/xen/vm_event.h @@ -67,8 +67,6 @@ void vm_event_put_request(struct domain *d, struct vm_event_domain *ved, int vm_event_get_response(struct domain *d, struct vm_event_domain *ved, vm_event_response_t *rsp); -void vm_event_resume(struct domain *d, struct vm_event_domain *ved); - int vm_event_domctl(struct domain *d, struct xen_domctl_vm_event_op *vec, XEN_GUEST_HANDLE_PARAM(void) u_domctl); -- generated by git-patchbot for /home/xen/git/xen.git#stable-4.12 _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |