[PATCH 0/1] ns: introduce proc_get_ns_by_fd()
Oleg Nesterov
oleg at redhat.com
Tue Sep 29 18:38:33 UTC 2015
On 09/29, Eric W. Biederman wrote:
>
> Oleg Nesterov <oleg at redhat.com> writes:
>
> > OK, I won't insist, this too looks better to me than proc_ns_fdget(&fd_ref).
> >
> > And in any case fcheck_files() makes more sense than fdget(), somehow I did
> > not think about this when I sent 1/1.
> >
> > Hmm. and after the quick look at cleanup_net() I can't understand whether
> > get_net_ns_by_fd() can use ns_by_fd_rcu() + maybe_get_net(to_net_ns()) or
> > not... Can it?
>
> Some of those places need a reference that allows them to sleep, and the
> code is shared with the legacy pid case so with an addition of get_net
> we can use ns_by_fd_rcu(). There are cases like setns that could
> use ns_by_fd_rcu() with code reording.
>
> We can implement get_net_ns_by_fd as:
> struct net *get_net_ns_by_fd(int fd)
> {
> struct net *net;
>
> rcu_read_lock();
> net = net_ns_by_fd_rcu(fd);
> if (!IS_ERR(net))
> get_net(net);
> rcu_read_unlock();
>
> return net;
> }
>
> Which means we can achieve code sharing with the pure rcu version
> as a base.
Yes, this is what I meant... but don't we need maybe_get_net() ?
Oleg.
More information about the Containers
mailing list