diff --git a/mm/Kconfig b/mm/Kconfig index a96b76db2d6c..13c907e089c3 100644 --- a/mm/Kconfig +++ b/mm/Kconfig @@ -529,6 +529,15 @@ config CMA_DEBUGFS help Turns on the DebugFS interface for CMA. +config CMA_ALLOW_WRITE_DEBUGFS + depends on CMA_DEBUGFS + bool "Allow CMA debugfs write" + help + Say 'y' here to allow the CMA debugfs write. + CMA debugfs write could be risky as it allows + cma allocation, so it is not recommended to + enable this option on any production device. + config CMA_AREAS int "Maximum count of the CMA areas" depends on CMA diff --git a/mm/cma_debug.c b/mm/cma_debug.c index a5d0d40ad577..57b9205f6563 100644 --- a/mm/cma_debug.c +++ b/mm/cma_debug.c @@ -76,6 +76,7 @@ static int cma_maxchunk_get(void *data, u64 *val) } DEFINE_SIMPLE_ATTRIBUTE(cma_maxchunk_fops, cma_maxchunk_get, NULL, "%llu\n"); +#ifdef CONFIG_CMA_ALLOW_WRITE_DEBUGFS static void cma_add_to_cma_mem_list(struct cma *cma, struct cma_mem *mem) { spin_lock(&cma->mem_head_lock); @@ -134,8 +135,13 @@ static int cma_free_write(void *data, u64 val) return cma_free_mem(cma, pages); } +#else +#define cma_free_write NULL +#endif + DEFINE_SIMPLE_ATTRIBUTE(cma_free_fops, NULL, cma_free_write, "%llu\n"); +#ifdef CONFIG_CMA_ALLOW_WRITE_DEBUGFS static int cma_alloc_mem(struct cma *cma, int count) { struct cma_mem *mem; @@ -166,6 +172,10 @@ static int cma_alloc_write(void *data, u64 val) return cma_alloc_mem(cma, pages); } +#else +#define cma_alloc_write NULL +#endif + DEFINE_SIMPLE_ATTRIBUTE(cma_alloc_fops, NULL, cma_alloc_write, "%llu\n"); static void cma_debugfs_add_one(struct cma *cma, int idx)