diff options
Diffstat (limited to 'drivers/gpu/drm/drm_debugfs.c')
| -rw-r--r-- | drivers/gpu/drm/drm_debugfs.c | 12 | 
1 files changed, 9 insertions, 3 deletions
diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c index d067c12ba94..1c7a1c0d3ed 100644 --- a/drivers/gpu/drm/drm_debugfs.c +++ b/drivers/gpu/drm/drm_debugfs.c @@ -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);  |