Commit e091bcb6 authored by Neil Brown's avatar Neil Brown Committed by Linus Torvalds

[PATCH] kNFSd: Fix problems when releasing cache item.

When releasing a cache item we always release anything
that is part of the key, but we ONLY release the content
is if it is valid.  i.e. if CACHE_VALID but not CACHE_NEGATIVE.
parent 64dc183f
......@@ -70,7 +70,8 @@ void expkey_put(struct cache_head *item, struct cache_detail *cd)
{
if (cache_put(item, cd)) {
struct svc_expkey *key = container_of(item, struct svc_expkey, h);
if (key->ek_export)
if (test_bit(CACHE_VALID, &item->flags) &&
!test_bit(CACHE_NEGATIVE, &item->flags))
exp_put(key->ek_export);
auth_domain_put(key->ek_client);
kfree(key);
......
......@@ -90,7 +90,9 @@ void ip_map_put(struct cache_head *item, struct cache_detail *cd)
{
struct ip_map *im = container_of(item, struct ip_map,h);
if (cache_put(item, cd)) {
auth_domain_put(&im->m_client->h);
if (test_bit(CACHE_VALID, &item->flags) &&
!test_bit(CACHE_NEGATIVE, &item->flags))
auth_domain_put(&im->m_client->h);
kfree(im);
}
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment