From: Pavel Emelyanov <xemul-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
To: "Serge E. Hallyn" <serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
Cc: Linux Containers
<containers-qjLDD68F18O7TbgM5vRIOg@public.gmane.org>,
Oleg Nesterov <oleg-6lXkIZvqkOAvJsYlp49lxw@public.gmane.org>,
"Eric W. Biederman"
<ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>
Subject: Re: [RFC][PATCH] Make access to taks's nsproxy liter
Date: Thu, 09 Aug 2007 11:12:19 +0400 [thread overview]
Message-ID: <46BABE53.6050604@openvz.org> (raw)
In-Reply-To: <20070808164854.GB28455-6s5zFf/epYLPQpwDFJZrxKsjOiXwFzmk@public.gmane.org>
[snip]
>> diff --git a/include/linux/nsproxy.h b/include/linux/nsproxy.h
>> index 525d8fc..74f21fe 100644
>> --- a/include/linux/nsproxy.h
>> +++ b/include/linux/nsproxy.h
>> @@ -32,8 +32,14 @@ struct nsproxy {
>> };
>> extern struct nsproxy init_nsproxy;
>>
>> +static inline struct nsproxy *task_nsproxy(struct task_struct *tsk)
>> +{
>> + return rcu_dereference(tsk->nsproxy);
>> +}
>
> Looks like a very nice cleanup as well. But please add a comment
> above task_nsproxy() that it must be called under rcu_read_lock()
> or task_lock(task) (though I'll admit the rcu_dereference may make that
> obvious)
I will, but I think that rcu_dereference implies this. Anyway.
[snip]
>> + if (ns == new)
>> + return;
>> +
>> + if (new)
>> + get_nsproxy(new);
>> + rcu_assign_pointer(p->nsproxy, new);
>> +
>> + if (ns && atomic_dec_and_test(&ns->count)) {
>> + /*
>> + * wait for others to get what they want from this
>> + * nsproxy. cannot release this nsproxy via the
>> + * call_rcu() since put_mnt_ns will want to sleep
>> + */
>> + synchronize_rcu();
>> + free_nsproxy(ns);
>> + }
>> +}
>
> Also a comment above switch_task_namespaces() that it must be called
> with task_lock held.
no! no locks here! free_nsproxy() may sleep when putting mnt_ns and
maybe some other. see - there's a hunk in sys_unshare that move the
task_lock() after switch_task_namespaces().
> thanks,
> -serge
next prev parent reply other threads:[~2007-08-09 7:12 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-08 15:37 [RFC][PATCH] Make access to taks's nsproxy liter Pavel Emelyanov
[not found] ` <46B9E321.6070602-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2007-08-08 16:29 ` Eric W. Biederman
[not found] ` <m1ps1yc7mp.fsf-T1Yj925okcoyDheHMi7gv2pdwda3JcWeAL8bYrjMMd8@public.gmane.org>
2007-08-09 7:10 ` Pavel Emelyanov
[not found] ` <46BABDE9.6090508-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2007-08-09 8:00 ` Eric W. Biederman
[not found] ` <m13aytb0j0.fsf-T1Yj925okcoyDheHMi7gv2pdwda3JcWeAL8bYrjMMd8@public.gmane.org>
2007-08-09 8:17 ` Pavel Emelyanov
2007-08-08 16:37 ` Oleg Nesterov
[not found] ` <20070808163757.GA578-6lXkIZvqkOAvJsYlp49lxw@public.gmane.org>
2007-08-08 17:03 ` Eric W. Biederman
[not found] ` <m14pjac61z.fsf-T1Yj925okcoyDheHMi7gv2pdwda3JcWeAL8bYrjMMd8@public.gmane.org>
2007-08-08 17:19 ` Oleg Nesterov
[not found] ` <20070808171955.GA655-6lXkIZvqkOAvJsYlp49lxw@public.gmane.org>
2007-08-09 7:09 ` Pavel Emelyanov
2007-08-08 16:41 ` Oleg Nesterov
[not found] ` <20070808164107.GB578-6lXkIZvqkOAvJsYlp49lxw@public.gmane.org>
2007-08-08 17:23 ` Paul E. McKenney
[not found] ` <20070808172309.GA8909-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
2007-08-08 17:36 ` Oleg Nesterov
[not found] ` <20070808173647.GA676-6lXkIZvqkOAvJsYlp49lxw@public.gmane.org>
2007-08-08 18:48 ` Paul E. McKenney
2007-08-09 7:15 ` Pavel Emelyanov
[not found] ` <46BABF25.1090307-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2007-08-09 7:39 ` Oleg Nesterov
[not found] ` <20070809073900.GA86-6lXkIZvqkOAvJsYlp49lxw@public.gmane.org>
2007-08-09 7:46 ` Pavel Emelyanov
[not found] ` <46BAC671.4070908-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2007-08-09 8:06 ` Oleg Nesterov
2007-08-09 7:49 ` Oleg Nesterov
2007-08-09 7:14 ` Pavel Emelyanov
2007-08-08 16:48 ` Serge E. Hallyn
[not found] ` <20070808164854.GB28455-6s5zFf/epYLPQpwDFJZrxKsjOiXwFzmk@public.gmane.org>
2007-08-08 16:58 ` Oleg Nesterov
2007-08-09 7:12 ` Pavel Emelyanov [this message]
[not found] ` <46BABE53.6050604-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2007-08-09 14:10 ` Serge E. Hallyn
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=46BABE53.6050604@openvz.org \
--to=xemul-gefaqzzx7r8dnm+yrofe0a@public.gmane.org \
--cc=containers-qjLDD68F18O7TbgM5vRIOg@public.gmane.org \
--cc=ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org \
--cc=oleg-6lXkIZvqkOAvJsYlp49lxw@public.gmane.org \
--cc=serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org \
/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.