pstore: fix leaking ->i_private
[deliverable/linux.git] / fs / pstore / inode.c
index 08342232cb1c4f82ddb07db1fc4c8fcb9908d72b..f777f2902c499d89183fb298a7d58cf0e224e9de 100644 (file)
@@ -73,11 +73,16 @@ static int pstore_unlink(struct inode *dir, struct dentry *dentry)
        struct pstore_private *p = dentry->d_inode->i_private;
 
        p->erase(p->id);
-       kfree(p);
 
        return simple_unlink(dir, dentry);
 }
 
+static void pstore_evict_inode(struct inode *inode)
+{
+       end_writeback(inode);
+       kfree(inode->i_private);
+}
+
 static const struct inode_operations pstore_dir_inode_operations = {
        .lookup         = simple_lookup,
        .unlink         = pstore_unlink,
@@ -110,6 +115,7 @@ static struct inode *pstore_get_inode(struct super_block *sb,
 static const struct super_operations pstore_ops = {
        .statfs         = simple_statfs,
        .drop_inode     = generic_delete_inode,
+       .evict_inode    = pstore_evict_inode,
        .show_options   = generic_show_options,
 };
 
This page took 0.033739 seconds and 5 git commands to generate.