diff mbox series

drm/amdgpu: return -EFAULT if copy_to_user() fails

Message ID 20200212120759.dokjxbk4cqln55sc@kili.mountain (mailing list archive)
State New, archived
Headers show
Series drm/amdgpu: return -EFAULT if copy_to_user() fails | expand

Commit Message

Dan Carpenter Feb. 12, 2020, 12:07 p.m. UTC
The copy_to_user() function returns the number of bytes remaining to be
copied, but we want to return a negative error code to the user.

Fixes: 030d5b97a54b ("drm/amdgpu: use amdgpu_device_vram_access in amdgpu_ttm_vram_read")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

Comments

Christian König Feb. 12, 2020, 12:12 p.m. UTC | #1
Am 12.02.20 um 13:07 schrieb Dan Carpenter:
> The copy_to_user() function returns the number of bytes remaining to be
> copied, but we want to return a negative error code to the user.
>
> Fixes: 030d5b97a54b ("drm/amdgpu: use amdgpu_device_vram_access in amdgpu_ttm_vram_read")
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

Reviewed-by: Christian König <christian.koenig@amd.com>

Alex do you want to pick that up or should I do this?

Thanks,
Christian.

> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 6 ++----
>   1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> index 15f5451d312d..660867cf2597 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> @@ -2280,7 +2280,6 @@ static ssize_t amdgpu_ttm_vram_read(struct file *f, char __user *buf,
>   {
>   	struct amdgpu_device *adev = file_inode(f)->i_private;
>   	ssize_t result = 0;
> -	int r;
>   
>   	if (size & 0x3 || *pos & 0x3)
>   		return -EINVAL;
> @@ -2294,9 +2293,8 @@ static ssize_t amdgpu_ttm_vram_read(struct file *f, char __user *buf,
>   		uint32_t value[AMDGPU_TTM_VRAM_MAX_DW_READ];
>   
>   		amdgpu_device_vram_access(adev, *pos, value, bytes, false);
> -		r = copy_to_user(buf, value, bytes);
> -		if (r)
> -			return r;
> +		if (copy_to_user(buf, value, bytes))
> +			return -EFAULT;
>   
>   		result += bytes;
>   		buf += bytes;
Alex Deucher Feb. 12, 2020, 5:48 p.m. UTC | #2
On Wed, Feb 12, 2020 at 7:12 AM Christian König
<christian.koenig@amd.com> wrote:
>
> Am 12.02.20 um 13:07 schrieb Dan Carpenter:
> > The copy_to_user() function returns the number of bytes remaining to be
> > copied, but we want to return a negative error code to the user.
> >
> > Fixes: 030d5b97a54b ("drm/amdgpu: use amdgpu_device_vram_access in amdgpu_ttm_vram_read")
> > Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
>
> Reviewed-by: Christian König <christian.koenig@amd.com>
>
> Alex do you want to pick that up or should I do this?
>

Applied.  thanks!

Alex

> Thanks,
> Christian.
>
> > ---
> >   drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 6 ++----
> >   1 file changed, 2 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> > index 15f5451d312d..660867cf2597 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> > @@ -2280,7 +2280,6 @@ static ssize_t amdgpu_ttm_vram_read(struct file *f, char __user *buf,
> >   {
> >       struct amdgpu_device *adev = file_inode(f)->i_private;
> >       ssize_t result = 0;
> > -     int r;
> >
> >       if (size & 0x3 || *pos & 0x3)
> >               return -EINVAL;
> > @@ -2294,9 +2293,8 @@ static ssize_t amdgpu_ttm_vram_read(struct file *f, char __user *buf,
> >               uint32_t value[AMDGPU_TTM_VRAM_MAX_DW_READ];
> >
> >               amdgpu_device_vram_access(adev, *pos, value, bytes, false);
> > -             r = copy_to_user(buf, value, bytes);
> > -             if (r)
> > -                     return r;
> > +             if (copy_to_user(buf, value, bytes))
> > +                     return -EFAULT;
> >
> >               result += bytes;
> >               buf += bytes;
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
diff mbox series

Patch

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
index 15f5451d312d..660867cf2597 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
@@ -2280,7 +2280,6 @@  static ssize_t amdgpu_ttm_vram_read(struct file *f, char __user *buf,
 {
 	struct amdgpu_device *adev = file_inode(f)->i_private;
 	ssize_t result = 0;
-	int r;
 
 	if (size & 0x3 || *pos & 0x3)
 		return -EINVAL;
@@ -2294,9 +2293,8 @@  static ssize_t amdgpu_ttm_vram_read(struct file *f, char __user *buf,
 		uint32_t value[AMDGPU_TTM_VRAM_MAX_DW_READ];
 
 		amdgpu_device_vram_access(adev, *pos, value, bytes, false);
-		r = copy_to_user(buf, value, bytes);
-		if (r)
-			return r;
+		if (copy_to_user(buf, value, bytes))
+			return -EFAULT;
 
 		result += bytes;
 		buf += bytes;