[PATCH 3/3] Return errors in bc_send<br>
Andy
Andy
Fri May 25 12:38:41 EDT 2007
<br>
Release the request and task upon allocation errors.<br>
<br>
Don't just return zero, return the send_request return value.<br>
---<br>
net/sunrpc/bc_svc.c | 14 +++++++++-----<br>
1 files changed, 9 insertions(+), 5 deletions(-)<br>
<br>
diff --git a/net/sunrpc/bc_svc.c b/net/sunrpc/bc_svc.c<br>
index c713f05..a9be1b4 100644<br>
--- a/net/sunrpc/bc_svc.c<br>
+++ b/net/sunrpc/bc_svc.c<br>
@@ -131,7 +131,7 @@ void bc_release_xprt(struct rpc_task *task)<br>
int bc_send(struct rpc_rqst *req)<br>
{<br>
struct rpc_task *bc_task;<br>
- int err;<br>
+ int err = -ENOMEM;<br>
struct xdr_buf *xbufp = &req->rq_snd_buf;<br>
struct rpc_xprt *xprt = req->rq_xprt;<br>
<br>
@@ -139,13 +139,15 @@ int bc_send(struct rpc_rqst *req)<br>
* Create an rpc_task to send the data<br>
*/<br>
bc_task = bc_alloc_task(req);<br>
+ if (!bc_task)<br>
+ goto out_free_req;<br>
<br>
/*<br>
* Reserve the xprt and then try to send the request across<br>
*/<br>
err = bc_reserve_xprt(bc_task);<br>
if (err)<br>
- goto out;<br>
+ goto out_free_task;<br>
<br>
/*<br>
* Set up the xdr_buf length<br>
@@ -156,12 +158,14 @@ int bc_send(struct rpc_rqst *req)<br>
<br>
bc_release_xprt(bc_task);<br>
<br>
+out_free_req:<br>
xprt_free_bc_request(req);<br>
- return 0;<br>
-out:<br>
+ return err;<br>
+<br>
+out_free_task:<br>
bc_task->tk_rqstp = NULL;<br>
bc_release_task(bc_task);<br>
- return err;<br>
+ goto out_free_req;<br>
}<br>
<br>
/*<br>
-- <br>
<br>
<br>
<br><br><div><span class="gmail_quote">On 5/24/07, <b class="gmail_sendername">Iyer, Rahul</b> <<a href="mailto:Rahul.Iyer at netapp.com">Rahul.Iyer at netapp.com</a>> wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>My bad. I see it now.<br>Regards<br>Rahul<br><br>> -----Original Message-----<br>> From: Benny Halevy [mailto:<a href="mailto:bhalevy at panasas.com">bhalevy at panasas.com</a>]<br>> Sent: Thursday, May 24, 2007 9:07 AM
<br>> To: undisclosed-recipients<br>> Subject: [pnfs] [PATCH 2/2] bc_send: handle error from bc_alloc_task<br>><br>> >From 3ad9cc52abc6146a4e0714b797feb3473d829e56 Mon Sep 17<br>> 00:00:00 2001<br>> From: Benny Halevy <
<a href="mailto:bhalevy at panasas.com">bhalevy at panasas.com</a>><br>> Date: Thu, 24 May 2007 19:07:13 +0300<br>> Subject: [PATCH 2/2] bc_send: handle error from bc_alloc_task<br>><br>> Signed-off-by: Benny Halevy <
<a href="mailto:bhalevy at panasas.com">bhalevy at panasas.com</a>><br>> ---<br>> net/sunrpc/bc_svc.c | 5 +++++<br>> 1 files changed, 5 insertions(+), 0 deletions(-)<br>><br>> diff --git a/net/sunrpc/bc_svc.c b/net/sunrpc/bc_svc.c
<br>> index fbea284..a8519d5 100644<br>> --- a/net/sunrpc/bc_svc.c<br>> +++ b/net/sunrpc/bc_svc.c<br>> @@ -139,6 +139,10 @@ int bc_send(struct rpc_rqst *req)<br>> * Create an rpc_task to send the data
<br>> */<br>> bc_task = bc_alloc_task(req);<br>> + if (!bc_task) {<br>> + err = -ENOMEM;<br>> + goto out_no_free;<br>> + }<br>><br>> /*<br>> * Reserve the xprt and then try to send the request across
<br>> @@ -158,6 +162,7 @@ int bc_send(struct rpc_rqst *req)<br>> out:<br>> bc_task->tk_rqstp = NULL;<br>> bc_release_task(bc_task);<br>> +out_no_free:<br>> xprt_free_bc_request(req);
<br>> return err;<br>> }<br>> --<br>> 1.5.1<br>><br>> _______________________________________________<br>> pNFS mailing list<br>> <a href="mailto:pNFS at linux-nfs.org">pNFS at linux-nfs.org</a><br>
> <a href="http://linux-nfs.org/cgi-bin/mailman/listinfo/pnfs">http://linux-nfs.org/cgi-bin/mailman/listinfo/pnfs</a><br>><br>_______________________________________________<br>pNFS mailing list<br><a href="mailto:pNFS at linux-nfs.org">
pNFS at linux-nfs.org</a><br><a href="http://linux-nfs.org/cgi-bin/mailman/listinfo/pnfs">http://linux-nfs.org/cgi-bin/mailman/listinfo/pnfs</a><br><br></blockquote></div><br>
------=_Part_128865_29770799.1180111924724--
More information about the pNFS
mailing list