diff mbox series

drm/amdkfd: CRIU return -EFAULT for copy_to_user() failure

Message ID 20220209180958.GC18385@kili (mailing list archive)
State New, archived
Headers show
Series drm/amdkfd: CRIU return -EFAULT for copy_to_user() failure | expand

Commit Message

Dan Carpenter Feb. 9, 2022, 6:09 p.m. UTC
If copy_to_user() fails, it returns the number of bytes remaining to
be copied but we want to return a negative error code (-EFAULT) to the
user.

Fixes: 9d5dabfeff3c ("drm/amdkfd: CRIU Save Shared Virtual Memory ranges")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
---
 drivers/gpu/drm/amd/amdkfd/kfd_svm.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Comments

Felix Kuehling Feb. 9, 2022, 8:34 p.m. UTC | #1
On 2022-02-09 13:09, Dan Carpenter wrote:
> If copy_to_user() fails, it returns the number of bytes remaining to
> be copied but we want to return a negative error code (-EFAULT) to the
> user.
>
> Fixes: 9d5dabfeff3c ("drm/amdkfd: CRIU Save Shared Virtual Memory ranges")
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>

Thank you Dan. I'm applying your two patches to amd-staging-drm-next.

Regards,
   Felix

> ---
>   drivers/gpu/drm/amd/amdkfd/kfd_svm.c | 6 +++---
>   1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
> index 41f03d165bad..38a056fd0966 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
> @@ -3775,10 +3775,10 @@ int kfd_criu_checkpoint_svm(struct kfd_process *p,
>   			goto exit_priv;
>   		}
>   
> -		ret = copy_to_user(user_priv_data + *priv_data_offset,
> -				   svm_priv, svm_priv_data_size);
> -		if (ret) {
> +		if (copy_to_user(user_priv_data + *priv_data_offset, svm_priv,
> +				 svm_priv_data_size)) {
>   			pr_err("Failed to copy svm priv to user\n");
> +			ret = -EFAULT;
>   			goto exit_priv;
>   		}
>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
index 41f03d165bad..38a056fd0966 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
@@ -3775,10 +3775,10 @@  int kfd_criu_checkpoint_svm(struct kfd_process *p,
 			goto exit_priv;
 		}
 
-		ret = copy_to_user(user_priv_data + *priv_data_offset,
-				   svm_priv, svm_priv_data_size);
-		if (ret) {
+		if (copy_to_user(user_priv_data + *priv_data_offset, svm_priv,
+				 svm_priv_data_size)) {
 			pr_err("Failed to copy svm priv to user\n");
+			ret = -EFAULT;
 			goto exit_priv;
 		}