nfsd41: sanity check client drc maxreqs

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Linux Kernel Mailing List
Date: Monday, June 22, 2009 - 2:05 pm

Gitweb:     http://git.kernel.org/linus/5d77ddfbcb062f2617ea79d7a371b4bc78f28417
Commit:     5d77ddfbcb062f2617ea79d7a371b4bc78f28417
Parent:     6c18ba9f5e506b8115b89b1aa7bdc25178f40b0a
Author:     Andy Adamson <andros@netapp.com>
AuthorDate: Tue Jun 16 04:19:38 2009 +0300
Committer:  J. Bruce Fields <bfields@citi.umich.edu>
CommitDate: Tue Jun 16 17:13:16 2009 -0700

    nfsd41: sanity check client drc maxreqs
    
    Ensure the client requested maximum requests are between 1 and
    NFSD_MAX_SLOTS_PER_SESSION
    
    Signed-off-by: Andy Adamson <andros@netapp.com>
    Signed-off-by: Benny Halevy <bhalevy@panasas.com>
    Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
---
 fs/nfsd/nfs4state.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
index d5caf2a..99570c4 100644
--- a/fs/nfsd/nfs4state.c
+++ b/fs/nfsd/nfs4state.c
@@ -425,6 +425,11 @@ static int set_forechannel_maxreqs(struct nfsd4_channel_attrs *fchan)
 {
 	int status = 0, np = fchan->maxreqs * NFSD_PAGES_PER_SLOT;
 
+	if (fchan->maxreqs < 1)
+		return nfserr_inval;
+	else if (fchan->maxreqs > NFSD_MAX_SLOTS_PER_SESSION)
+		fchan->maxreqs = NFSD_MAX_SLOTS_PER_SESSION;
+
 	spin_lock(&nfsd_serv->sv_lock);
 	if (np + nfsd_serv->sv_drc_pages_used > nfsd_serv->sv_drc_max_pages)
 		np = nfsd_serv->sv_drc_max_pages - nfsd_serv->sv_drc_pages_used;
--
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
nfsd41: sanity check client drc maxreqs, Linux Kernel Mailing ..., (Mon Jun 22, 2:05 pm)