/proc/net/ symlink interacts badly with threads (Re: Procfs race condition bug)

From: One Thousand Gnomes
Date: Mon Jul 07 2014 - 09:42:12 EST


On Fri, 4 Jul 2014 11:13:11 +0100
Mike Cardwell <linux@xxxxxxxxxxxxxxxxxx> wrote:

> I originally posted this two years ago (*) but received no response. I
> just had a look and the problem still exists on the 3.14 kernel I am
> currently running.
>
> I *think* I've uncovered a race condition bug in procfs. If I attempt to

I don't think you have found a race condition.

/proc/net/tcp is a symbolic link to /proc/self/net/tcp

Your thread does an open of /proc/net/tcp, which is a symlink
to /proc/self/net/tcp. If your thread id matches your process id then all
will be as you expect, if not then all will be pear shaped.

As far as I can see the code is doing precisely what it should do. It's
just that the use of the symlink when namespaces were added produces some
rather odd effects.

It's certainly a bug. It used to work, it's sensible it should work.

Added netdev

Alan
--
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/