Coverage Report

Created: 2017-10-25 09:10

/root/src/xen/xen/arch/x86/compat.c
Line
Count
Source (jump to first uncovered line)
1
/******************************************************************************
2
 * compat.c
3
 * 
4
 * Implementations of legacy hypercalls. These call through to the new
5
 * hypercall after doing necessary argument munging.
6
 */
7
8
#include <xen/guest_access.h>
9
#include <xen/hypercall.h>
10
#include <xen/trace.h>
11
#include <public/sched.h>
12
13
#ifndef COMPAT
14
typedef long ret_t;
15
#endif
16
17
/* Legacy hypercall (as of 0x00030202). */
18
ret_t do_physdev_op_compat(XEN_GUEST_HANDLE(physdev_op_t) uop)
19
0
{
20
0
    struct physdev_op op;
21
0
22
0
    if ( unlikely(copy_from_guest(&op, uop, 1) != 0) )
23
0
        return -EFAULT;
24
0
25
0
    return do_physdev_op(op.cmd, guest_handle_from_ptr(&uop.p->u, void));
26
0
}
Unexecuted instantiation: do_physdev_op_compat
Unexecuted instantiation: compat_physdev_op_compat
27
28
#ifndef COMPAT
29
30
/* Legacy hypercall (as of 0x00030101). */
31
long do_sched_op_compat(int cmd, unsigned long arg)
32
0
{
33
0
    switch ( cmd )
34
0
    {
35
0
    case SCHEDOP_yield:
36
0
    case SCHEDOP_block:
37
0
        return do_sched_op(cmd, guest_handle_from_ptr(NULL, void));
38
0
39
0
    case SCHEDOP_shutdown:
40
0
        TRACE_3D(TRC_SCHED_SHUTDOWN,
41
0
                 current->domain->domain_id, current->vcpu_id, arg);
42
0
        domain_shutdown(current->domain, (u8)arg);
43
0
        break;
44
0
45
0
    default:
46
0
        return -ENOSYS;
47
0
    }
48
0
49
0
    return 0;
50
0
}
51
52
/* Legacy hypercall (as of 0x00030202). */
53
long do_event_channel_op_compat(XEN_GUEST_HANDLE_PARAM(evtchn_op_t) uop)
54
0
{
55
0
    struct evtchn_op op;
56
0
57
0
    if ( unlikely(copy_from_guest(&op, uop, 1) != 0) )
58
0
        return -EFAULT;
59
0
60
0
    switch ( op.cmd )
61
0
    {
62
0
    case EVTCHNOP_bind_interdomain:
63
0
    case EVTCHNOP_bind_virq:
64
0
    case EVTCHNOP_bind_pirq:
65
0
    case EVTCHNOP_close:
66
0
    case EVTCHNOP_send:
67
0
    case EVTCHNOP_status:
68
0
    case EVTCHNOP_alloc_unbound:
69
0
    case EVTCHNOP_bind_ipi:
70
0
    case EVTCHNOP_bind_vcpu:
71
0
    case EVTCHNOP_unmask:
72
0
        return do_event_channel_op(op.cmd,
73
0
                                   guest_handle_from_ptr(&uop.p->u, void));
74
0
75
0
    default:
76
0
        return -ENOSYS;
77
0
    }
78
0
}
79
80
#endif