Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:olh:xen-buildrequires
valgrind
valgrind.xen-4.9-handle-IOCTL_PRIVCMD_DM_OP.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File valgrind.xen-4.9-handle-IOCTL_PRIVCMD_DM_OP.patch of Package valgrind
From: Olaf Hering <olaf@aepfle.de> Date: Fri, 16 Nov 2018 17:29:39 +0100 Subject: xen-4.9: handle IOCTL_PRIVCMD_DM_OP Handle IOCTL_PRIVCMD_DM_OP bz#390553 --- coregrind/m_syswrap/syswrap-linux.c | 17 +++++++++++++++++ include/vki/vki-linux.h | 14 ++++++++++++++ 2 files changed, 31 insertions(+) --- a/coregrind/m_syswrap/syswrap-linux.c +++ b/coregrind/m_syswrap/syswrap-linux.c @@ -8428,24 +8428,35 @@ PRE(sys_ioctl) struct vki_xen_privcmd_mmapbatch_v2 *args = (struct vki_xen_privcmd_mmapbatch_v2 *)(Addr)(ARG3); PRE_MEM_READ("VKI_XEN_IOCTL_PRIVCMD_MMAPBATCH_V2(num)", (Addr)&args->num, sizeof(args->num)); PRE_MEM_READ("VKI_XEN_IOCTL_PRIVCMD_MMAPBATCH_V2(dom)", (Addr)&args->dom, sizeof(args->dom)); PRE_MEM_READ("VKI_XEN_IOCTL_PRIVCMD_MMAPBATCH_V2(addr)", (Addr)&args->addr, sizeof(args->addr)); PRE_MEM_READ("VKI_XEN_IOCTL_PRIVCMD_MMAPBATCH_V2(arr)", (Addr)args->arr, sizeof(*(args->arr)) * args->num); break; } + case VKI_XEN_IOCTL_PRIVCMD_DM_OP: { + struct vki_xen_privcmd_dm_op *args = + (struct vki_xen_privcmd_dm_op *)(ARG3); + PRE_MEM_READ("VKI_XEN_IOCTL_PRIVCMD_DM_OP(dom)", + (Addr)&args->dom, sizeof(args->dom)); + PRE_MEM_READ("VKI_XEN_IOCTL_PRIVCMD_DM_OP(num)", + (Addr)&args->num, sizeof(args->num)); + PRE_MEM_READ("VKI_XEN_IOCTL_PRIVCMD_DM_OP(ubufs)", + (Addr)args->ubufs, sizeof(*(args->ubufs)) * args->num); + break; + } case VKI_XEN_IOCTL_EVTCHN_BIND_VIRQ: { struct vki_xen_ioctl_evtchn_bind_virq *args = (struct vki_xen_ioctl_evtchn_bind_virq *)(Addr)(ARG3); PRE_MEM_READ("VKI_XEN_IOCTL_EVTCHN_BIND_VIRQ(virq)", (Addr)&args->virq, sizeof(args->virq)); } break; case VKI_XEN_IOCTL_EVTCHN_BIND_INTERDOMAIN: { struct vki_xen_ioctl_evtchn_bind_interdomain *args = (struct vki_xen_ioctl_evtchn_bind_interdomain *)(Addr)(ARG3); PRE_MEM_READ("VKI_XEN_IOCTL_EVTCHN_BIND_INTERDOMAIN(remote_domain)", @@ -11140,24 +11151,30 @@ POST(sys_ioctl) case VKI_XEN_IOCTL_PRIVCMD_MMAPBATCH: { struct vki_xen_privcmd_mmapbatch *args = (struct vki_xen_privcmd_mmapbatch *)(Addr)(ARG3); POST_MEM_WRITE((Addr)args->arr, sizeof(*(args->arr)) * args->num); } break; case VKI_XEN_IOCTL_PRIVCMD_MMAPBATCH_V2: { struct vki_xen_privcmd_mmapbatch_v2 *args = (struct vki_xen_privcmd_mmapbatch_v2 *)(Addr)(ARG3); POST_MEM_WRITE((Addr)args->err, sizeof(*(args->err)) * args->num); } break; + case VKI_XEN_IOCTL_PRIVCMD_DM_OP: { + struct vki_xen_privcmd_dm_op *args = + (struct vki_xen_privcmd_dm_op *)(ARG3); + POST_MEM_WRITE((Addr)args->ubufs, sizeof(*(args->ubufs)) * args->num); + } + break; case VKI_XEN_IOCTL_EVTCHN_BIND_VIRQ: case VKI_XEN_IOCTL_EVTCHN_BIND_INTERDOMAIN: case VKI_XEN_IOCTL_EVTCHN_BIND_UNBOUND_PORT: case VKI_XEN_IOCTL_EVTCHN_UNBIND: case VKI_XEN_IOCTL_EVTCHN_NOTIFY: case VKI_XEN_IOCTL_EVTCHN_RESET: /* No output */ break; case VKI_XEN_IOCTL_GNTDEV_MAP_GRANT_REF: { struct vki_xen_ioctl_gntdev_map_grant_ref *args = (struct vki_xen_ioctl_gntdev_map_grant_ref*)(Addr)(ARG3); --- a/include/vki/vki-linux.h +++ b/include/vki/vki-linux.h @@ -3448,30 +3448,44 @@ struct vki_xen_privcmd_mmapbatch { __vki_u64 addr; /* virtual address */ __vki_xen_pfn_t *arr; /* array of mfns - top nibble set on err */ }; struct vki_xen_privcmd_mmapbatch_v2 { unsigned int num; /* number of pages to populate */ __vki_u16 dom; /* target domain */ __vki_u64 addr; /* virtual address */ const __vki_xen_pfn_t *arr; /* array of mfns */ int __user *err; /* array of error codes */ }; +struct vki_xen_privcmd_dm_op_buf { + void __user *uptr; + __vki_kernel_size_t size; +}; + +struct vki_xen_privcmd_dm_op { + __vki_u16 dom; + __vki_u16 num; + const struct vki_xen_privcmd_dm_op_buf __user *ubufs; +}; + + #define VKI_XEN_IOCTL_PRIVCMD_HYPERCALL _VKI_IOC(_VKI_IOC_NONE, 'P', 0, sizeof(struct vki_xen_privcmd_hypercall)) #define VKI_XEN_IOCTL_PRIVCMD_MMAP _VKI_IOC(_VKI_IOC_NONE, 'P', 2, sizeof(struct vki_xen_privcmd_mmap)) #define VKI_XEN_IOCTL_PRIVCMD_MMAPBATCH _VKI_IOC(_VKI_IOC_NONE, 'P', 3, sizeof(struct vki_xen_privcmd_mmapbatch)) #define VKI_XEN_IOCTL_PRIVCMD_MMAPBATCH_V2 _VKI_IOC(_VKI_IOC_NONE, 'P', 4, sizeof(struct vki_xen_privcmd_mmapbatch_v2)) +#define VKI_XEN_IOCTL_PRIVCMD_DM_OP _VKI_IOC(_VKI_IOC_NONE, 'P', 5, sizeof(struct vki_xen_privcmd_dm_op)) + //---------------------------------------------------------------------- // Xen evtchn IOCTL //---------------------------------------------------------------------- #define VKI_XEN_IOCTL_EVTCHN_BIND_VIRQ \ _VKI_IOC(_VKI_IOC_NONE, 'E', 0, sizeof(struct vki_xen_ioctl_evtchn_bind_virq)) struct vki_xen_ioctl_evtchn_bind_virq { vki_uint32_t virq; }; #define VKI_XEN_IOCTL_EVTCHN_BIND_INTERDOMAIN \ _VKI_IOC(_VKI_IOC_NONE, 'E', 1, sizeof(struct vki_xen_ioctl_evtchn_bind_interdomain))
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor