Commit 72aed9e3 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman Committed by Bartlomiej Zolnierkiewicz
Browse files

fbdev: mbx: fix up debugfs file creation



There is no need to keep the dentries around for the individual debugfs
files, just delete the whole directory all at once at shutdown instead.

This also fixes a tiny memory leak where the memory for the pointers to
the file dentries was never freed when the device shut down, as well as
making the logic of the code a lot simpler.

Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
parent 60d2fa0d
Loading
Loading
Loading
Loading
+13 −27
Original line number Diff line number Diff line
@@ -211,36 +211,22 @@ static const struct file_operations misc_fops = {
static void mbxfb_debugfs_init(struct fb_info *fbi)
{
	struct mbxfb_info *mfbi = fbi->par;
	struct mbxfb_debugfs_data *dbg;

	dbg = kzalloc(sizeof(struct mbxfb_debugfs_data), GFP_KERNEL);
	mfbi->debugfs_data = dbg;

	dbg->dir = debugfs_create_dir("mbxfb", NULL);
	dbg->sysconf = debugfs_create_file("sysconf", 0444, dbg->dir,
				      fbi, &sysconf_fops);
	dbg->clock = debugfs_create_file("clock", 0444, dbg->dir,
				    fbi, &clock_fops);
	dbg->display = debugfs_create_file("display", 0444, dbg->dir,
				      fbi, &display_fops);
	dbg->gsctl = debugfs_create_file("gsctl", 0444, dbg->dir,
				    fbi, &gsctl_fops);
	dbg->sdram = debugfs_create_file("sdram", 0444, dbg->dir,
					fbi, &sdram_fops);
	dbg->misc = debugfs_create_file("misc", 0444, dbg->dir,
					fbi, &misc_fops);
	struct dentry *dir;

	dir = debugfs_create_dir("mbxfb", NULL);
	mbfi->debugfs_dir = dir;

	debugfs_create_file("sysconf", 0444, dir, fbi, &sysconf_fops);
	debugfs_create_file("clock", 0444, dir, fbi, &clock_fops);
	debugfs_create_file("display", 0444, dir, fbi, &display_fops);
	debugfs_create_file("gsctl", 0444, dir, fbi, &gsctl_fops);
	debugfs_create_file("sdram", 0444, dir, fbi, &sdram_fops);
	debugfs_create_file("misc", 0444, dir, fbi, &misc_fops);
}

static void mbxfb_debugfs_remove(struct fb_info *fbi)
{
	struct mbxfb_info *mfbi = fbi->par;
	struct mbxfb_debugfs_data *dbg = mfbi->debugfs_data;

	debugfs_remove(dbg->misc);
	debugfs_remove(dbg->sdram);
	debugfs_remove(dbg->gsctl);
	debugfs_remove(dbg->display);
	debugfs_remove(dbg->clock);
	debugfs_remove(dbg->sysconf);
	debugfs_remove(dbg->dir);

	debugfs_remove_recursive(mfbi->debugfs_dir);
}
+1 −1
Original line number Diff line number Diff line
@@ -74,7 +74,7 @@ struct mbxfb_info {

	u32 pseudo_palette[MAX_PALETTES];
#ifdef CONFIG_FB_MBX_DEBUG
	void *debugfs_data;
	struct dentry *debugfs_dir;
#endif

};