From: ebiederm@xmission.com (Eric W. Biederman)
To: Nathan Lynch <ntl@pobox.com>
Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org,
netdev@vger.kernel.org, linux-fsdevel@vger.kernel.org,
jamal <hadi@cyberus.ca>, Daniel Lezcano <daniel.lezcano@free.fr>,
Linux Containers <containers@lists.osdl.org>,
Renato Westphal <renatowestphal@gmail.com>
Subject: Re: [PATCH 1/7] ns: proc files for namespace naming policy.
Date: Wed, 11 May 2011 15:52:35 -0700 [thread overview]
Message-ID: <m1oc38luj0.fsf@fess.ebiederm.org> (raw)
In-Reply-To: <1305141667.1236.47.camel@orca.stoopid.dyndns.org> (Nathan Lynch's message of "Wed, 11 May 2011 14:20:48 -0500")
Nathan Lynch <ntl@pobox.com> writes:
> Hi Eric,
>
> A few comments on your patch set.
>
>
> On Fri, 2011-05-06 at 19:24 -0700, Eric W. Biederman wrote:
>> diff --git a/fs/proc/inode.c b/fs/proc/inode.c
>> index d15aa1b..74b48cf 100644
>> --- a/fs/proc/inode.c
>> +++ b/fs/proc/inode.c
>> @@ -28,6 +28,7 @@ static void proc_evict_inode(struct inode *inode)
>> {
>> struct proc_dir_entry *de;
>> struct ctl_table_header *head;
>> + const struct proc_ns_operations *ns_ops;
>>
>> truncate_inode_pages(&inode->i_data, 0);
>> end_writeback(inode);
>> @@ -44,6 +45,10 @@ static void proc_evict_inode(struct inode *inode)
>> rcu_assign_pointer(PROC_I(inode)->sysctl, NULL);
>> sysctl_head_put(head);
>> }
>> + /* Release any associated namespace */
>> + ns_ops = PROC_I(inode)->ns_ops;
>> + if (ns_ops && ns_ops->put)
>> + ns_ops->put(PROC_I(inode)->ns);
>
> Is it ever valid for ns_ops->put to be null? If not, I suggest removing
> the check.
>
>
>> diff --git a/fs/proc/namespaces.c b/fs/proc/namespaces.c
>> new file mode 100644
>> index 0000000..6ae9f07
>> --- /dev/null
>> +++ b/fs/proc/namespaces.c
>
> ...
>
>> +static struct dentry *proc_ns_dir_lookup(struct inode *dir,
>> + struct dentry *dentry, struct nameidata *nd)
>> +{
>> + struct dentry *error;
>> + struct task_struct *task = get_proc_task(dir);
>> + const struct proc_ns_operations **entry, **last;
>> + unsigned int len = dentry->d_name.len;
>> +
>> + error = ERR_PTR(-ENOENT);
>> +
>> + if (!task)
>> + goto out_no_task;
>> +
>> + error = ERR_PTR(-EPERM);
>> + if (!ptrace_may_access(task, PTRACE_MODE_READ))
>> + goto out;
>> +
>> + last = &ns_entries[ARRAY_SIZE(ns_entries) - 1];
>> + for (entry = ns_entries; entry <= last; entry++) {
>> + if (strlen((*entry)->name) != len)
>> + continue;
>> + if (!memcmp(dentry->d_name.name, (*entry)->name, len))
>> + break;
>> + }
>> + if (entry > last)
>> + goto out;
>
> This returns EPERM when it should return ENOENT?
Good catch.
And fixed now.
>> union proc_op {
>> int (*proc_get_link)(struct inode *, struct path *);
>> int (*proc_read)(struct task_struct *task, char *page);
>> @@ -268,6 +284,8 @@ struct proc_inode {
>> struct proc_dir_entry *pde;
>> struct ctl_table_header *sysctl;
>> struct ctl_table *sysctl_entry;
>> + void *ns;
>> + const struct proc_ns_operations *ns_ops;
>> struct inode vfs_inode;
>> };
>
> Not that I have any better ideas, but it seems a bit undesirable to
> increase the size of proc_inode for this one purpose.
Of the options I could think of this was the cleanest, and proc_inode
is just a caching data structure which means that the effect should be
comparatively minimal.
That said I won't oppose a change at some point to reduce the
proc_inode, there are a lot of fields that are not used for most proc
entries.
Eric
next prev parent reply other threads:[~2011-05-11 22:52 UTC|newest]
Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-07 2:23 [PATCH 0/7] Network namespace manipulation with file descriptors Eric W. Biederman
2011-05-07 2:23 ` Eric W. Biederman
2011-05-07 2:24 ` [PATCH 1/7] ns: proc files for namespace naming policy Eric W. Biederman
2011-05-07 2:24 ` Eric W. Biederman
[not found] ` <1304735101-1824-1-git-send-email-ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>
2011-05-07 2:24 ` [PATCH 2/7] ns: Introduce the setns syscall Eric W. Biederman
2011-05-07 2:24 ` Eric W. Biederman
2011-05-07 2:24 ` Eric W. Biederman
2011-05-07 2:24 ` Eric W. Biederman
[not found] ` <1304735101-1824-2-git-send-email-ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>
2011-05-07 8:01 ` Rémi Denis-Courmont
2011-05-07 8:01 ` Rémi Denis-Courmont
2011-05-07 13:57 ` Eric W. Biederman
2011-05-07 13:57 ` Eric W. Biederman
2011-05-07 22:39 ` Daniel Lezcano
2011-05-08 3:51 ` Matt Helsley
2011-05-11 19:21 ` Nathan Lynch
2011-05-11 20:33 ` Eric W. Biederman
2011-05-07 2:25 ` [PATCH 6/7] net: Allow setting the network namespace by fd Eric W. Biederman
2011-05-07 2:25 ` Eric W. Biederman
2011-05-07 2:25 ` Eric W. Biederman
2011-05-07 2:25 ` Eric W. Biederman
2011-05-07 22:46 ` Daniel Lezcano
2011-05-07 2:24 ` [PATCH 3/7] ns proc: Add support for the network namespace Eric W. Biederman
2011-05-07 2:24 ` Eric W. Biederman
2011-05-07 22:41 ` Daniel Lezcano
2011-05-11 19:21 ` Nathan Lynch
2011-05-11 21:34 ` Eric W. Biederman
2011-05-11 21:42 ` Nathan Lynch
2011-05-07 2:24 ` [PATCH 4/7] ns proc: Add support for the uts namespace Eric W. Biederman
2011-05-07 2:24 ` Eric W. Biederman
2011-05-07 22:42 ` Daniel Lezcano
2011-05-07 2:24 ` [PATCH 5/7] ns proc: Add support for the ipc namespace Eric W. Biederman
2011-05-07 2:24 ` Eric W. Biederman
2011-05-07 22:44 ` Daniel Lezcano
2011-05-07 2:25 ` [PATCH 7/7] ns: Wire up the setns system call Eric W. Biederman
2011-05-07 2:25 ` Eric W. Biederman
2011-05-07 8:27 ` Geert Uytterhoeven
2011-05-07 14:09 ` Eric W. Biederman
2011-05-07 14:09 ` Eric W. Biederman
2011-05-07 14:09 ` Eric W. Biederman
2011-05-07 18:22 ` Geert Uytterhoeven
2011-05-07 13:59 ` Mike Frysinger
2011-05-07 20:06 ` James Bottomley
2011-05-08 2:19 ` Eric W. Biederman
2011-05-08 4:02 ` James Bottomley
2011-05-07 22:37 ` [PATCH 1/7] ns: proc files for namespace naming policy Daniel Lezcano
2011-05-11 19:20 ` Nathan Lynch
2011-05-11 22:52 ` Eric W. Biederman [this message]
[not found] ` <m1tyd7p7tq.fsf-+imSwln9KH6u2/kzUuoCbdi2O/JbrIOy@public.gmane.org>
2011-05-07 6:58 ` [PATCH 0/7] Network namespace manipulation with file descriptors Alex Bligh
2011-05-07 6:58 ` Alex Bligh
2011-05-07 14:18 ` Eric W. Biederman
2011-05-07 14:18 ` Eric W. Biederman
2011-05-08 12:31 ` Alex Bligh
[not found] ` <m1fwoqoapn.fsf-+imSwln9KH6u2/kzUuoCbdi2O/JbrIOy@public.gmane.org>
2011-05-17 11:11 ` David Lamparter
2011-05-17 11:11 ` David Lamparter
2011-05-17 14:33 ` Eric W. Biederman
2011-05-17 15:35 ` David Lamparter
2011-05-22 4:19 ` Renato Westphal
2011-05-09 19:04 ` David Miller
2011-05-09 19:59 ` Eric W. Biederman
2011-05-09 20:40 ` David Miller
2011-05-09 20:54 ` Eric W. Biederman
2011-05-09 20:55 ` David Miller
2011-05-10 21:56 ` Luck, Tony
2011-05-10 23:02 ` Eric W. Biederman
2011-05-10 23:02 ` Eric W. Biederman
2011-05-18 12:43 ` Identifying network namespaces (was: Network namespace manipulation with file descriptors) David Lamparter
2011-05-18 13:03 ` Alexey Dobriyan
[not found] ` <BANLkTikmrC86hk=W84UBwhJLe_uGAN4w9w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-05-18 13:33 ` David Lamparter
2011-05-18 13:33 ` David Lamparter
2011-05-18 14:13 ` Alexey Dobriyan
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=m1oc38luj0.fsf@fess.ebiederm.org \
--to=ebiederm@xmission.com \
--cc=containers@lists.osdl.org \
--cc=daniel.lezcano@free.fr \
--cc=hadi@cyberus.ca \
--cc=linux-arch@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=ntl@pobox.com \
--cc=renatowestphal@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 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.