diff --git a/drivers/soc/google/pixel_stat/mm/cma.c b/drivers/soc/google/pixel_stat/mm/cma.c index 048a5f73ca83..d31995627963 100644 --- a/drivers/soc/google/pixel_stat/mm/cma.c +++ b/drivers/soc/google/pixel_stat/mm/cma.c @@ -296,7 +296,7 @@ static int add_cma_sysfs(struct cma *cma, void *data) return 0; } -static int remove_cma_sysfs(struct cma *cma, void *data) +static int remove_cma_sysfs_one(struct cma *cma, void *data) { int cma_idx = *((int *)data); @@ -310,7 +310,17 @@ static int remove_cma_sysfs(struct cma *cma, void *data) return 0; } -int pixel_mm_cma_sysfs(struct kobject *mm_kobj) +void remove_cma_sysfs(void) +{ + int cma_idx; + + for (cma_idx = 0; cma_idx < MAX_CMA_AREAS; cma_idx++) { + kobject_put(&stats[cma_idx]->kobj); + stats[cma_idx] = NULL; + } +} + +int create_cma_sysfs(struct kobject *mm_kobj) { int ret; int cma_idx = 0; @@ -321,7 +331,7 @@ int pixel_mm_cma_sysfs(struct kobject *mm_kobj) ret = cma_for_each_area(add_cma_sysfs, &cma_idx); if (ret) - cma_for_each_area(remove_cma_sysfs, &cma_idx); + cma_for_each_area(remove_cma_sysfs_one, &cma_idx); return ret; } diff --git a/drivers/soc/google/pixel_stat/mm/cma.h b/drivers/soc/google/pixel_stat/mm/cma.h index 9e22547ff53d..a1c033dbbe17 100644 --- a/drivers/soc/google/pixel_stat/mm/cma.h +++ b/drivers/soc/google/pixel_stat/mm/cma.h @@ -4,7 +4,8 @@ struct kobject; -int pixel_mm_cma_sysfs(struct kobject *mm_kobj); +int create_cma_sysfs(struct kobject *mm_kobj); +void remove_cma_sysfs(void); void vh_cma_alloc_start(void *data, s64 *ts); void vh_cma_alloc_finish(void *data, struct cma *cma, struct page *page, unsigned long count, unsigned int align, diff --git a/drivers/soc/google/pixel_stat/mm/sysfs_node.c b/drivers/soc/google/pixel_stat/mm/sysfs_node.c index 103521a5a1ef..a50e79c4db82 100644 --- a/drivers/soc/google/pixel_stat/mm/sysfs_node.c +++ b/drivers/soc/google/pixel_stat/mm/sysfs_node.c @@ -68,7 +68,7 @@ int pixel_mm_sysfs(void) if (ret) goto remove_stat_sysfs; - ret = pixel_mm_cma_sysfs(pixel_stat_mm_kobj); + ret = create_cma_sysfs(pixel_stat_mm_kobj); if (ret) goto remove_vmscan_sysfs;