[PATCH] virnwfilterobj: Don't use virObjectLockGuard() with virNWFilterObj

While its name would suggest that virNWFilterObj is an actual virObject it is not. It's a plain structure (with virMutex as its first member). Therefore, when locking the struct virObjectLockGuard() can' be used and virLockGuardLock() must be used instead. Spotted-by: Martin Kletzander <mkletzan@redhat.com> Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/conf/virnwfilterobj.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/conf/virnwfilterobj.c b/src/conf/virnwfilterobj.c index 309f8bddb4..e9bb2b1811 100644 --- a/src/conf/virnwfilterobj.c +++ b/src/conf/virnwfilterobj.c @@ -386,7 +386,7 @@ virNWFilterObjListCount(void *key G_GNUC_UNUSED, { virNWFilterObj *obj = payload; struct virNWFilterObjListData *data = opaque; - VIR_LOCK_GUARD lock = virObjectLockGuard(obj); + VIR_LOCK_GUARD lock = virLockGuardLock(&obj->lock); if (data->filter(data->conn, obj->def)) data->count++; @@ -423,7 +423,7 @@ virNWFilterObjListCopyNames(void *key G_GNUC_UNUSED, { virNWFilterObj *obj = payload; struct virNWFilterNameData *data = opaque; - VIR_LOCK_GUARD lock = virObjectLockGuard(obj); + VIR_LOCK_GUARD lock = virLockGuardLock(&obj->lock); if (data->filter && !data->filter(data->conn, obj->def)) -- 2.34.1

On Fri, Mar 18, 2022 at 11:43:34AM +0100, Michal Privoznik wrote:
While its name would suggest that virNWFilterObj is an actual virObject it is not. It's a plain structure (with virMutex as its first member). Therefore, when locking the struct virObjectLockGuard() can' be used and virLockGuardLock() must be used instead.
Spotted-by: Martin Kletzander <mkletzan@redhat.com> Signed-off-by: Michal Privoznik <mprivozn@redhat.com> ---
This fixes the crasher in the integration CI we saw yesterday: Reviewed-by: Erik Skultety <eskultet@redhat.com> After this patch, there's still a deadlock [1], but you should push this fix in the meantime. [1] https://paste.centos.org/view/6a7bfd66
participants (2)
-
Erik Skultety
-
Michal Privoznik