mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
Fix mlock() of getdomaininfolist data buffer
This commit is contained in:
parent
ea541f83b9
commit
cce70e0132
@ -145,7 +145,15 @@ typedef union xen_getdomaininfolist xen_getdomaininfolist;
|
|||||||
domlist.v0[n].domain : \
|
domlist.v0[n].domain : \
|
||||||
domlist.v2[n].domain)
|
domlist.v2[n].domain)
|
||||||
|
|
||||||
|
#define XEN_GETDOMAININFOLIST_DATA(domlist) \
|
||||||
|
(hypervisor_version < 2 ? \
|
||||||
|
(void*)(domlist->v0) : \
|
||||||
|
(void*)(domlist->v2))
|
||||||
|
|
||||||
|
#define XEN_GETDOMAININFO_SIZE \
|
||||||
|
(hypervisor_version < 2 ? \
|
||||||
|
sizeof(xen_v0_getdomaininfo) : \
|
||||||
|
sizeof(xen_v2_getdomaininfo))
|
||||||
|
|
||||||
#define XEN_GETDOMAININFO_CLEAR(dominfo) \
|
#define XEN_GETDOMAININFO_CLEAR(dominfo) \
|
||||||
(hypervisor_version < 2 ? \
|
(hypervisor_version < 2 ? \
|
||||||
@ -645,7 +653,8 @@ virXen_getdomaininfolist(int handle, int first_domain, int maxids,
|
|||||||
{
|
{
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
|
||||||
if (mlock(dominfos, sizeof(xen_v0_getdomaininfo) * maxids) < 0) {
|
if (mlock(XEN_GETDOMAININFOLIST_DATA(dominfos),
|
||||||
|
XEN_GETDOMAININFO_SIZE * maxids) < 0) {
|
||||||
virXenError(VIR_ERR_XEN_CALL, " locking",
|
virXenError(VIR_ERR_XEN_CALL, " locking",
|
||||||
sizeof(xen_v0_getdomaininfo) * maxids);
|
sizeof(xen_v0_getdomaininfo) * maxids);
|
||||||
return (-1);
|
return (-1);
|
||||||
@ -687,7 +696,8 @@ virXen_getdomaininfolist(int handle, int first_domain, int maxids,
|
|||||||
if (ret == 0)
|
if (ret == 0)
|
||||||
ret = op.u.getdomaininfolist.num_domains;
|
ret = op.u.getdomaininfolist.num_domains;
|
||||||
}
|
}
|
||||||
if (munlock(dominfos, sizeof(xen_v0_getdomaininfo) * maxids) < 0) {
|
if (mlock(XEN_GETDOMAININFOLIST_DATA(dominfos),
|
||||||
|
XEN_GETDOMAININFO_SIZE * maxids) < 0) {
|
||||||
virXenError(VIR_ERR_XEN_CALL, " release",
|
virXenError(VIR_ERR_XEN_CALL, " release",
|
||||||
sizeof(xen_v0_getdomaininfo));
|
sizeof(xen_v0_getdomaininfo));
|
||||||
ret = -1;
|
ret = -1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user