All of lore.kernel.org
 help / color / mirror / Atom feed
From: Al Viro <viro@ZenIV.linux.org.uk>
To: Neil Horman <nhorman@tuxdriver.com>
Cc: John Fastabend <john.r.fastabend@intel.com>,
	netdev@vger.kernel.org, davem@davemloft.net,
	linux-kernel@vger.kernel.org, joe@perches.com
Subject: Re: [net PATCH v3 1/3] net: netprio: fix files lock and remove useless d_path bits
Date: Wed, 15 Aug 2012 21:03:18 +0100	[thread overview]
Message-ID: <20120815200318.GM23464@ZenIV.linux.org.uk> (raw)
In-Reply-To: <20120815105206.GA23811@hmsreliant.think-freely.org>

On Wed, Aug 15, 2012 at 06:52:06AM -0400, Neil Horman wrote:
> On Tue, Aug 14, 2012 at 03:34:24PM -0700, John Fastabend wrote:
> > Add lock to prevent a race with a file closing and also remove
> > useless and ugly sscanf code. The extra code was never needed
> > and the case it supposedly protected against is in fact handled
> > correctly by sock_from_file as pointed out by Al Viro.
> > 
> > CC: Neil Horman <nhorman@tuxdriver.com>
> > Reported-by: Al Viro <viro@ZenIV.linux.org.uk>
> > Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
> > ---
> > 
> >  net/core/netprio_cgroup.c |   22 ++++------------------
> >  1 files changed, 4 insertions(+), 18 deletions(-)
> > 
> > diff --git a/net/core/netprio_cgroup.c b/net/core/netprio_cgroup.c
> > index ed0c043..f65dba3 100644
> > --- a/net/core/netprio_cgroup.c
> > +++ b/net/core/netprio_cgroup.c
> > @@ -277,12 +277,6 @@ out_free_devname:
> >  void net_prio_attach(struct cgroup *cgrp, struct cgroup_taskset *tset)
> >  {
> >  	struct task_struct *p;
> > -	char *tmp = kzalloc(sizeof(char) * PATH_MAX, GFP_KERNEL);
> > -
> > -	if (!tmp) {
> > -		pr_warn("Unable to attach cgrp due to alloc failure!\n");
> > -		return;
> > -	}
> >  
> >  	cgroup_taskset_for_each(p, cgrp, tset) {
> >  		unsigned int fd;
> > @@ -296,32 +290,24 @@ void net_prio_attach(struct cgroup *cgrp, struct cgroup_taskset *tset)
> >  			continue;
> >  		}
> >  
> > -		rcu_read_lock();
> > +		spin_lock(&files->file_lock);
> >  		fdt = files_fdtable(files);
> >  		for (fd = 0; fd < fdt->max_fds; fd++) {
> > -			char *path;
> >  			struct file *file;
> >  			struct socket *sock;
> > -			unsigned long s;
> > -			int rv, err = 0;
> > +			int err;
> >  
> >  			file = fcheck_files(files, fd);
> >  			if (!file)
> >  				continue;
> >  
> > -			path = d_path(&file->f_path, tmp, PAGE_SIZE);
> > -			rv = sscanf(path, "socket:[%lu]", &s);
> > -			if (rv <= 0)
> > -				continue;
> > -
> >  			sock = sock_from_file(file, &err);
> > -			if (!err)
> > +			if (sock)
> >  				sock_update_netprioidx(sock->sk, p);
> >  		}
> > -		rcu_read_unlock();
> > +		spin_unlock(&files->file_lock);
> >  		task_unlock(p);
> >  	}
> > -	kfree(tmp);
> >  }
> >  
> >  static struct cftype ss_files[] = {
> > 
> > 
> Acked-by: Neil Horman <nhorman@tuxdriver.com>
> 
> It looks good to me.  Al, could you please lend your review here too?

Tolerable...  I still don't like the idea of iterating through the
descriptor tables, but at least that variant is safe wrt locking and
lifetime rules.

  reply	other threads:[~2012-08-15 20:03 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-14 22:34 [net PATCH v3 1/3] net: netprio: fix files lock and remove useless d_path bits John Fastabend
2012-08-14 22:34 ` [net PATCH v3 2/3] net: netprio: fd passed in SCM_RIGHTS datagram not set correctly John Fastabend
2012-08-15 10:53   ` Neil Horman
2012-08-16 22:11   ` David Miller
2012-08-14 22:34 ` [net PATCH v3 3/3] net: netprio: fix cgrp create and write priomap race John Fastabend
2012-08-15 10:56   ` Neil Horman
2012-08-16 22:11   ` David Miller
2012-08-15 10:52 ` [net PATCH v3 1/3] net: netprio: fix files lock and remove useless d_path bits Neil Horman
2012-08-15 20:03   ` Al Viro [this message]
2012-08-16 22:11 ` David Miller

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=20120815200318.GM23464@ZenIV.linux.org.uk \
    --to=viro@zeniv.linux.org.uk \
    --cc=davem@davemloft.net \
    --cc=joe@perches.com \
    --cc=john.r.fastabend@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=nhorman@tuxdriver.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 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.