Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a872d510 authored by Tony Luck's avatar Tony Luck Committed by Al Viro
Browse files

pstore: fix leaking ->i_private



Move kfree() of i_private out of ->unlink() and into ->evict_inode()

Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent b7ed78f5
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -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,
};