Re: [PATCH] net: Revert "fib_trie: use seq_file_net rather than seq->private"

From: David Ahern
Date: Wed Jun 04 2014 - 18:12:00 EST


On 6/4/14, 4:02 PM, Sasha Levin wrote:
This reverts commit 30f38d2fdd79f13fc929489f7e6e517b4a4bfe63.

fib_triestat is surrounded by a big lie: while it claims that it's a
seq_file (fib_triestat_seq_open, fib_triestat_seq_show), it isn't:

static const struct file_operations fib_triestat_fops = {
.owner = THIS_MODULE,
.open = fib_triestat_seq_open,
.read = seq_read,
.llseek = seq_lseek,
.release = single_release_net,
};

Yes, fib_triestat is just a regular file.

A small detail (assuming CONFIG_NET_NS=y) is that while for seq_files
you could do seq_file_net() to get the net ptr, doing so for a regular
file would be wrong and would dereference an invalid pointer.

The fib_triestat lie claimed a victim, and trying to show the file would
be bad for the kernel. This patch just reverts the issue and fixes
fib_triestat, which still needs a rewrite to either be a seq_file or
stop claiming it is.

It worked fine for me.

fib_triestat_seq_open() is a wrapper to single_open_net() which sets the namespace as the private element (returned by get_proc_net).

If CONFIG_NETNS is not set:
- single_open_net essentially sets file->private to init_net which is also what is returned by seq_file_net

If CONFIG_NETNS is set, all is fine.

What am I missing?

David
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/