[PATCH 1/2] bc_send: always free bc_task and bc_request

Benny Halevy bhalevy at panasas.com
Thu May 24 11:58:17 EDT 2007


There seem to be two leaks in bc_send:
1. xprt_free_bc_request(req) is called only on the success path
2. bc_release_task(bc_task) is called only on the error path

Signed-off-by: Benny Halevy <bhalevy at panasas.com>
---
 net/sunrpc/bc_svc.c |    4 +---
 1 files changed, 1 insertions(+), 3 deletions(-)

diff --git a/net/sunrpc/bc_svc.c b/net/sunrpc/bc_svc.c
index c713f05..fbea284 100644
--- a/net/sunrpc/bc_svc.c
+++ b/net/sunrpc/bc_svc.c
@@ -155,12 +155,10 @@ int bc_send(struct rpc_rqst *req)
 	err = xprt->ops->send_request(bc_task);
 	
 	bc_release_xprt(bc_task);
-
-	xprt_free_bc_request(req);
-	return 0;
 out:
 	bc_task->tk_rqstp = NULL;
 	bc_release_task(bc_task);
+	xprt_free_bc_request(req);
 	return err;
 }
 
-- 
1.5.1



More information about the pNFS mailing list