xen/privcmd: Add IOCTL_PRIVCMD_DM_OP
Recently a new dm_op[1] hypercall was added to Xen to provide a mechanism
for restricting device emulators (such as QEMU) to a limited set of
hypervisor operations, and being able to audit those operations in the
kernel of the domain in which they run.
This patch adds IOCTL_PRIVCMD_DM_OP as gateway for __HYPERVISOR_dm_op.
NOTE: There is no requirement for user-space code to bounce data through
locked memory buffers (as with IOCTL_PRIVCMD_HYPERCALL) since
privcmd has enough information to lock the original buffers
directly.
[1] http://xenbits.xen.org/gitweb/?p=xen.git;a=commit;h=524a98c2
Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
Acked-by: Stefano Stabellini <sstabellini@kernel.org>
Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
This commit is contained in:
committed by
Boris Ostrovsky
parent
dc9eab6fd9
commit
ab520be8cd
@@ -77,6 +77,17 @@ struct privcmd_mmapbatch_v2 {
|
||||
int __user *err; /* array of error codes */
|
||||
};
|
||||
|
||||
struct privcmd_dm_op_buf {
|
||||
void __user *uptr;
|
||||
size_t size;
|
||||
};
|
||||
|
||||
struct privcmd_dm_op {
|
||||
domid_t dom;
|
||||
__u16 num;
|
||||
const struct privcmd_dm_op_buf __user *ubufs;
|
||||
};
|
||||
|
||||
/*
|
||||
* @cmd: IOCTL_PRIVCMD_HYPERCALL
|
||||
* @arg: &privcmd_hypercall_t
|
||||
@@ -98,5 +109,7 @@ struct privcmd_mmapbatch_v2 {
|
||||
_IOC(_IOC_NONE, 'P', 3, sizeof(struct privcmd_mmapbatch))
|
||||
#define IOCTL_PRIVCMD_MMAPBATCH_V2 \
|
||||
_IOC(_IOC_NONE, 'P', 4, sizeof(struct privcmd_mmapbatch_v2))
|
||||
#define IOCTL_PRIVCMD_DM_OP \
|
||||
_IOC(_IOC_NONE, 'P', 5, sizeof(struct privcmd_dm_op))
|
||||
|
||||
#endif /* __LINUX_PUBLIC_PRIVCMD_H__ */
|
||||
|
||||
Reference in New Issue
Block a user