mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 03:12:22 +00:00
nwfilter: Fix double free of pointer
https://bugzilla.redhat.com/show_bug.cgi?id=1071181 Commit 49b59a15 fixed one problem but masks another one related to pointer freeing. Avoid putting of the virNWFilterSnoopReq once the thread has been started. It belongs to the thread and the thread will call virNWFilterSnoopReqPut() on it. Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
This commit is contained in:
parent
962abaf538
commit
963dcf905c
@ -1605,6 +1605,7 @@ virNWFilterDHCPSnoopReq(virNWFilterTechDriverPtr techdriver,
|
||||
int tmp;
|
||||
virThread thread;
|
||||
virNWFilterVarValuePtr dhcpsrvrs;
|
||||
bool threadPuts = false;
|
||||
|
||||
virNWFilterSnoopIFKeyFMT(ifkey, vmuuid, macaddr);
|
||||
|
||||
@ -1698,6 +1699,8 @@ virNWFilterDHCPSnoopReq(virNWFilterTechDriverPtr techdriver,
|
||||
goto exit_snoopreq_unlock;
|
||||
}
|
||||
|
||||
threadPuts = true;
|
||||
|
||||
virAtomicIntInc(&virNWFilterSnoopState.nThreads);
|
||||
|
||||
req->threadkey = virNWFilterSnoopActivate(req);
|
||||
@ -1737,7 +1740,8 @@ exit_rem_ifnametokey:
|
||||
exit_snoopunlock:
|
||||
virNWFilterSnoopUnlock();
|
||||
exit_snoopreqput:
|
||||
virNWFilterSnoopReqPut(req);
|
||||
if (!threadPuts)
|
||||
virNWFilterSnoopReqPut(req);
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user