nwfilter_dhcpsnoop: Replace virNWFilterSnoopActiveLock macros

Use automatic mutex management instead.

Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Tim Wiederhake 2022-03-08 12:45:38 +01:00
parent 398745c3b3
commit f61baec724

View File

@ -93,14 +93,6 @@ struct virNWFilterSnoopState {
do { \ do { \
virMutexUnlock(&virNWFilterSnoopState.snoopLock); \ virMutexUnlock(&virNWFilterSnoopState.snoopLock); \
} while (0) } while (0)
# define virNWFilterSnoopActiveLock() \
do { \
virMutexLock(&virNWFilterSnoopState.activeLock); \
} while (0)
# define virNWFilterSnoopActiveUnlock() \
do { \
virMutexUnlock(&virNWFilterSnoopState.activeLock); \
} while (0)
# define VIR_IFKEY_LEN ((VIR_UUID_STRING_BUFLEN) + (VIR_MAC_STRING_BUFLEN)) # define VIR_IFKEY_LEN ((VIR_UUID_STRING_BUFLEN) + (VIR_MAC_STRING_BUFLEN))
@ -281,47 +273,35 @@ static char *
virNWFilterSnoopActivate(virNWFilterSnoopReq *req) virNWFilterSnoopActivate(virNWFilterSnoopReq *req)
{ {
g_autofree char *key = g_strdup_printf("%p-%d", req, req->ifindex); g_autofree char *key = g_strdup_printf("%p-%d", req, req->ifindex);
char *ret = NULL; VIR_LOCK_GUARD lock = virLockGuardLock(&virNWFilterSnoopState.activeLock);
virNWFilterSnoopActiveLock(); if (virHashAddEntry(virNWFilterSnoopState.active, key, (void *)0x1) < 0)
return NULL;
if (virHashAddEntry(virNWFilterSnoopState.active, key, (void *)0x1) == 0) return g_steal_pointer(&key);
ret = g_steal_pointer(&key);
virNWFilterSnoopActiveUnlock();
return ret;
} }
static void static void
virNWFilterSnoopCancel(char **threadKey) virNWFilterSnoopCancel(char **threadKey)
{ {
VIR_LOCK_GUARD lock = virLockGuardLock(&virNWFilterSnoopState.activeLock);
if (*threadKey == NULL) if (*threadKey == NULL)
return; return;
virNWFilterSnoopActiveLock();
ignore_value(virHashRemoveEntry(virNWFilterSnoopState.active, *threadKey)); ignore_value(virHashRemoveEntry(virNWFilterSnoopState.active, *threadKey));
g_clear_pointer(threadKey, g_free); g_clear_pointer(threadKey, g_free);
virNWFilterSnoopActiveUnlock();
} }
static bool static bool
virNWFilterSnoopIsActive(char *threadKey) virNWFilterSnoopIsActive(char *threadKey)
{ {
void *entry; VIR_LOCK_GUARD lock = virLockGuardLock(&virNWFilterSnoopState.activeLock);
if (threadKey == NULL) if (threadKey == NULL)
return false; return false;
virNWFilterSnoopActiveLock(); return virHashLookup(virNWFilterSnoopState.active, threadKey) != NULL;
entry = virHashLookup(virNWFilterSnoopState.active, threadKey);
virNWFilterSnoopActiveUnlock();
return entry != NULL;
} }
/* /*
@ -2083,9 +2063,9 @@ virNWFilterDHCPSnoopShutdown(void)
virNWFilterSnoopUnlock(); virNWFilterSnoopUnlock();
virNWFilterSnoopActiveLock(); VIR_WITH_MUTEX_LOCK_GUARD(&virNWFilterSnoopState.activeLock) {
g_clear_pointer(&virNWFilterSnoopState.active, g_hash_table_unref); g_clear_pointer(&virNWFilterSnoopState.active, g_hash_table_unref);
virNWFilterSnoopActiveUnlock(); }
} }
#else /* WITH_LIBPCAP */ #else /* WITH_LIBPCAP */