The patch titled Subject: mm: no need to check return value of debugfs_create functions has been added to the -mm tree. Its filename is mm-no-need-to-check-return-value-of-debugfs_create-functions.patch This patch should soon appear at http://ozlabs.org/~akpm/mmots/broken-out/mm-no-need-to-check-return-value-of-debugfs_create-functions.patch and later at http://ozlabs.org/~akpm/mmotm/broken-out/mm-no-need-to-check-return-value-of-debugfs_create-functions.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> Subject: mm: no need to check return value of debugfs_create functions When calling debugfs functions, there is no need to ever check the return value. The function can work or not, but the code logic should never do something different based on this. Link: http://lkml.kernel.org/r/20190122152151.16139-14-gregkh@xxxxxxxxxxxxxxxxxxx Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> Cc: Michal Hocko <mhocko@xxxxxxxx> Cc: Vlastimil Babka <vbabka@xxxxxxx> Cc: David Rientjes <rientjes@xxxxxxxxxx> Cc: Laura Abbott <labbott@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- mm/cma_debug.c | 2 -- mm/failslab.c | 14 ++++---------- mm/gup_benchmark.c | 8 ++------ mm/huge_memory.c | 8 ++------ mm/memblock.c | 3 +-- mm/memory.c | 8 ++------ mm/page_alloc.c | 20 +++++--------------- mm/page_owner.c | 8 +++----- mm/vmstat.c | 15 ++++----------- 9 files changed, 23 insertions(+), 63 deletions(-) --- a/mm/cma_debug.c~mm-no-need-to-check-return-value-of-debugfs_create-functions +++ a/mm/cma_debug.c @@ -191,8 +191,6 @@ static int __init cma_debugfs_init(void) int i; cma_debugfs_root = debugfs_create_dir("cma", NULL); - if (!cma_debugfs_root) - return -ENOMEM; for (i = 0; i < cma_area_count; i++) cma_debugfs_add_one(&cma_areas[i], i); --- a/mm/failslab.c~mm-no-need-to-check-return-value-of-debugfs_create-functions +++ a/mm/failslab.c @@ -48,18 +48,12 @@ static int __init failslab_debugfs_init( if (IS_ERR(dir)) return PTR_ERR(dir); - if (!debugfs_create_bool("ignore-gfp-wait", mode, dir, - &failslab.ignore_gfp_reclaim)) - goto fail; - if (!debugfs_create_bool("cache-filter", mode, dir, - &failslab.cache_filter)) - goto fail; + debugfs_create_bool("ignore-gfp-wait", mode, dir, + &failslab.ignore_gfp_reclaim); + debugfs_create_bool("cache-filter", mode, dir, + &failslab.cache_filter); return 0; -fail: - debugfs_remove_recursive(dir); - - return -ENOMEM; } late_initcall(failslab_debugfs_init); --- a/mm/gup_benchmark.c~mm-no-need-to-check-return-value-of-debugfs_create-functions +++ a/mm/gup_benchmark.c @@ -122,12 +122,8 @@ static const struct file_operations gup_ static int gup_benchmark_init(void) { - void *ret; - - ret = debugfs_create_file_unsafe("gup_benchmark", 0600, NULL, NULL, - &gup_benchmark_fops); - if (!ret) - pr_warn("Failed to create gup_benchmark in debugfs"); + debugfs_create_file_unsafe("gup_benchmark", 0600, NULL, NULL, + &gup_benchmark_fops); return 0; } --- a/mm/huge_memory.c~mm-no-need-to-check-return-value-of-debugfs_create-functions +++ a/mm/huge_memory.c @@ -2887,12 +2887,8 @@ DEFINE_SIMPLE_ATTRIBUTE(split_huge_pages static int __init split_huge_pages_debugfs(void) { - void *ret; - - ret = debugfs_create_file("split_huge_pages", 0200, NULL, NULL, - &split_huge_pages_fops); - if (!ret) - pr_warn("Failed to create split_huge_pages in debugfs"); + debugfs_create_file("split_huge_pages", 0200, NULL, NULL, + &split_huge_pages_fops); return 0; } late_initcall(split_huge_pages_debugfs); --- a/mm/memblock.c~mm-no-need-to-check-return-value-of-debugfs_create-functions +++ a/mm/memblock.c @@ -1998,8 +1998,7 @@ DEFINE_SHOW_ATTRIBUTE(memblock_debug); static int __init memblock_init_debugfs(void) { struct dentry *root = debugfs_create_dir("memblock", NULL); - if (!root) - return -ENXIO; + debugfs_create_file("memory", 0444, root, &memblock.memory, &memblock_debug_fops); debugfs_create_file("reserved", 0444, root, --- a/mm/memory.c~mm-no-need-to-check-return-value-of-debugfs_create-functions +++ a/mm/memory.c @@ -3334,12 +3334,8 @@ DEFINE_DEBUGFS_ATTRIBUTE(fault_around_by static int __init fault_around_debugfs(void) { - void *ret; - - ret = debugfs_create_file_unsafe("fault_around_bytes", 0644, NULL, NULL, - &fault_around_bytes_fops); - if (!ret) - pr_warn("Failed to create fault_around_bytes in debugfs"); + debugfs_create_file_unsafe("fault_around_bytes", 0644, NULL, NULL, + &fault_around_bytes_fops); return 0; } late_initcall(fault_around_debugfs); --- a/mm/page_alloc.c~mm-no-need-to-check-return-value-of-debugfs_create-functions +++ a/mm/page_alloc.c @@ -3219,24 +3219,14 @@ static int __init fail_page_alloc_debugf dir = fault_create_debugfs_attr("fail_page_alloc", NULL, &fail_page_alloc.attr); - if (IS_ERR(dir)) - return PTR_ERR(dir); - if (!debugfs_create_bool("ignore-gfp-wait", mode, dir, - &fail_page_alloc.ignore_gfp_reclaim)) - goto fail; - if (!debugfs_create_bool("ignore-gfp-highmem", mode, dir, - &fail_page_alloc.ignore_gfp_highmem)) - goto fail; - if (!debugfs_create_u32("min-order", mode, dir, - &fail_page_alloc.min_order)) - goto fail; + debugfs_create_bool("ignore-gfp-wait", mode, dir, + &fail_page_alloc.ignore_gfp_reclaim); + debugfs_create_bool("ignore-gfp-highmem", mode, dir, + &fail_page_alloc.ignore_gfp_highmem); + debugfs_create_u32("min-order", mode, dir, &fail_page_alloc.min_order); return 0; -fail: - debugfs_remove_recursive(dir); - - return -ENOMEM; } late_initcall(fail_page_alloc_debugfs); --- a/mm/page_owner.c~mm-no-need-to-check-return-value-of-debugfs_create-functions +++ a/mm/page_owner.c @@ -625,16 +625,14 @@ static const struct file_operations proc static int __init pageowner_init(void) { - struct dentry *dentry; - if (!static_branch_unlikely(&page_owner_inited)) { pr_info("page_owner is disabled\n"); return 0; } - dentry = debugfs_create_file("page_owner", 0400, NULL, - NULL, &proc_page_owner_operations); + debugfs_create_file("page_owner", 0400, NULL, NULL, + &proc_page_owner_operations); - return PTR_ERR_OR_ZERO(dentry); + return 0; } late_initcall(pageowner_init) --- a/mm/vmstat.c~mm-no-need-to-check-return-value-of-debugfs_create-functions +++ a/mm/vmstat.c @@ -2121,21 +2121,14 @@ static int __init extfrag_debug_init(voi struct dentry *extfrag_debug_root; extfrag_debug_root = debugfs_create_dir("extfrag", NULL); - if (!extfrag_debug_root) - return -ENOMEM; - if (!debugfs_create_file("unusable_index", 0444, - extfrag_debug_root, NULL, &unusable_file_ops)) - goto fail; + debugfs_create_file("unusable_index", 0444, extfrag_debug_root, NULL, + &unusable_file_ops); - if (!debugfs_create_file("extfrag_index", 0444, - extfrag_debug_root, NULL, &extfrag_file_ops)) - goto fail; + debugfs_create_file("extfrag_index", 0444, extfrag_debug_root, NULL, + &extfrag_file_ops); return 0; -fail: - debugfs_remove_recursive(extfrag_debug_root); - return -ENOMEM; } module_init(extfrag_debug_init); _ Patches currently in -mm which might be from gregkh@xxxxxxxxxxxxxxxxxxx are mm-no-need-to-check-return-value-of-debugfs_create-functions.patch kcov-no-need-to-check-return-value-of-debugfs_create-functions.patch