From 2d5b3a484cd8c1697fb2a1298c1ae7664e9a23e7 Mon Sep 17 00:00:00 2001 From: Trond Myklebust Date: Thu, 29 Apr 2021 14:56:24 +0800 Subject: [PATCH] sunrpc: Fix potential leaks in sunrpc_cache_unhash() mainline inclusion from mainline-v5.6-rc1 commit 1d82163714c16ebe09c7a8c9cd3cef7abcc16208 category: bugfix bugzilla: 51810 CVE: NA ------------------------------------------------- When we unhash the cache entry, we need to handle any pending upcalls by calling cache_fresh_unlocked(). Signed-off-by: Trond Myklebust Signed-off-by: J. Bruce Fields Signed-off-by: Lu Wei Reviewed-by: Yue Haibing Signed-off-by: Yang Yingliang --- net/sunrpc/cache.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/net/sunrpc/cache.c b/net/sunrpc/cache.c index afab8fce9205..d2c089e5041f 100644 --- a/net/sunrpc/cache.c +++ b/net/sunrpc/cache.c @@ -1855,7 +1855,9 @@ void sunrpc_cache_unhash(struct cache_detail *cd, struct cache_head *h) if (!hlist_unhashed(&h->cache_list)){ hlist_del_init(&h->cache_list); cd->entries--; + set_bit(CACHE_CLEANED, &h->flags); write_unlock(&cd->hash_lock); + cache_fresh_unlocked(h, cd); cache_put(h, cd); } else write_unlock(&cd->hash_lock); -- GitLab