mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-21 10:52:22 +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.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) \
|
||||
(hypervisor_version < 2 ? \
|
||||
@ -645,7 +653,8 @@ virXen_getdomaininfolist(int handle, int first_domain, int maxids,
|
||||
{
|
||||
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",
|
||||
sizeof(xen_v0_getdomaininfo) * maxids);
|
||||
return (-1);
|
||||
@ -687,7 +696,8 @@ virXen_getdomaininfolist(int handle, int first_domain, int maxids,
|
||||
if (ret == 0)
|
||||
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",
|
||||
sizeof(xen_v0_getdomaininfo));
|
||||
ret = -1;
|
||||
|
Loading…
x
Reference in New Issue
Block a user