public inbox for linux-nfs@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] sunrpc: fix error path - actually return ERR_PTR() on error
@ 2010-03-12 13:48 Jani Nikula
  2010-03-12 14:14 ` Tetsuo Handa
  0 siblings, 1 reply; 4+ messages in thread
From: Jani Nikula @ 2010-03-12 13:48 UTC (permalink / raw)
  To: Trond.Myklebust, bfields, neilb, davem
  Cc: linux-nfs, netdev, akpm, ext-jani.1.nikula

Signed-off-by: Jani Nikula <ext-jani.1.nikula@nokia.com>

---

NOTE: I'm afraid I'm unable to test this; please consider this more a
bug report than a complete patch.
---
 net/sunrpc/xprtsock.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c
index 7124129..5b83ff9 100644
--- a/net/sunrpc/xprtsock.c
+++ b/net/sunrpc/xprtsock.c
@@ -2481,7 +2481,7 @@ static struct rpc_xprt *xs_setup_bc_tcp(struct xprt_create *args)
 	struct svc_sock *bc_sock;
 
 	if (!args->bc_xprt)
-		ERR_PTR(-EINVAL);
+		return ERR_PTR(-EINVAL);
 
 	xprt = xs_setup_xprt(args, xprt_tcp_slot_table_entries);
 	if (IS_ERR(xprt))
-- 
1.6.5.2


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] sunrpc: fix error path - actually return ERR_PTR() on error
  2010-03-12 13:48 [PATCH] sunrpc: fix error path - actually return ERR_PTR() on error Jani Nikula
@ 2010-03-12 14:14 ` Tetsuo Handa
  2010-03-12 15:09   ` Trond Myklebust
  0 siblings, 1 reply; 4+ messages in thread
From: Tetsuo Handa @ 2010-03-12 14:14 UTC (permalink / raw)
  To: ext-jani.1.nikula, Trond.Myklebust, bfields, neilb, davem,
	batsakis, bhalevy
  Cc: linux-nfs, netdev, akpm

Jani Nikula wrote:
> Signed-off-by: Jani Nikula <ext-jani.1.nikula@nokia.com>
> 
> ---
> 
> NOTE: I'm afraid I'm unable to test this; please consider this more a
> bug report than a complete patch.
> ---
Indeed, it has to be "return ERR_PTR(-EINVAL);".
Otherwise, it will trigger NULL pointer dereference some lines later.

    bc_sock = container_of(args->bc_xprt, struct svc_sock, sk_xprt);
    bc_sock->sk_bc_xprt = xprt;

This bug was introduced by f300baba5a1536070d6d77bf0c8c4ca999bb4f0f
"nfsd41: sunrpc: add new xprt class for nfsv4.1 backchannel" and
exists in 2.6.32 and later.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] sunrpc: fix error path - actually return ERR_PTR() on error
  2010-03-12 14:14 ` Tetsuo Handa
@ 2010-03-12 15:09   ` Trond Myklebust
       [not found]     ` <1268406591.3156.18.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
  0 siblings, 1 reply; 4+ messages in thread
From: Trond Myklebust @ 2010-03-12 15:09 UTC (permalink / raw)
  To: Tetsuo Handa
  Cc: ext-jani.1.nikula, bfields, neilb, davem, batsakis, bhalevy,
	linux-nfs, netdev, akpm

On Fri, 2010-03-12 at 23:14 +0900, Tetsuo Handa wrote: 
> Jani Nikula wrote:
> > Signed-off-by: Jani Nikula <ext-jani.1.nikula@nokia.com>
> > 
> > ---
> > 
> > NOTE: I'm afraid I'm unable to test this; please consider this more a
> > bug report than a complete patch.
> > ---
> Indeed, it has to be "return ERR_PTR(-EINVAL);".
> Otherwise, it will trigger NULL pointer dereference some lines later.
> 
>     bc_sock = container_of(args->bc_xprt, struct svc_sock, sk_xprt);
>     bc_sock->sk_bc_xprt = xprt;
> 
> This bug was introduced by f300baba5a1536070d6d77bf0c8c4ca999bb4f0f
> "nfsd41: sunrpc: add new xprt class for nfsv4.1 backchannel" and
> exists in 2.6.32 and later.

Or it should just be dropped. I don't see any reason why nfsd should be
trying to set up a callback channel if it doesn't already know that it
has a socket. Returning an error value in that case would just be
papering over a design bug.

   Trond

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] sunrpc: fix error path - actually return ERR_PTR() on error
       [not found]     ` <1268406591.3156.18.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
@ 2010-03-12 20:35       ` J. Bruce Fields
  0 siblings, 0 replies; 4+ messages in thread
From: J. Bruce Fields @ 2010-03-12 20:35 UTC (permalink / raw)
  To: Trond Myklebust
  Cc: Tetsuo Handa, ext-jani.1.nikula, neilb, davem, batsakis, bhalevy,
	linux-nfs, netdev, akpm

On Fri, Mar 12, 2010 at 10:09:51AM -0500, Trond Myklebust wrote:
> On Fri, 2010-03-12 at 23:14 +0900, Tetsuo Handa wrote: 
> > Jani Nikula wrote:
> > > Signed-off-by: Jani Nikula <ext-jani.1.nikula@nokia.com>
> > > 
> > > ---
> > > 
> > > NOTE: I'm afraid I'm unable to test this; please consider this more a
> > > bug report than a complete patch.
> > > ---
> > Indeed, it has to be "return ERR_PTR(-EINVAL);".
> > Otherwise, it will trigger NULL pointer dereference some lines later.
> > 
> >     bc_sock = container_of(args->bc_xprt, struct svc_sock, sk_xprt);
> >     bc_sock->sk_bc_xprt = xprt;
> > 
> > This bug was introduced by f300baba5a1536070d6d77bf0c8c4ca999bb4f0f
> > "nfsd41: sunrpc: add new xprt class for nfsv4.1 backchannel" and
> > exists in 2.6.32 and later.
> 
> Or it should just be dropped. I don't see any reason why nfsd should be
> trying to set up a callback channel if it doesn't already know that it
> has a socket. Returning an error value in that case would just be
> papering over a design bug.

Yup.  At most it could be a BUG_ON, but it's probably better just to
delete the check.

--b.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2010-03-12 20:34 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-03-12 13:48 [PATCH] sunrpc: fix error path - actually return ERR_PTR() on error Jani Nikula
2010-03-12 14:14 ` Tetsuo Handa
2010-03-12 15:09   ` Trond Myklebust
     [not found]     ` <1268406591.3156.18.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2010-03-12 20:35       ` J. Bruce Fields

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox