Commit cf0a586c authored by Greg Banks's avatar Greg Banks Committed by J. Bruce Fields

knfsd: fix reply cache memory corruption

Fix a regression in the reply cache introduced when the code was
converted to use proper Linux lists.  When a new entry needs to be
inserted, the case where all the entries are currently being used
by threads is not correctly detected.  This can result in memory
corruption and a crash.  In the current code this is an extremely
unlikely corner case; it would require the machine to have 1024
nfsd threads and all of them to be busy at the same time.  However,
upcoming reply cache changes make this more likely; a crash due to
this problem was actually observed in field.
Signed-off-by: default avatarGreg Banks <gnb@sgi.com>
Signed-off-by: default avatarJ. Bruce Fields <bfields@citi.umich.edu>
parent fca4217c
...@@ -174,8 +174,8 @@ nfsd_cache_lookup(struct svc_rqst *rqstp, int type) ...@@ -174,8 +174,8 @@ nfsd_cache_lookup(struct svc_rqst *rqstp, int type)
} }
} }
/* This should not happen */ /* All entries on the LRU are in-progress. This should not happen */
if (rp == NULL) { if (&rp->c_lru == &lru_head) {
static int complaints; static int complaints;
printk(KERN_WARNING "nfsd: all repcache entries locked!\n"); printk(KERN_WARNING "nfsd: all repcache entries locked!\n");
......
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