mirror of https://github.com/torvalds/linux.git
functionfs, gadgetfs: use simple_recursive_removal()
usual mount leaks if something had been bound on top of disappearing files there. Reviewed-by: Christian Brauner <brauner@kernel.org> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
1664a91025
commit
bad356bb50
|
|
@ -2369,8 +2369,7 @@ static void ffs_epfiles_destroy(struct ffs_epfile *epfiles, unsigned count)
|
|||
for (; count; --count, ++epfile) {
|
||||
BUG_ON(mutex_is_locked(&epfile->mutex));
|
||||
if (epfile->dentry) {
|
||||
d_delete(epfile->dentry);
|
||||
dput(epfile->dentry);
|
||||
simple_recursive_removal(epfile->dentry, NULL);
|
||||
epfile->dentry = NULL;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1561,7 +1561,6 @@ static void destroy_ep_files (struct dev_data *dev)
|
|||
spin_lock_irq (&dev->lock);
|
||||
while (!list_empty(&dev->epfiles)) {
|
||||
struct ep_data *ep;
|
||||
struct inode *parent;
|
||||
struct dentry *dentry;
|
||||
|
||||
/* break link to FS */
|
||||
|
|
@ -1571,7 +1570,6 @@ static void destroy_ep_files (struct dev_data *dev)
|
|||
|
||||
dentry = ep->dentry;
|
||||
ep->dentry = NULL;
|
||||
parent = d_inode(dentry->d_parent);
|
||||
|
||||
/* break link to controller */
|
||||
mutex_lock(&ep->lock);
|
||||
|
|
@ -1586,10 +1584,7 @@ static void destroy_ep_files (struct dev_data *dev)
|
|||
put_ep (ep);
|
||||
|
||||
/* break link to dcache */
|
||||
inode_lock(parent);
|
||||
d_delete (dentry);
|
||||
dput (dentry);
|
||||
inode_unlock(parent);
|
||||
simple_recursive_removal(dentry, NULL);
|
||||
|
||||
spin_lock_irq (&dev->lock);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue