All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chuck Lever <chuck.lever-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
To: linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: [PATCH v2 3/6] svcrdma: Skip put_page() when send_reply() fails
Date: Mon, 22 Aug 2016 14:57:59 -0400	[thread overview]
Message-ID: <20160822185759.12076.92949.stgit@klimt.1015granger.net> (raw)
In-Reply-To: <20160822185459.12076.43516.stgit-Hs+gFlyCn65vLzlybtyyYzGyq/o6K9yX@public.gmane.org>

Message from syslogd@klimt at Aug 18 17:00:37 ...
 kernel:page:ffffea0020639b00 count:0 mapcount:0 mapping:          (null) index:0x0
Aug 18 17:00:37 klimt kernel: flags: 0x2fffff80000000()
Aug 18 17:00:37 klimt kernel: page dumped because: VM_BUG_ON_PAGE(page_ref_count(page) == 0)

Aug 18 17:00:37 klimt kernel: kernel BUG at /home/cel/src/linux/linux-2.6/include/linux/mm.h:445!
Aug 18 17:00:37 klimt kernel: RIP: 0010:[<ffffffffa05c21c1>] svc_rdma_sendto+0x641/0x820 [rpcrdma]

send_reply() assigns its page argument as the first page of ctxt. On
error, send_reply() already invokes svc_rdma_put_context(ctxt, 1);
which does a put_page() on that very page. No need to do that again
as svc_rdma_sendto exits.

Fixes: 3e1eeb980822 ("svcrdma: Close connection when a send error occurs")
Signed-off-by: Chuck Lever <chuck.lever-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
---
 net/sunrpc/xprtrdma/svc_rdma_sendto.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/sunrpc/xprtrdma/svc_rdma_sendto.c b/net/sunrpc/xprtrdma/svc_rdma_sendto.c
index e5b49e6..3b95b19 100644
--- a/net/sunrpc/xprtrdma/svc_rdma_sendto.c
+++ b/net/sunrpc/xprtrdma/svc_rdma_sendto.c
@@ -621,7 +621,7 @@ int svc_rdma_sendto(struct svc_rqst *rqstp)
 	ret = send_reply(rdma, rqstp, res_page, rdma_resp, vec,
 			 inline_bytes);
 	if (ret < 0)
-		goto err1;
+		goto err0;
 
 	svc_rdma_put_req_map(rdma, vec);
 	dprintk("svcrdma: send_reply returns %d\n", ret);

--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

WARNING: multiple messages have this Message-ID (diff)
From: Chuck Lever <chuck.lever@oracle.com>
To: linux-rdma@vger.kernel.org, linux-nfs@vger.kernel.org
Subject: [PATCH v2 3/6] svcrdma: Skip put_page() when send_reply() fails
Date: Mon, 22 Aug 2016 14:57:59 -0400	[thread overview]
Message-ID: <20160822185759.12076.92949.stgit@klimt.1015granger.net> (raw)
In-Reply-To: <20160822185459.12076.43516.stgit@klimt.1015granger.net>

Message from syslogd@klimt at Aug 18 17:00:37 ...
 kernel:page:ffffea0020639b00 count:0 mapcount:0 mapping:          (null) index:0x0
Aug 18 17:00:37 klimt kernel: flags: 0x2fffff80000000()
Aug 18 17:00:37 klimt kernel: page dumped because: VM_BUG_ON_PAGE(page_ref_count(page) == 0)

Aug 18 17:00:37 klimt kernel: kernel BUG at /home/cel/src/linux/linux-2.6/include/linux/mm.h:445!
Aug 18 17:00:37 klimt kernel: RIP: 0010:[<ffffffffa05c21c1>] svc_rdma_sendto+0x641/0x820 [rpcrdma]

send_reply() assigns its page argument as the first page of ctxt. On
error, send_reply() already invokes svc_rdma_put_context(ctxt, 1);
which does a put_page() on that very page. No need to do that again
as svc_rdma_sendto exits.

