[PATCH 2/2] drm: debugfs: make drm_debugfs_create_files() never fail
Daniel Vetter
daniel at ffwll.ch
Fri Jun 14 15:10:47 UTC 2019
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 at linux.intel.com>
> Cc: Maxime Ripard <maxime.ripard at bootlin.com>
> Cc: Sean Paul <sean at poorly.run>
> Cc: David Airlie <airlied at linux.ie>
> Cc: Daniel Vetter <daniel at ffwll.ch>
> Cc: dri-devel at lists.freedesktop.org
> Signed-off-by: Greg Kroah-Hartman <gregkh at 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
>
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
More information about the dri-devel
mailing list