cache: Hold cache reference while a cache is being provided

Signed-off-by: Thomas Graf <tgraf@suug.ch>
This commit is contained in:
Thomas Graf 2012-11-15 20:49:33 +01:00
parent c658a6eef8
commit 3ed1f9ab5f

View file

@ -217,8 +217,10 @@ void nl_cache_mngt_provide(struct nl_cache *cache)
ops = cache_ops_lookup_for_obj(cache->c_ops->co_obj_ops);
if (!ops)
BUG();
else
else {
nl_cache_get(cache);
ops->co_major_cache = cache;
}
}
/**
@ -236,8 +238,10 @@ void nl_cache_mngt_unprovide(struct nl_cache *cache)
ops = cache_ops_lookup_for_obj(cache->c_ops->co_obj_ops);
if (!ops)
BUG();
else if (ops->co_major_cache == cache)
else if (ops->co_major_cache == cache) {
nl_cache_free(ops->co_major_cache);
ops->co_major_cache = NULL;
}
}
struct nl_cache *__nl_cache_mngt_require(const char *name)