On Thu, Feb 26, 2015 at 15:17:36 +0100, Michal Privoznik wrote:
Every API that touches internal structure of the object must lock
the object first. Not every API that has the object as an
argument needs to do that though. Some APIs just pass the object
to lower layers, which, however, must lock the object then. Look
Too, many, commas.
at the code, you'll get my meaning soon.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
src/conf/network_conf.c | 39 +++++++++++++++++++++++++++++++++------
1 file changed, 33 insertions(+), 6 deletions(-)
@@ -631,6 +644,7 @@ void
virNetworkRemoveInactive(virNetworkObjListPtr nets,
size_t i;
virObjectUnlock(net);
+ virObjectLock(nets);
Hmm, okay. My comment to the previous patch is invalid as this would
actually introduce a lock ordering problem.
for (i = 0; i < nets->count; i++) {
virObjectLock(nets->objs[i]);
if (nets->objs[i] == net) {
@@ -642,6 +656,7 @@ void virNetworkRemoveInactive(virNetworkObjListPtr nets,
}
virObjectUnlock(nets->objs[i]);
}
+ virObjectUnlock(nets);
}
/* return ips[index], or NULL if there aren't enough ips */
ACK