| From 954032d2527f2fce7355ba70709b5e143d6b686f Mon Sep 17 00:00:00 2001 |
| From: J. Bruce Fields <bfields@redhat.com> |
| Date: Thu, 24 Mar 2011 22:51:14 -0400 |
| Subject: nfsd: fix auth_domain reference leak on nlm operations |
| |
| From: J. Bruce Fields <bfields@redhat.com> |
| |
| commit 954032d2527f2fce7355ba70709b5e143d6b686f upstream. |
| |
| This was noticed by users who performed more than 2^32 lock operations |
| and hence made this counter overflow (eventually leading to |
| use-after-free's). Setting rq_client to NULL here means that it won't |
| later get auth_domain_put() when it should be. |
| |
| Appears to have been introduced in 2.5.42 by "[PATCH] kNFSd: Move auth |
| domain lookup into svcauth" which moved most of the rq_client handling |
| to common svcauth code, but left behind this one line. |
| |
| Cc: Neil Brown <neilb@suse.de> |
| Signed-off-by: J. Bruce Fields <bfields@redhat.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| fs/nfsd/lockd.c | 1 - |
| 1 file changed, 1 deletion(-) |
| |
| --- a/fs/nfsd/lockd.c |
| +++ b/fs/nfsd/lockd.c |
| @@ -38,7 +38,6 @@ nlm_fopen(struct svc_rqst *rqstp, struct |
| exp_readlock(); |
| nfserr = nfsd_open(rqstp, &fh, S_IFREG, NFSD_MAY_LOCK, filp); |
| fh_put(&fh); |
| - rqstp->rq_client = NULL; |
| exp_readunlock(); |
| /* We return nlm error codes as nlm doesn't know |
| * about nfsd, but nfsd does know about nlm.. |