summaryrefslogtreecommitdiff
path: root/fs/aufs/dbgaufs.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/aufs/dbgaufs.c')
-rw-r--r--fs/aufs/dbgaufs.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/fs/aufs/dbgaufs.c b/fs/aufs/dbgaufs.c
index 21ac77398..f85a813a4 100644
--- a/fs/aufs/dbgaufs.c
+++ b/fs/aufs/dbgaufs.c
@@ -28,7 +28,7 @@ struct dbgaufs_arg {
static int dbgaufs_xi_release(struct inode *inode __maybe_unused,
struct file *file)
{
- kfree(file->private_data);
+ au_delayed_kfree(file->private_data);
return 0;
}
@@ -90,7 +90,7 @@ struct dbgaufs_plink_arg {
static int dbgaufs_plink_release(struct inode *inode __maybe_unused,
struct file *file)
{
- free_page((unsigned long)file->private_data);
+ au_delayed_free_page((unsigned long)file->private_data);
return 0;
}
@@ -154,7 +154,7 @@ static int dbgaufs_plink_open(struct inode *inode, struct file *file)
goto out; /* success */
out_free:
- free_page((unsigned long)p);
+ au_delayed_free_page((unsigned long)p);
out:
return err;
}
@@ -281,8 +281,11 @@ void dbgaufs_brs_add(struct super_block *sb, aufs_bindex_t bindex)
br = au_sbr(sb, bindex);
xi = &br->br_xino;
AuDebugOn(xi->xi_dbgaufs);
+ /* debugfs acquires the parent i_mutex */
+ lockdep_off();
xi->xi_dbgaufs = debugfs_create_file(name, dbgaufs_mode, parent,
sbinfo, &dbgaufs_xino_fop);
+ lockdep_on();
/* ignore an error */
if (unlikely(!xi->xi_dbgaufs))
AuWarn1("failed %s under debugfs\n", name);