Re: [PATCH v2 9/13] sunrpc: Merge the xs_bind code

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Oct 18, 2010 at 05:15:37PM -0400, J. Bruce Fields wrote:
> On Fri, Oct 15, 2010 at 02:11:29PM -0400, Chuck Lever wrote:
> > 
> > On Oct 15, 2010, at 2:08 PM, J. Bruce Fields wrote:
> > 
> > > On Fri, Oct 15, 2010 at 12:39:36PM -0400, Chuck Lever wrote:
> > >> 
> > >> On Oct 15, 2010, at 12:05 PM, J. Bruce Fields wrote:
> > >> 
> > >>> On Tue, Oct 05, 2010 at 03:53:08PM +0400, Pavel Emelyanov wrote:
> > >>>> There's the only difference betseen the xs_bind4 and the
> > >>>> xs_bind6 - the size of sockaddr structure they use.
> > >>>> 
> > >>>> Fortunatelly its size can be indirectly get from the transport.
> > >>>> 
> > >>>> Change since v1:
> > >>>> * use sockaddr_storage instead of sockaddr
> > >>>> * use rpc_set_port instead of manual port assigning
> > >>> 
> > >>> Whoops, dropping this; it breaks nfsd startup.  I haven't figured out
> > >>> why yet, but I get
> > >>> 
> > >>> RPC: server localhost requires stronger authentication.
> > >>> svc: failed to register nfsdv2 RPC service (errno 13).
> > >> 
> > >> Capturing a network trace of lo during server initialization should reveal all.  Compare a trace from a working run and a non-working one.
> > > 
> > > Hm.  One difference is the source port of the portmap calls: 33471 in
> > > the bad case, 1016 in the bad.--b.
> > 
> > 1016 in the good... yes, that's because the server's registration upcall needs a privileged port, and xs_bind is not obliging here.  That certainly would result in a "requires stronger authentication" error from rpcbind.
> 
> So, adding some printk's: the problem is that the patch assumes that the
> trasnport->xprt.addrlen and transport->srcaddr.ss_family have been
> initialized at this point.  But they haven't been.  I don't know where
> that's supposed to happen.

Sorry, I meant just the family, the length seems fine.

I'll just fold this into the relevant patches and push out the result if
nobody objects.

--b.

diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c
index 8dc287f..324d97a 100644
--- a/net/sunrpc/xprtsock.c
+++ b/net/sunrpc/xprtsock.c
@@ -1625,6 +1625,7 @@ static struct socket *xs_create_sock(struct rpc_xprt *xprt,
 				protocol, -err);
 		goto out;
 	}
+	transport->srcaddr.ss_family = family;
 	xs_reclassify_socket(family, sock);
 
 	if (xs_bind(transport, sock)) {
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux