regmap: Fix debugfs-file 'registers' mode
[deliverable/linux.git] / drivers / base / regmap / regmap-debugfs.c
index 45d812c0ea7751868d3d14d7691da6f74493b54a..a88cbd42edf0e3bc2d3e0a09dcc4d78115ed634f 100644 (file)
@@ -473,6 +473,7 @@ void regmap_debugfs_init(struct regmap *map, const char *name)
 {
        struct rb_node *next;
        struct regmap_range_node *range_node;
+       const char *devname = "dummy";
 
        /* If we don't have the debugfs root yet, postpone init */
        if (!regmap_debugfs_root) {
@@ -491,12 +492,15 @@ void regmap_debugfs_init(struct regmap *map, const char *name)
        INIT_LIST_HEAD(&map->debugfs_off_cache);
        mutex_init(&map->cache_lock);
 
+       if (map->dev)
+               devname = dev_name(map->dev);
+
        if (name) {
                map->debugfs_name = kasprintf(GFP_KERNEL, "%s-%s",
-                                             dev_name(map->dev), name);
+                                             devname, name);
                name = map->debugfs_name;
        } else {
-               name = dev_name(map->dev);
+               name = devname;
        }
 
        map->debugfs = debugfs_create_dir(name, regmap_debugfs_root);
@@ -512,7 +516,14 @@ void regmap_debugfs_init(struct regmap *map, const char *name)
                            map, &regmap_reg_ranges_fops);
 
        if (map->max_register || regmap_readable(map, 0)) {
-               debugfs_create_file("registers", 0400, map->debugfs,
+               umode_t registers_mode;
+
+               if (IS_ENABLED(REGMAP_ALLOW_WRITE_DEBUGFS))
+                       registers_mode = 0600;
+               else
+                       registers_mode = 0400;
+
+               debugfs_create_file("registers", registers_mode, map->debugfs,
                                    map, &regmap_map_fops);
                debugfs_create_file("access", 0400, map->debugfs,
                                    map, &regmap_access_fops);
This page took 0.039651 seconds and 5 git commands to generate.