[PATCH] mm/memblock: validate the creation of debugfs files

Alexander Kuleshov
2015-08-14T19:08:30Z

Signed-off-by: Alexander Kuleshov <kuleshovmail@gmail.com>
---
mm/memblock.c | 24 +++++++++++++++++++++---
1 file changed, 21 insertions(+), 3 deletions(-)

diff --git a/mm/memblock.c b/mm/memblock.c
index 87108e7..c09e911 100644
--- a/mm/memblock.c
+++ b/mm/memblock.c
@@ -1692,16 +1692,34 @@ static const struct file_operations memblock_debug_fops = {

static int __init memblock_init_debugfs(void)
{
+ struct dentry *f;
struct dentry *root = debugfs_create_dir("memblock", NULL);
if (!root)
return -ENXIO;
- debugfs_create_file("memory", S_IRUGO, root, &memblock.memory, &memblock_debug_fops);
- debugfs_create_file("reserved", S_IRUGO, root, &memblock.reserved, &memblock_debug_fops);
+
+ f = debugfs_create_file("memory", S_IRUGO, root, &memblock.memory, &memblock_debug_fops);
+ if (!f) {
+ pr_err("Failed to create memory debugfs file\n");
+ goto err_out;
+ }
+
+ f = debugfs_create_file("reserved", S_IRUGO, root, &memblock.reserved, &memblock_debug_fops);
+ if (!f) {
+ pr_err("Failed to create reserved debugfs file\n");
+ goto err_out;
+ }
+
#ifdef CONFIG_HAVE_MEMBLOCK_PHYS_MAP
- debugfs_create_file("physmem", S_IRUGO, root, &memblock.physmem, &memblock_debug_fops);
+ f = debugfs_create_file("physmem", S_IRUGO, root, &memblock.physmem, &memblock_debug_fops);
+ if (!f) {
+ pr_err("Failed to create physmem debugfs file\n");
+ goto err_out;
+ }
#endif

return 0;
+err_out:
+ return -ENOMEM;
}
__initcall(memblock_init_debugfs);

--
2.5.0