On Fri, Mar 06, 2020 at 08:38:44PM +0000, Al Viro wrote:
On Fri, Mar 06, 2020 at 08:37:05PM +0000, Al Viro wrote:
quoted
You are misreading mntput_no_expire(), BTW - your get_mount() can
bloody well race with umount(2), hitting the moment when we are done
figuring out whether it's busy but hadn't cleaned ->mnt_ns (let alone
set MNT_DOOMED) yet. If somebody calls umount(2) on a filesystem that
is not mounted anywhere else, they are not supposed to see the sucker
return 0 until the filesystem is shut down. You break that.
While we are at it, d_alloc_parallel() requires i_rwsem on parent held
at least shared.
Egads... Let me see if I got it right - you are providing procfs symlinks
to objects on the internal mount of that thing. And those objects happen
to be directories, so one can get to their parent that way. Or am I misreading
that thing?