Merge branch 'for-3.13' of git://linux-nfs.org/~bfields/linux

Pull nfsd reply cache bugfix from Bruce Fields:
 "One bugfix for nfsd crashes"

* 'for-3.13' of git://linux-nfs.org/~bfields/linux:
  nfsd: when reusing an existing repcache entry, unhash it first
This commit is contained in:
Linus Torvalds 2013-12-12 15:24:32 -08:00
Родитель 2208f6513a 781c2a5a5f
Коммит c9111b4df4
1 изменённых файлов: 8 добавлений и 1 удалений

Просмотреть файл

@ -131,6 +131,13 @@ nfsd_reply_cache_alloc(void)
return rp; return rp;
} }
static void
nfsd_reply_cache_unhash(struct svc_cacherep *rp)
{
hlist_del_init(&rp->c_hash);
list_del_init(&rp->c_lru);
}
static void static void
nfsd_reply_cache_free_locked(struct svc_cacherep *rp) nfsd_reply_cache_free_locked(struct svc_cacherep *rp)
{ {
@ -417,7 +424,7 @@ nfsd_cache_lookup(struct svc_rqst *rqstp)
rp = list_first_entry(&lru_head, struct svc_cacherep, c_lru); rp = list_first_entry(&lru_head, struct svc_cacherep, c_lru);
if (nfsd_cache_entry_expired(rp) || if (nfsd_cache_entry_expired(rp) ||
num_drc_entries >= max_drc_entries) { num_drc_entries >= max_drc_entries) {
lru_put_end(rp); nfsd_reply_cache_unhash(rp);
prune_cache_entries(); prune_cache_entries();
goto search_cache; goto search_cache;
} }