Fixes: 3e1eeb980822 ("svcrdma: Close connection when a send error occurs")
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
---
 net/sunrpc/xprtrdma/svc_rdma_sendto.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/sunrpc/xprtrdma/svc_rdma_sendto.c b/net/sunrpc/xprtrdma/svc_rdma_sendto.c
index e5b49e6..3b95b19 100644
--- a/net/sunrpc/xprtrdma/svc_rdma_sendto.c
+++ b/net/sunrpc/xprtrdma/svc_rdma_sendto.c
@@ -621,7 +621,7 @@ int svc_rdma_sendto(struct svc_rqst *rqstp)
 	ret = send_reply(rdma, rqstp, res_page, rdma_resp, vec,
 			 inline_bytes);
 	if (ret < 0)
-		goto err1;
+		goto err0;
 
 	svc_rdma_put_req_map(rdma, vec);
 	dprintk("svcrdma: send_reply returns %d\n", ret);


  parent reply	other threads:[~2016-08-22 18:57 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-22 18:57 [PATCH v2 0/6] server-side NFS/RDMA patches proposed for v4.9 Chuck Lever
2016-08-22 18:57 ` Chuck Lever
     [not found] ` <20160822185459.12076.43516.stgit-Hs+gFlyCn65vLzlybtyyYzGyq/o6K9yX@public.gmane.org>
2016-08-22 18:57   ` [PATCH v2 1/6] SUNRPC: Silence WARN_ON when NFSv4.1 over RDMA is in use Chuck Lever
2016-08-22 18:57     ` Chuck Lever
     [not found]     ` <20160822185742.12076.34446.stgit-Hs+gFlyCn65vLzlybtyyYzGyq/o6K9yX@public.gmane.org>
2016-08-23 17:39       ` Chuck Lever
2016-08-23 17:39         ` Chuck Lever
     [not found]         ` <3E0207D8-CFB2-4233-B92B-165B10E9920E-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2016-08-23 20:53           ` J. Bruce Fields
2016-08-23 20:53             ` J. Bruce Fields
     [not found]             ` <20160823205355.GA29452-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2016-08-23 21:05               ` Chuck Lever
2016-08-23 21:05                 ` Chuck Lever
     [not found]                 ` <AD25F201-01A4-4F4F-BAE7-9E984E12EE8D-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2016-08-23 22:21                   ` Trond Myklebust
2016-08-23 22:21                     ` Trond Myklebust
     [not found]                     ` <BB84506B-BC92-4325-A81C-4BC7D39F471C-7I+n7zu2hftEKMMhf/gKZA@public.gmane.org>
2016-08-24 13:38                       ` Fields Bruce James
2016-08-24 13:38                         ` Fields Bruce James
2016-08-24 16:34                       ` Chuck Lever
2016-08-24 16:34                         ` Chuck Lever
2016-08-22 18:57   ` [PATCH v2 2/6] svcrdma: Tail iovec leaves an orphaned DMA mapping Chuck Lever
2016-08-22 18:57     ` Chuck Lever
2016-08-22 18:57   ` Chuck Lever [this message]
2016-08-22 18:57     ` [PATCH v2 3/6] svcrdma: Skip put_page() when send_reply() fails Chuck Lever
2016-08-22 18:58   ` [PATCH v2 4/6] rpcrdma: RDMA/CM private message data structure Chuck Lever
2016-08-22 18:58     ` Chuck Lever
2016-08-22 18:58   ` [PATCH v2 5/6] svcrdma: Server-side support for rpcrdma_connect_private Chuck Lever
2016-08-22 18:58     ` Chuck Lever
2016-08-22 18:58   ` [PATCH v2 6/6] svcrdma: support Remote Invalidation for prototyping Chuck Lever
2016-08-22 18:58     ` Chuck Lever

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160822185759.12076.92949.stgit@klimt.1015granger.net \
    --to=chuck.lever-qhclzuegtsvqt0dzr+alfa@public.gmane.org \
    --cc=linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.