From 95169535113073993a3ed97ecc21831657f42a80 Mon Sep 17 00:00:00 2001 From: Artem Bityutskiy Date: Fri, 1 Apr 2011 10:16:17 +0300 Subject: [PATCH] UBIFS: fix error path in dbg_debugfs_init_fs The debug interface is substandard and on error returns either NULL or an error code packed in the pointer. So using "IS_ERR" for the pointers returned by debugfs function is incorrect. Instead, we should use IS_ERR_OR_NULL. This path is an improved vestion of the original patch from Phil Carmody. Reported-by: Phil Carmody Signed-off-by: Artem Bityutskiy Acked-by: Phil Carmody --- fs/ubifs/debug.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/fs/ubifs/debug.c b/fs/ubifs/debug.c index 304cc6e..6457377 100644 --- a/fs/ubifs/debug.c +++ b/fs/ubifs/debug.c @@ -2808,25 +2808,25 @@ int dbg_debugfs_init_fs(struct ubifs_info *c) sprintf(d->dfs_dir_name, "ubi%d_%d", c->vi.ubi_num, c->vi.vol_id); fname = d->dfs_dir_name; dent = debugfs_create_dir(fname, dfs_rootdir); - if (IS_ERR(dent)) + if (IS_ERR_OR_NULL(dent)) goto out; d->dfs_dir = dent; fname = "dump_lprops"; dent = debugfs_create_file(fname, S_IWUSR, d->dfs_dir, c, &dfs_fops); - if (IS_ERR(dent)) + if (IS_ERR_OR_NULL(dent)) goto out_remove; d->dfs_dump_lprops = dent; fname = "dump_budg"; dent = debugfs_create_file(fname, S_IWUSR, d->dfs_dir, c, &dfs_fops); - if (IS_ERR(dent)) + if (IS_ERR_OR_NULL(dent)) goto out_remove; d->dfs_dump_budg = dent; fname = "dump_tnc"; dent = debugfs_create_file(fname, S_IWUSR, d->dfs_dir, c, &dfs_fops); - if (IS_ERR(dent)) + if (IS_ERR_OR_NULL(dent)) goto out_remove; d->dfs_dump_tnc = dent; @@ -2835,7 +2835,7 @@ int dbg_debugfs_init_fs(struct ubifs_info *c) out_remove: debugfs_remove_recursive(d->dfs_dir); out: - err = PTR_ERR(dent); + err = dent ? PTR_ERR(dent) : -ENODEV; ubifs_err("cannot create \"%s\" debugfs directory, error %d\n", fname, err); return err; -- 2.7.4