In nfs4_try_migration(), if nfs4_begin_drain_session() fails, the
previously allocated 'page' and 'locations' are not deallocated, leading to
memory leaks. To fix this issue, go to the 'out' label to free 'page' and
'locations' before returning the error.

Signed-off-by: Wenwen Wang <wen...@cs.uga.edu>
---
 fs/nfs/nfs4state.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c
index cad4e06..e916aba 100644
--- a/fs/nfs/nfs4state.c
+++ b/fs/nfs/nfs4state.c
@@ -2095,8 +2095,10 @@ static int nfs4_try_migration(struct nfs_server *server, 
const struct cred *cred
        }
 
        status = nfs4_begin_drain_session(clp);
-       if (status != 0)
-               return status;
+       if (status != 0) {
+               result = status;
+               goto out;
+       }
 
        status = nfs4_replace_transport(server, locations);
        if (status != 0) {
-- 
2.7.4

Reply via email to