Re: [PATCH v2] drm/amdkfd: Fix potential NULL pointer dereferences

2018-01-12 Thread Gustavo A. R. Silva


Quoting Oded Gabbay :


On Thu, Jan 11, 2018 at 1:15 AM, Gustavo A. R. Silva
 wrote:

In case kfd_get_process_device_data returns null, there are some
null pointer dereferences in functions kfd_bind_processes_to_device
and kfd_unbind_processes_from_device.

Fix this by printing a WARN_ON for PDDs that aren't found and skip
them with continue statements.

Addresses-Coverity-ID: 1463794 ("Dereference null return value")
Addresses-Coverity-ID: 1463772 ("Dereference null return value")
Suggested-by: Felix Kuehling 
Signed-off-by: Gustavo A. R. Silva 
---
Changes in v2:
 Print a WARN_ON and skip PDDs that aren't found instead of returning
 an error.

 drivers/gpu/drm/amd/amdkfd/kfd_process.c | 8 +++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c  
b/drivers/gpu/drm/amd/amdkfd/kfd_process.c

index a22fb071..4ff5f0f 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c
@@ -461,7 +461,8 @@ int kfd_bind_processes_to_device(struct kfd_dev *dev)
hash_for_each_rcu(kfd_processes_table, temp, p, kfd_processes) {
mutex_lock(>mutex);
pdd = kfd_get_process_device_data(dev, p);
-   if (pdd->bound != PDD_BOUND_SUSPENDED) {
+
+   if (WARN_ON(!pdd) || pdd->bound != PDD_BOUND_SUSPENDED) {
mutex_unlock(>mutex);
continue;
}
@@ -501,6 +502,11 @@ void kfd_unbind_processes_from_device(struct  
kfd_dev *dev)

mutex_lock(>mutex);
pdd = kfd_get_process_device_data(dev, p);

+   if (WARN_ON(!pdd)) {
+   mutex_unlock(>mutex);
+   continue;
+   }
+
if (pdd->bound == PDD_BOUND)
pdd->bound = PDD_BOUND_SUSPENDED;
mutex_unlock(>mutex);
--
2.7.4


This patch is:
Reviewed-by: Oded Gabbay 


Thank you, Oded.
--
Gustavo




___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH v2] drm/amdkfd: Fix potential NULL pointer dereferences

2018-01-11 Thread Oded Gabbay
On Thu, Jan 11, 2018 at 1:15 AM, Gustavo A. R. Silva
 wrote:
> In case kfd_get_process_device_data returns null, there are some
> null pointer dereferences in functions kfd_bind_processes_to_device
> and kfd_unbind_processes_from_device.
>
> Fix this by printing a WARN_ON for PDDs that aren't found and skip
> them with continue statements.
>
> Addresses-Coverity-ID: 1463794 ("Dereference null return value")
> Addresses-Coverity-ID: 1463772 ("Dereference null return value")
> Suggested-by: Felix Kuehling 
> Signed-off-by: Gustavo A. R. Silva 
> ---
> Changes in v2:
>  Print a WARN_ON and skip PDDs that aren't found instead of returning
>  an error.
>
>  drivers/gpu/drm/amd/amdkfd/kfd_process.c | 8 +++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c 
> b/drivers/gpu/drm/amd/amdkfd/kfd_process.c
> index a22fb071..4ff5f0f 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c
> @@ -461,7 +461,8 @@ int kfd_bind_processes_to_device(struct kfd_dev *dev)
> hash_for_each_rcu(kfd_processes_table, temp, p, kfd_processes) {
> mutex_lock(>mutex);
> pdd = kfd_get_process_device_data(dev, p);
> -   if (pdd->bound != PDD_BOUND_SUSPENDED) {
> +
> +   if (WARN_ON(!pdd) || pdd->bound != PDD_BOUND_SUSPENDED) {
> mutex_unlock(>mutex);
> continue;
> }
> @@ -501,6 +502,11 @@ void kfd_unbind_processes_from_device(struct kfd_dev 
> *dev)
> mutex_lock(>mutex);
> pdd = kfd_get_process_device_data(dev, p);
>
> +   if (WARN_ON(!pdd)) {
> +   mutex_unlock(>mutex);
> +   continue;
> +   }
> +
> if (pdd->bound == PDD_BOUND)
> pdd->bound = PDD_BOUND_SUSPENDED;
> mutex_unlock(>mutex);
> --
> 2.7.4
>
This patch is:
Reviewed-by: Oded Gabbay 
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel