diff mbox series

[2/2] drm: debugfs: make drm_debugfs_create_files() never fail

Message ID 20190614095110.3716-2-gregkh@linuxfoundation.org (mailing list archive)
State New, archived
Headers show
Series [1/2] drm: debugfs: make drm_debugfs_remove_files() a void function | expand

Commit Message

Greg KH June 14, 2019, 9:51 a.m. UTC
As stated before, there is no need to care if a debugfs function
succeeds or not, and no code logic in the kernel should ever change
based on a debugfs function return value, so make
drm_debugfs_create_files() never fail.  If it encounters an
odd/rare/impossible error (i.e. out of memory, or a duplicate debugfs
filename to be created), just keep on moving as if nothing improper had
happened.

Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Maxime Ripard <maxime.ripard@bootlin.com>
Cc: Sean Paul <sean@poorly.run>
Cc: David Airlie <airlied@linux.ie>
Cc: Daniel Vetter <daniel@ffwll.ch>
Cc: dri-devel@lists.freedesktop.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/gpu/drm/drm_debugfs.c | 26 ++++++--------------------
 1 file changed, 6 insertions(+), 20 deletions(-)

Comments

Daniel Vetter June 14, 2019, 3:10 p.m. UTC | #1
On Fri, Jun 14, 2019 at 11:51:10AM +0200, Greg Kroah-Hartman wrote:
> As stated before, there is no need to care if a debugfs function
> succeeds or not, and no code logic in the kernel should ever change
> based on a debugfs function return value, so make
> drm_debugfs_create_files() never fail.  If it encounters an
> odd/rare/impossible error (i.e. out of memory, or a duplicate debugfs
> filename to be created), just keep on moving as if nothing improper had
> happened.
> 
> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> Cc: Maxime Ripard <maxime.ripard@bootlin.com>
> Cc: Sean Paul <sean@poorly.run>
> Cc: David Airlie <airlied@linux.ie>
> Cc: Daniel Vetter <daniel@ffwll.ch>
> Cc: dri-devel@lists.freedesktop.org
> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Applied this one to drm-misc-next, thanks.
-Daniel

> ---
>  drivers/gpu/drm/drm_debugfs.c | 26 ++++++--------------------
>  1 file changed, 6 insertions(+), 20 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c
> index 515569002c86..009e1c0ac7b4 100644
> --- a/drivers/gpu/drm/drm_debugfs.c
> +++ b/drivers/gpu/drm/drm_debugfs.c
> @@ -173,9 +173,8 @@ int drm_debugfs_create_files(const struct drm_info_list *files, int count,
>  			     struct dentry *root, struct drm_minor *minor)
>  {
>  	struct drm_device *dev = minor->dev;
> -	struct dentry *ent;
>  	struct drm_info_node *tmp;
> -	int i, ret;
> +	int i;
>  
>  	for (i = 0; i < count; i++) {
>  		u32 features = files[i].driver_features;
> @@ -185,22 +184,13 @@ int drm_debugfs_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;
> -		}
> -		ent = debugfs_create_file(files[i].name, S_IFREG | S_IRUGO,
> -					  root, tmp, &drm_debugfs_fops);
> -		if (!ent) {
> -			DRM_ERROR("Cannot create /sys/kernel/debug/dri/%pd/%s\n",
> -				  root, files[i].name);
> -			kfree(tmp);
> -			ret = -1;
> -			goto fail;
> -		}
> +		if (tmp == NULL)
> +			continue;
>  
>  		tmp->minor = minor;
> -		tmp->dent = ent;
> +		tmp->dent = debugfs_create_file(files[i].name,
> +						S_IFREG | S_IRUGO, root, tmp,
> +						&drm_debugfs_fops);
>  		tmp->info_ent = &files[i];
>  
>  		mutex_lock(&minor->debugfs_lock);
> @@ -208,10 +198,6 @@ int drm_debugfs_create_files(const struct drm_info_list *files, int count,
>  		mutex_unlock(&minor->debugfs_lock);
>  	}
>  	return 0;
> -
> -fail:
> -	drm_debugfs_remove_files(files, count, minor);
> -	return ret;
>  }
>  EXPORT_SYMBOL(drm_debugfs_create_files);
>  
> -- 
> 2.22.0
>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c
index 515569002c86..009e1c0ac7b4 100644
--- a/drivers/gpu/drm/drm_debugfs.c
+++ b/drivers/gpu/drm/drm_debugfs.c
@@ -173,9 +173,8 @@  int drm_debugfs_create_files(const struct drm_info_list *files, int count,
 			     struct dentry *root, struct drm_minor *minor)
 {
 	struct drm_device *dev = minor->dev;
-	struct dentry *ent;
 	struct drm_info_node *tmp;
-	int i, ret;
+	int i;
 
 	for (i = 0; i < count; i++) {
 		u32 features = files[i].driver_features;
@@ -185,22 +184,13 @@  int drm_debugfs_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;
-		}
-		ent = debugfs_create_file(files[i].name, S_IFREG | S_IRUGO,
-					  root, tmp, &drm_debugfs_fops);
-		if (!ent) {
-			DRM_ERROR("Cannot create /sys/kernel/debug/dri/%pd/%s\n",
-				  root, files[i].name);
-			kfree(tmp);
-			ret = -1;
-			goto fail;
-		}
+		if (tmp == NULL)
+			continue;
 
 		tmp->minor = minor;
-		tmp->dent = ent;
+		tmp->dent = debugfs_create_file(files[i].name,
+						S_IFREG | S_IRUGO, root, tmp,
+						&drm_debugfs_fops);
 		tmp->info_ent = &files[i];
 
 		mutex_lock(&minor->debugfs_lock);
@@ -208,10 +198,6 @@  int drm_debugfs_create_files(const struct drm_info_list *files, int count,
 		mutex_unlock(&minor->debugfs_lock);
 	}
 	return 0;
-
-fail:
-	drm_debugfs_remove_files(files, count, minor);
-	return ret;
 }
 EXPORT_SYMBOL(drm_debugfs_create_files);