diff options
Diffstat (limited to 'drivers/gpu/drm/drm_proc.c')
| -rw-r--r-- | drivers/gpu/drm/drm_proc.c | 22 | 
1 files changed, 7 insertions, 15 deletions
diff --git a/drivers/gpu/drm/drm_proc.c b/drivers/gpu/drm/drm_proc.c index 0646a462d4c..d7f2324b4fb 100644 --- a/drivers/gpu/drm/drm_proc.c +++ b/drivers/gpu/drm/drm_proc.c @@ -95,7 +95,7 @@ static int drm_proc_create_files(const struct drm_info_list *files, int count,  	struct drm_device *dev = minor->dev;  	struct proc_dir_entry *ent;  	struct drm_info_node *tmp; -	int i, ret; +	int i;  	for (i = 0; i < count; i++) {  		u32 features = files[i].driver_features; @@ -105,10 +105,9 @@ static int drm_proc_create_files(const struct drm_info_list *files, int count,  			continue;  		tmp = kmalloc(sizeof(struct drm_info_node), GFP_KERNEL); -		if (tmp == NULL) { -			ret = -1; -			goto fail; -		} +		if (!tmp) +			return -1; +  		tmp->minor = minor;  		tmp->info_ent = &files[i];  		list_add(&tmp->list, &minor->proc_nodes.list); @@ -120,16 +119,10 @@ static int drm_proc_create_files(const struct drm_info_list *files, int count,  				  minor->index, files[i].name);  			list_del(&tmp->list);  			kfree(tmp); -			ret = -1; -			goto fail; +			return -1;  		}  	}  	return 0; - -fail: -	for (i = 0; i < count; i++) -		remove_proc_entry(drm_proc_list[i].name, minor->proc_root); -	return ret;  }  /** @@ -160,7 +153,7 @@ int drm_proc_init(struct drm_minor *minor, struct proc_dir_entry *root)  	ret = drm_proc_create_files(drm_proc_list, DRM_PROC_ENTRIES,  				    minor->proc_root, minor);  	if (ret) { -		remove_proc_entry(name, root); +		remove_proc_subtree(name, root);  		minor->proc_root = NULL;  		DRM_ERROR("Failed to create core drm proc files\n");  		return ret; @@ -210,8 +203,7 @@ int drm_proc_cleanup(struct drm_minor *minor, struct proc_dir_entry *root)  	drm_proc_remove_files(drm_proc_list, DRM_PROC_ENTRIES, minor);  	sprintf(name, "%d", minor->index); -	remove_proc_entry(name, root); - +	remove_proc_subtree(name, root);  	return 0;  }  |