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@bitdefender.com>
Acked-by: Razvan Cojocaru <rcojocaru@bitdefender.com>
This commit is contained in:
Petre Pircalabu authored and Jan Beulich committed 2019-04-05 15:42:03 +02:00
1 parent 85c88765b3
commit b32c0446b1
2 files changed
+12 -27

No files matched your search

+12 -25
View File
@@ -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
@@ -676,10 +672,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:
@@ -717,10 +710,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:
@@ -764,10 +754,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:
-2
View File
@@ -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);
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.