mm: cma: make writeable CMA debugfs optional

Make writeable CMA debugfs optional. This will allow exposing readonly CMA
debugfs entries for stats.

Change-Id: I35cbaa11df5a1d8bb4a2496fcc1b6166ce64abf0
Signed-off-by: Prakash Gupta <guptap@codeaurora.org>
This commit is contained in:
Prakash Gupta
2019-07-23 16:46:41 +05:30
parent 71d6cbd18e
commit 76adf14857
2 changed files with 19 additions and 0 deletions

View File

@@ -529,6 +529,15 @@ config CMA_DEBUGFS
help help
Turns on the DebugFS interface for CMA. 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 config CMA_AREAS
int "Maximum count of the CMA areas" int "Maximum count of the CMA areas"
depends on CMA depends on CMA

View File

@@ -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"); 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) static void cma_add_to_cma_mem_list(struct cma *cma, struct cma_mem *mem)
{ {
spin_lock(&cma->mem_head_lock); 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); 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"); 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) static int cma_alloc_mem(struct cma *cma, int count)
{ {
struct cma_mem *mem; struct cma_mem *mem;
@@ -166,6 +172,10 @@ static int cma_alloc_write(void *data, u64 val)
return cma_alloc_mem(cma, pages); 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"); DEFINE_SIMPLE_ATTRIBUTE(cma_alloc_fops, NULL, cma_alloc_write, "%llu\n");
static void cma_debugfs_add_one(struct cma *cma, int idx) static void cma_debugfs_add_one(struct cma *cma, int idx)