pktcdvd: debugfs functions return NULL on error

My static checker complains correctly that this is potential NULL
dereference because debugfs functions return NULL on error.  They return
an ERR_PTR if they are configured out.

We don't need to check for ERR_PTR because if debugfs is stubbed out the
dummy functions won't complain about that.  We don't need to check the
values before calling debugfs_remove() because that accepts ERR_PTRs and
NULL pointers.

We don't need to set pkt->dfs_f_info to NULL in pkt_debugfs_dev_new()
because it was initialized with kzalloc() so I have removed that.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
This commit is contained in:
Dan Carpenter 2013-11-06 09:24:02 +01:00 committed by Jens Axboe
parent bfe11d6de1
commit 49c2856af7

View file

@ -473,45 +473,31 @@ static void pkt_debugfs_dev_new(struct pktcdvd_device *pd)
{ {
if (!pkt_debugfs_root) if (!pkt_debugfs_root)
return; return;
pd->dfs_f_info = NULL;
pd->dfs_d_root = debugfs_create_dir(pd->name, pkt_debugfs_root); pd->dfs_d_root = debugfs_create_dir(pd->name, pkt_debugfs_root);
if (IS_ERR(pd->dfs_d_root)) { if (!pd->dfs_d_root)
pd->dfs_d_root = NULL;
return; return;
}
pd->dfs_f_info = debugfs_create_file("info", S_IRUGO, pd->dfs_f_info = debugfs_create_file("info", S_IRUGO,
pd->dfs_d_root, pd, &debug_fops); pd->dfs_d_root, pd, &debug_fops);
if (IS_ERR(pd->dfs_f_info)) {
pd->dfs_f_info = NULL;
return;
}
} }
static void pkt_debugfs_dev_remove(struct pktcdvd_device *pd) static void pkt_debugfs_dev_remove(struct pktcdvd_device *pd)
{ {
if (!pkt_debugfs_root) if (!pkt_debugfs_root)
return; return;
if (pd->dfs_f_info) debugfs_remove(pd->dfs_f_info);
debugfs_remove(pd->dfs_f_info); debugfs_remove(pd->dfs_d_root);
pd->dfs_f_info = NULL; pd->dfs_f_info = NULL;
if (pd->dfs_d_root)
debugfs_remove(pd->dfs_d_root);
pd->dfs_d_root = NULL; pd->dfs_d_root = NULL;
} }
static void pkt_debugfs_init(void) static void pkt_debugfs_init(void)
{ {
pkt_debugfs_root = debugfs_create_dir(DRIVER_NAME, NULL); pkt_debugfs_root = debugfs_create_dir(DRIVER_NAME, NULL);
if (IS_ERR(pkt_debugfs_root)) {
pkt_debugfs_root = NULL;
return;
}
} }
static void pkt_debugfs_cleanup(void) static void pkt_debugfs_cleanup(void)
{ {
if (!pkt_debugfs_root)
return;
debugfs_remove(pkt_debugfs_root); debugfs_remove(pkt_debugfs_root);
pkt_debugfs_root = NULL; pkt_debugfs_root = NULL;
} }