|
@@ -118,7 +118,10 @@ int drm_debugfs_create_files(struct drm_info_list *files, int count,
|
|
|
tmp->minor = minor;
|
|
|
tmp->dent = ent;
|
|
|
tmp->info_ent = &files[i];
|
|
|
- list_add(&(tmp->list), &(minor->debugfs_nodes.list));
|
|
|
+
|
|
|
+ mutex_lock(&minor->debugfs_lock);
|
|
|
+ list_add(&tmp->list, &minor->debugfs_list);
|
|
|
+ mutex_unlock(&minor->debugfs_lock);
|
|
|
}
|
|
|
return 0;
|
|
|
|
|
@@ -146,7 +149,8 @@ int drm_debugfs_init(struct drm_minor *minor, int minor_id,
|
|
|
char name[64];
|
|
|
int ret;
|
|
|
|
|
|
- INIT_LIST_HEAD(&minor->debugfs_nodes.list);
|
|
|
+ INIT_LIST_HEAD(&minor->debugfs_list);
|
|
|
+ mutex_init(&minor->debugfs_lock);
|
|
|
sprintf(name, "%d", minor_id);
|
|
|
minor->debugfs_root = debugfs_create_dir(name, root);
|
|
|
if (!minor->debugfs_root) {
|
|
@@ -192,8 +196,9 @@ int drm_debugfs_remove_files(struct drm_info_list *files, int count,
|
|
|
struct drm_info_node *tmp;
|
|
|
int i;
|
|
|
|
|
|
+ mutex_lock(&minor->debugfs_lock);
|
|
|
for (i = 0; i < count; i++) {
|
|
|
- list_for_each_safe(pos, q, &minor->debugfs_nodes.list) {
|
|
|
+ list_for_each_safe(pos, q, &minor->debugfs_list) {
|
|
|
tmp = list_entry(pos, struct drm_info_node, list);
|
|
|
if (tmp->info_ent == &files[i]) {
|
|
|
debugfs_remove(tmp->dent);
|
|
@@ -202,6 +207,7 @@ int drm_debugfs_remove_files(struct drm_info_list *files, int count,
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ mutex_unlock(&minor->debugfs_lock);
|
|
|
return 0;
|
|
|
}
|
|
|
EXPORT_SYMBOL(drm_debugfs_remove_files);
|