summaryrefslogtreecommitdiffstats
path: root/fs/hfs
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2018-05-01 01:52:18 +0200
committerAl Viro <viro@zeniv.linux.org.uk>2018-05-22 20:28:00 +0200
commit0e5c56fd07432c426b7ab1a84e8d97a00d7e08ca (patch)
tree8b0e0eba7e155ea5a311e1ec12b67a9e571f107d /fs/hfs
parenthfs: use d_splice_alias() (diff)
downloadlinux-0e5c56fd07432c426b7ab1a84e8d97a00d7e08ca.tar.xz
linux-0e5c56fd07432c426b7ab1a84e8d97a00d7e08ca.zip
hfs: don't allow mounting over .../rsrc
That's one case when unlink() destroys a subtree, thanks to "resource fork" idiocy. We might forcibly evict that shit on unlink(2), but for now let's just disallow overmounting; as it is, anything that plays games with those would leak mounts. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/hfs')
-rw-r--r--fs/hfs/inode.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/hfs/inode.c b/fs/hfs/inode.c
index 0612fa367bd1..b3309b83371a 100644
--- a/fs/hfs/inode.c
+++ b/fs/hfs/inode.c
@@ -543,6 +543,7 @@ static struct dentry *hfs_file_lookup(struct inode *dir, struct dentry *dentry,
igrab(dir);
hlist_add_fake(&inode->i_hash);
mark_inode_dirty(inode);
+ dont_mount(dentry);
out:
return d_splice_alias(inode, dentry);
}