[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4f11914a-f5cc-3df4-5b9d-0946f9f31ec2@stressinduktion.org>
Date: Sat, 21 May 2016 01:27:42 +0200
From: Hannes Frederic Sowa <hannes@...essinduktion.org>
To: "Eric W. Biederman" <ebiederm@...ssion.com>
Cc: Daniel Borkmann <daniel@...earbox.net>,
Alexei Starovoitov <ast@...nel.org>,
"David S. Miller" <davem@...emloft.net>, netdev@...r.kernel.org
Subject: Re: [PATCH net] bpf: Use mount_nodev not mount_ns to mount the bpf
filesystem
On 21.05.2016 00:22, Eric W. Biederman wrote:
>
> While reviewing the filesystems that set FS_USERNS_MOUNT I spotted the
> bpf filesystem. Looking at the code I saw a broken usage of mount_ns
> with current->nsproxy->mnt_ns. As the code does not acquire a
> reference to the mount namespace it can not possibly be correct to
> store the mount namespace on the superblock as it does.
>
> Replace mount_ns with mount_nodev so that each mount of the bpf
> filesystem returns a distinct instance, and the code is not buggy.
>
> In discussion with Hannes Frederic Sowa it was reported that the use
> of mount_ns was an attempt to have one bpf instance per mount
> namespace, in an attempt to keep resources that pin resources from
> hiding. That intent simply does not work, the vfs is not built to
> allow that kind of behavior. Which means that the bpf filesystem
> really is buggy both semantically and in it's implemenation as it does
> not nor can it implement the original intent.
>
> This change is userspace visible, but my experience with similar
> filesystems leads me to believe nothing will break with a model of each
> mount of the bpf filesystem is distinct from all others.
>
> Fixes: b2197755b263 ("bpf: add support for persistent maps/progs")
> Cc: Hannes Frederic Sowa <hannes@...essinduktion.org>
> Acked-by: Daniel Borkmann <daniel@...earbox.net>
> Signed-off-by: "Eric W. Biederman" <ebiederm@...ssion.com>
Acked-by: Hannes Frederic Sowa <hannes@...essinduktion.org>
Thanks Eric!
Powered by blists - more mailing lists