| From: "J. Bruce Fields" <bfields@redhat.com> |
| Date: Wed, 29 Aug 2012 15:21:58 -0700 |
| Subject: nfsd4: fix nfs4 stateid leak |
| |
| commit cf9182e90b2af04245ac4fae497fe73fc71285b4 upstream. |
| |
| Processes that open and close multiple files may end up setting this |
| oo_last_closed_stid without freeing what was previously pointed to. |
| This can result in a major leak, visible for example by watching the |
| nfsd4_stateids line of /proc/slabinfo. |
| |
| Reported-by: Cyril B. <cbay@excellency.fr> |
| Tested-by: Cyril B. <cbay@excellency.fr> |
| Signed-off-by: J. Bruce Fields <bfields@redhat.com> |
| Signed-off-by: Ben Hutchings <ben@decadent.org.uk> |
| --- |
| fs/nfsd/nfs4state.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| --- a/fs/nfsd/nfs4state.c |
| +++ b/fs/nfsd/nfs4state.c |
| @@ -3673,6 +3673,7 @@ nfsd4_close(struct svc_rqst *rqstp, stru |
| memcpy(&close->cl_stateid, &stp->st_stid.sc_stateid, sizeof(stateid_t)); |
| |
| nfsd4_close_open_stateid(stp); |
| + release_last_closed_stateid(oo); |
| oo->oo_last_closed_stid = stp; |
| |
| /* place unused nfs4_stateowners on so_close_lru list to be |