diff options
Diffstat (limited to 'drivers/perf/arm_pmu.c')
-rw-r--r-- | drivers/perf/arm_pmu.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/drivers/perf/arm_pmu.c b/drivers/perf/arm_pmu.c index f0ad3b8b941c..a6293cbad0ba 100644 --- a/drivers/perf/arm_pmu.c +++ b/drivers/perf/arm_pmu.c @@ -927,6 +927,15 @@ out_free: return ret; } +static struct dentry *perf_debug_dir; + +struct dentry *perf_create_debug_dir(void) +{ + if (!perf_debug_dir) + perf_debug_dir = debugfs_create_dir("msm_perf", NULL); + return perf_debug_dir; +} + #ifdef CONFIG_PERF_EVENTS_RESET_PMU_DEBUGFS static __ref void reset_pmu_force(void) { @@ -972,15 +981,13 @@ int __init init_pmu_actions(void) struct dentry *file; unsigned int value = 1; - dir = debugfs_create_dir("msm_perf", NULL); + dir = perf_create_debug_dir(); if (!dir) return -ENOMEM; file = debugfs_create_file("resetpmu", 0220, dir, &value, &fops_pmuaction); - if (!file) { - debugfs_remove(dir); + if (!file) return -ENOMEM; - } return 0; } #else |