[PATCH] drm/amd/amdgpu: Fix debugfs error handling

Koenig, Christian Christian.Koenig at amd.com
Tue Oct 16 13:00:57 UTC 2018


Am 14.06.2018 um 16:45 schrieb Dan Carpenter:
> The error handling is wrong and "ent" could be NULL we when dereference
> it to get "ent->d_inode".
>
> The thing is that normally debugfs_create_file() is not supposed to
> require (or have) any error handling.  That function does return error
> pointers if debugfs is turned off but we know it's enable here.  When
> it's enabled, then it returns NULL on error.
>
> So what I did was I stripped out all the error handling except around
> the i_size_write().  I could have just used a NULL check instead of an
> IS_ERR_OR_NULL() but I figured this was more clear because that way you
> don't have to look at the surrounding code to see whether debugfs is
> enabled or not.

Stumbled over this while going through old mails. Patch is Reviewed and 
pushed.

Thanks,
Christian.

>
> Signed-off-by: Dan Carpenter <dan.carpenter at oracle.com>
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
> index f5fb93795a69..dd9a4fb9ce39 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
> @@ -826,21 +826,13 @@ int amdgpu_debugfs_regs_init(struct amdgpu_device *adev)
>   {
>   	struct drm_minor *minor = adev->ddev->primary;
>   	struct dentry *ent, *root = minor->debugfs_root;
> -	unsigned i, j;
> +	unsigned int i;
>   
>   	for (i = 0; i < ARRAY_SIZE(debugfs_regs); i++) {
>   		ent = debugfs_create_file(debugfs_regs_names[i],
>   					  S_IFREG | S_IRUGO, root,
>   					  adev, debugfs_regs[i]);
> -		if (IS_ERR(ent)) {
> -			for (j = 0; j < i; j++) {
> -				debugfs_remove(adev->debugfs_regs[i]);
> -				adev->debugfs_regs[i] = NULL;
> -			}
> -			return PTR_ERR(ent);
> -		}
> -
> -		if (!i)
> +		if (!i && !IS_ERR_OR_NULL(ent))
>   			i_size_write(ent->d_inode, adev->rmmio_size);
>   		adev->debugfs_regs[i] = ent;
>   	}



More information about the amd-gfx mailing list