2007-09-24 21:34:45

by James Lentini

[permalink] [raw]
Subject: [PATCH] NFS: initialize default port in kernel mount client


If no mount server port number is specified, this change to the kernel
mount client

http://linux-nfs.org/cgi-bin/gitweb.cgi?p=nfs-2.6.git;a=commitdiff;h=209ce98
06996537eceaf07d95def0e9300316c84

inadvertently allows the NFS server's port number to be the used as
the mount server's port number. If the user specifies an NFS server
port (-o port=x), the mount will fail.

The fix below sets the mount server's port to 0 if no mount server
port is specified by the user.

Signed-off-by: James Lentini <[email protected]>
--

super.c | 2 ++
1 file changed, 2 insertions(+)

Index: nfs-2.6/fs/nfs/super.c
===================================================================
--- nfs-2.6/fs/nfs/super.c
+++ nfs-2.6/fs/nfs/super.c
@@ -1006,6 +1006,8 @@ static int nfs_try_mount(struct nfs_pars
sin = args->nfs_server.address;
if (args->mount_server.port != 0)
sin.sin_port = htons(args->mount_server.port);
+ else
+ sin.sin_port = htons(0);

/*
* Now ask the mount server to map our export path

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
NFS maillist - [email protected]
https://lists.sourceforge.net/lists/listinfo/nfs


2007-09-24 23:53:19

by James Lentini

[permalink] [raw]
Subject: Re: [PATCH] NFS: initialize default port in kernel mount client



On Mon, 24 Sep 2007, Chuck Lever wrote:

> Hi James-
>
> James Lentini wrote:
> > If no mount server port number is specified, this change to the kernel mount
> > client
> >
> > http://linux-nfs.org/cgi-bin/gitweb.cgi?p=nfs-2.6.git;a=commitdiff;h=209ce98
> > 06996537eceaf07d95def0e9300316c84
> >
> > inadvertently allows the NFS server's port number to be the used as the
> > mount server's port number. If the user specifies an NFS server port (-o
> > port=x), the mount will fail.
> >
> > The fix below sets the mount server's port to 0 if no mount server port is
> > specified by the user.
> >
> > Signed-off-by: James Lentini <[email protected]>
> > --
> >
> > super.c | 2 ++
> > 1 file changed, 2 insertions(+)
> >
> > Index: nfs-2.6/fs/nfs/super.c
> > ===================================================================
> > --- nfs-2.6/fs/nfs/super.c
> > +++ nfs-2.6/fs/nfs/super.c
> > @@ -1006,6 +1006,8 @@ static int nfs_try_mount(struct nfs_pars
> > sin = args->nfs_server.address;
> > if (args->mount_server.port != 0)
> > sin.sin_port = htons(args->mount_server.port);
> > + else
> > + sin.sin_port = htons(0);
>
> Why not just set sin.sin_port = args->mount_server.port unconditionally?

Good observation. Something like this perhaps?

Signed-off-by: James Lentini <[email protected]>

Index: nfs-2.6/fs/nfs/super.c
===================================================================
--- nfs-2.6/fs/nfs/super.c
+++ nfs-2.6/fs/nfs/super.c
@@ -1004,8 +1004,10 @@ static int nfs_try_mount(struct nfs_pars
sin = args->mount_server.address;
else
sin = args->nfs_server.address;
- if (args->mount_server.port != 0)
- sin.sin_port = htons(args->mount_server.port);
+ /*
+ * autobind will be used if mount_server.port == 0
+ */
+ sin.sin_port = htons(args->mount_server.port);

/*
* Now ask the mount server to map our export path

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
NFS maillist - [email protected]
https://lists.sourceforge.net/lists/listinfo/nfs