Merge branch 'work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull vfs updates from Al Viro: "Assorted cleanups and fixes. Probably the most interesting part long-term is ->d_init() - that will have a bunch of followups in (at least) ceph and lustre, but we'll need to sort the barrier-related rules before it can get used for really non-trivial stuff. Another fun thing is the merge of ->d_iput() callers (dentry_iput() and dentry_unlink_inode()) and a bunch of ->d_compare() ones (all except the one in __d_lookup_lru())" * 'work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (26 commits) fs/dcache.c: avoid soft-lockup in dput() vfs: new d_init method vfs: Update lookup_dcache() comment bdev: get rid of ->bd_inodes Remove last traces of ->sync_page new helper: d_same_name() dentry_cmp(): use lockless_dereference() instead of smp_read_barrier_depends() vfs: clean up documentation vfs: document ->d_real() vfs: merge .d_select_inode() into .d_real() unify dentry_iput() and dentry_unlink_inode() binfmt_misc: ->s_root is not going anywhere drop redundant ->owner initializations ufs: get rid of redundant checks orangefs: constify inode_operations missed comment updates from ->direct_IO() prototype change file_inode(f)->i_mapping is f->f_mapping trim fsnotify hooks a bit 9p: new helper - v9fs_parent_fid() debugfs: ->d_parent is never NULL or negative ...
This commit is contained in:
@@ -186,24 +186,21 @@ EXPORT_SYMBOL_GPL(securityfs_create_dir);
|
||||
*/
|
||||
void securityfs_remove(struct dentry *dentry)
|
||||
{
|
||||
struct dentry *parent;
|
||||
struct inode *dir;
|
||||
|
||||
if (!dentry || IS_ERR(dentry))
|
||||
return;
|
||||
|
||||
parent = dentry->d_parent;
|
||||
if (!parent || d_really_is_negative(parent))
|
||||
return;
|
||||
|
||||
inode_lock(d_inode(parent));
|
||||
dir = d_inode(dentry->d_parent);
|
||||
inode_lock(dir);
|
||||
if (simple_positive(dentry)) {
|
||||
if (d_is_dir(dentry))
|
||||
simple_rmdir(d_inode(parent), dentry);
|
||||
simple_rmdir(dir, dentry);
|
||||
else
|
||||
simple_unlink(d_inode(parent), dentry);
|
||||
simple_unlink(dir, dentry);
|
||||
dput(dentry);
|
||||
}
|
||||
inode_unlock(d_inode(parent));
|
||||
inode_unlock(dir);
|
||||
simple_release_fs(&mount, &mount_count);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(securityfs_remove);
|
||||
|
Referens i nytt ärende
Block a user