From: Thomas Graf Date: Thu, 15 Nov 2012 19:49:33 +0000 (+0100) Subject: cache: Hold cache reference while a cache is being provided X-Git-Tag: libnl3_2_15~15 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3ed1f9ab5fba2b43fb3c67ac03e0da90ac042ed0;p=libnl cache: Hold cache reference while a cache is being provided Signed-off-by: Thomas Graf --- 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)