diff mbox

[04/25] SUNRPC: remove BUG_ON() from call_transmit()

Message ID 1350405043-39316-4-git-send-email-dros@netapp.com (mailing list archive)
State New, archived
Headers show

Commit Message

Weston Andros Adamson Oct. 16, 2012, 4:30 p.m. UTC
Replace BUG_ON() with WARN_ON_ONCE() and if the error condition is true
attempt to gracefully recover by calling rpc_exit().

Signed-off-by: Weston Andros Adamson <dros@netapp.com>
---
 net/sunrpc/clnt.c |    6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

Comments

Trond Myklebust Oct. 18, 2012, 6:49 p.m. UTC | #1
T24gVHVlLCAyMDEyLTEwLTE2IGF0IDEyOjMwIC0wNDAwLCBXZXN0b24gQW5kcm9zIEFkYW1zb24g
d3JvdGU6DQo+IFJlcGxhY2UgQlVHX09OKCkgd2l0aCBXQVJOX09OX09OQ0UoKSBhbmQgaWYgdGhl
IGVycm9yIGNvbmRpdGlvbiBpcyB0cnVlDQo+IGF0dGVtcHQgdG8gZ3JhY2VmdWxseSByZWNvdmVy
IGJ5IGNhbGxpbmcgcnBjX2V4aXQoKS4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IFdlc3RvbiBBbmRy
b3MgQWRhbXNvbiA8ZHJvc0BuZXRhcHAuY29tPg0KPiAtLS0NCj4gIG5ldC9zdW5ycGMvY2xudC5j
IHwgICAgNiArKysrKy0NCj4gIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDEgZGVs
ZXRpb24oLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9uZXQvc3VucnBjL2NsbnQuYyBiL25ldC9zdW5y
cGMvY2xudC5jDQo+IGluZGV4IGZlOGExMzMuLjc2ZDE3MzAgMTAwNjQ0DQo+IC0tLSBhL25ldC9z
dW5ycGMvY2xudC5jDQo+ICsrKyBiL25ldC9zdW5ycGMvY2xudC5jDQo+IEBAIC0xNjYxLDcgKzE2
NjEsMTEgQEAgY2FsbF90cmFuc21pdChzdHJ1Y3QgcnBjX3Rhc2sgKnRhc2spDQo+ICAJdGFzay0+
dGtfYWN0aW9uID0gY2FsbF90cmFuc21pdF9zdGF0dXM7DQo+ICAJLyogRW5jb2RlIGhlcmUgc28g
dGhhdCBycGNzZWNfZ3NzIGNhbiB1c2UgY29ycmVjdCBzZXF1ZW5jZSBudW1iZXIuICovDQo+ICAJ
aWYgKHJwY190YXNrX25lZWRfZW5jb2RlKHRhc2spKSB7DQo+IC0JCUJVR19PTih0YXNrLT50a19y
cXN0cC0+cnFfYnl0ZXNfc2VudCAhPSAwKTsNCj4gKwkJV0FSTl9PTih0YXNrLT50a19ycXN0cC0+
cnFfYnl0ZXNfc2VudCAhPSAwKTsNCg0KV0FSTl9PTl9PTkNFKCk/DQoNCj4gKwkJaWYgKHRhc2st
PnRrX3Jxc3RwLT5ycV9ieXRlc19zZW50ICE9IDApIHsNCj4gKwkJCXJwY19leGl0KHRhc2ssIC1F
SU5WQUwpOw0KPiArCQkJcmV0dXJuOw0KPiArCQl9DQo+ICAJCXJwY194ZHJfZW5jb2RlKHRhc2sp
Ow0KPiAgCQkvKiBEaWQgdGhlIGVuY29kZSByZXN1bHQgaW4gYW4gZXJyb3IgY29uZGl0aW9uPyAq
Lw0KPiAgCQlpZiAodGFzay0+dGtfc3RhdHVzICE9IDApIHsNCg0KLS0gDQpUcm9uZCBNeWtsZWJ1
c3QNCkxpbnV4IE5GUyBjbGllbnQgbWFpbnRhaW5lcg0KDQpOZXRBcHANClRyb25kLk15a2xlYnVz
dEBuZXRhcHAuY29tDQp3d3cubmV0YXBwLmNvbQ0K
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Trond Myklebust Oct. 18, 2012, 7:10 p.m. UTC | #2
On Tue, 2012-10-16 at 12:30 -0400, Weston Andros Adamson wrote:
> Replace BUG_ON() with WARN_ON_ONCE() and if the error condition is true

> attempt to gracefully recover by calling rpc_exit().

> 

> Signed-off-by: Weston Andros Adamson <dros@netapp.com>

> ---

>  net/sunrpc/clnt.c |    6 +++++-

>  1 file changed, 5 insertions(+), 1 deletion(-)

> 

> diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c

> index fe8a133..76d1730 100644

> --- a/net/sunrpc/clnt.c

> +++ b/net/sunrpc/clnt.c

> @@ -1661,7 +1661,11 @@ call_transmit(struct rpc_task *task)

>  	task->tk_action = call_transmit_status;

>  	/* Encode here so that rpcsec_gss can use correct sequence number. */

>  	if (rpc_task_need_encode(task)) {

> -		BUG_ON(task->tk_rqstp->rq_bytes_sent != 0);

> +		WARN_ON(task->tk_rqstp->rq_bytes_sent != 0);

> +		if (task->tk_rqstp->rq_bytes_sent != 0) {

> +			rpc_exit(task, -EINVAL);

> +			return;

> +		}


Actually, let's just get rid of this one too...

>  		rpc_xdr_encode(task);

>  		/* Did the encode result in an error condition? */

>  		if (task->tk_status != 0) {


-- 
Trond Myklebust
Linux NFS client maintainer

NetApp
Trond.Myklebust@netapp.com
www.netapp.com
diff mbox

Patch

diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
index fe8a133..76d1730 100644
--- a/net/sunrpc/clnt.c
+++ b/net/sunrpc/clnt.c
@@ -1661,7 +1661,11 @@  call_transmit(struct rpc_task *task)
 	task->tk_action = call_transmit_status;
 	/* Encode here so that rpcsec_gss can use correct sequence number. */
 	if (rpc_task_need_encode(task)) {
-		BUG_ON(task->tk_rqstp->rq_bytes_sent != 0);
+		WARN_ON(task->tk_rqstp->rq_bytes_sent != 0);
+		if (task->tk_rqstp->rq_bytes_sent != 0) {
+			rpc_exit(task, -EINVAL);
+			return;
+		}
 		rpc_xdr_encode(task);
 		/* Did the encode result in an error condition? */
 		if (task->tk_status != 0) {