autofs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Ian Kent <raven@themaw.net>
To: Tomohiro Kusumi <kusumi.tomohiro@gmail.com>
Cc: autofs@vger.kernel.org
Subject: Re: [PATCH] autofs: Test autofs versions first on sb initialization
Date: Thu, 07 Jul 2016 14:39:02 +0800	[thread overview]
Message-ID: <1467873542.3206.26.camel@themaw.net> (raw)
In-Reply-To: <1467870153.3206.20.camel@themaw.net>

On Thu, 2016-07-07 at 13:42 +0800, Ian Kent wrote:
> On Mon, 2016-07-04 at 10:18 +0800, Ian Kent wrote:
> > On Sat, 2016-07-02 at 22:29 +0900, Tomohiro Kusumi wrote:
> > > This patch does what the below comment says.
> > > It could be and it's considered better to do this first
> > > before various functions get called during initialization.
> > 
> > I don't really see the importance of this but ok.
> > 
> > Though looking at it I think a problem with the error handling gotos has
> > crept
> > in (I think prior to your patch).
> > 
> > I'll need to look more closely at that when I get time.
> 
> I've added this to the list as well, along with a patch I think resolves the
> error handling exit gotos, could you have a look in case I've made any stupid
> mistakes.
> 
> autofs - fix autofs4_fill_super() error exit handling
> 
> From: Ian Kent <raven@themaw.net>
> 
> Somewhere along the line the error handling gotos have become incorrect
> and a little more complicated than need be.
> 
> Signed-off-by: Ian Kent <raven@themaw.net>
> ---
>  fs/autofs4/inode.c |    7 +++----
>  1 file changed, 3 insertions(+), 4 deletions(-)
> 
> diff --git a/fs/autofs4/inode.c b/fs/autofs4/inode.c
> index 8357544..2b3b54b 100644
> --- a/fs/autofs4/inode.c
> +++ b/fs/autofs4/inode.c
> @@ -313,7 +313,7 @@ int autofs4_fill_super(struct super_block *s, void *data,
> int silent)
>  
>  	if (!pipe) {
>  		pr_err("could not open pipe file descriptor\n");
> -		goto fail_dput;
> +		goto fail_put_pid;
>  	}
>  	ret = autofs_prepare_pipe(pipe);
>  	if (ret < 0)
> @@ -334,14 +334,13 @@ int autofs4_fill_super(struct super_block *s, void
> *data,
> int silent)
>  fail_fput:
>  	pr_err("pipe file descriptor does not contain proper ops\n");
>  	fput(pipe);
> -	/* fall through */
> +fail_put_pid:
> +	put_pid(sbi->oz_pgrp);
>  fail_dput:
>  	dput(root);
> -	goto fail_free;

Ummm ... that goto is still needed, I've added it back.

>  fail_ino:
>  	kfree(ino);
>  fail_free:
> -	put_pid(sbi->oz_pgrp);
>  	kfree(sbi);
>  	s->s_fs_info = NULL;
>  	return ret;
> 
> 
> 
> > > 
> > > /* Couldn't this be tested earlier? */
> > > ---
> > >  fs/autofs4/inode.c | 34 +++++++++++++++++-----------------
> > >  1 file changed, 17 insertions(+), 17 deletions(-)
> > > 
> > > diff --git a/fs/autofs4/inode.c b/fs/autofs4/inode.c
> > > index 61b2105..8357544 100644
> > > --- a/fs/autofs4/inode.c
> > > +++ b/fs/autofs4/inode.c
> > > @@ -274,6 +274,23 @@ int autofs4_fill_super(struct super_block *s, void
> > > *data,
> > > int silent)
> > >  		goto fail_dput;
> > >  	}
> > >  
> > > +	/* Test versions first */
> > > +	if (sbi->max_proto < AUTOFS_MIN_PROTO_VERSION ||
> > > +	    sbi->min_proto > AUTOFS_MAX_PROTO_VERSION) {
> > > +		pr_err("kernel does not match daemon version "
> > > +		       "daemon (%d, %d) kernel (%d, %d)\n",
> > > +		       sbi->min_proto, sbi->max_proto,
> > > +		       AUTOFS_MIN_PROTO_VERSION,
> > > AUTOFS_MAX_PROTO_VERSION);
> > > +		goto fail_dput;
> > > +	}
> > > +
> > > +	/* Establish highest kernel protocol version */
> > > +	if (sbi->max_proto > AUTOFS_MAX_PROTO_VERSION)
> > > +		sbi->version = AUTOFS_MAX_PROTO_VERSION;
> > > +	else
> > > +		sbi->version = sbi->max_proto;
> > > +	sbi->sub_version = AUTOFS_PROTO_SUBVERSION;
> > > +
> > >  	if (pgrp_set) {
> > >  		sbi->oz_pgrp = find_get_pid(pgrp);
> > >  		if (!sbi->oz_pgrp) {
> > > @@ -291,23 +308,6 @@ int autofs4_fill_super(struct super_block *s, void
> > > *data,
> > > int silent)
> > >  	root_inode->i_fop = &autofs4_root_operations;
> > >  	root_inode->i_op = &autofs4_dir_inode_operations;
> > >  
> > > -	/* Couldn't this be tested earlier? */
> > > -	if (sbi->max_proto < AUTOFS_MIN_PROTO_VERSION ||
> > > -	    sbi->min_proto > AUTOFS_MAX_PROTO_VERSION) {
> > > -		pr_err("kernel does not match daemon version "
> > > -		       "daemon (%d, %d) kernel (%d, %d)\n",
> > > -		       sbi->min_proto, sbi->max_proto,
> > > -		       AUTOFS_MIN_PROTO_VERSION,
> > > AUTOFS_MAX_PROTO_VERSION);
> > > -		goto fail_dput;
> > > -	}
> > > -
> > > -	/* Establish highest kernel protocol version */
> > > -	if (sbi->max_proto > AUTOFS_MAX_PROTO_VERSION)
> > > -		sbi->version = AUTOFS_MAX_PROTO_VERSION;
> > > -	else
> > > -		sbi->version = sbi->max_proto;
> > > -	sbi->sub_version = AUTOFS_PROTO_SUBVERSION;
> > > -
> > >  	pr_debug("pipe fd = %d, pgrp = %u\n", pipefd, pid_nr(sbi
> > > ->oz_pgrp));
> > >  	pipe = fget(pipefd);
> > >  
> > --
> > To unsubscribe from this list: send the line "unsubscribe autofs" in
> --
> To unsubscribe from this list: send the line "unsubscribe autofs" in
--
To unsubscribe from this list: send the line "unsubscribe autofs" in

      reply	other threads:[~2016-07-07  6:39 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-07-02 13:29 [PATCH] autofs: Test autofs versions first on sb initialization Tomohiro Kusumi
2016-07-04  2:18 ` Ian Kent
2016-07-07  5:42   ` Ian Kent
2016-07-07  6:39     ` Ian Kent [this message]

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=1467873542.3206.26.camel@themaw.net \
    --to=raven@themaw.net \
    --cc=autofs@vger.kernel.org \
    --cc=kusumi.tomohiro@gmail.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).