From 3ed1f9ab5fba2b43fb3c67ac03e0da90ac042ed0 Mon Sep 17 00:00:00 2001 From: Thomas Graf Date: Thu, 15 Nov 2012 20:49:33 +0100 Subject: cache: Hold cache reference while a cache is being provided Signed-off-by: Thomas Graf --- lib/cache_mngt.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/cache_mngt.c b/lib/cache_mngt.c index fa1ac22..540c5c1 100644 --- a/lib/cache_mngt.c +++ b/lib/cache_mngt.c @@ -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) -- cgit v1.2.1