All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] drm/amdkfd: Fix potential NULL pointer dereferences
@ 2018-01-10 23:15 Gustavo A. R. Silva
  2018-01-11 14:40 ` Oded Gabbay
  0 siblings, 1 reply; 3+ messages in thread
From: Gustavo A. R. Silva @ 2018-01-10 23:15 UTC (permalink / raw)
  To: Felix Kuehling, Oded Gabbay, Alex Deucher, Christian König,
	David Airlie
  Cc: dri-devel, amd-gfx, linux-kernel, Gustavo A. R. Silva

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 <felix.kuehling@amd.com>
Signed-off-by: Gustavo A. R. Silva <garsilva@embeddedor.com>
---
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(&p->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(&p->mutex);
 			continue;
 		}
@@ -501,6 +502,11 @@ void kfd_unbind_processes_from_device(struct kfd_dev *dev)
 		mutex_lock(&p->mutex);
 		pdd = kfd_get_process_device_data(dev, p);
 
+		if (WARN_ON(!pdd)) {
+			mutex_unlock(&p->mutex);
+			continue;
+		}
+
 		if (pdd->bound == PDD_BOUND)
 			pdd->bound = PDD_BOUND_SUSPENDED;
 		mutex_unlock(&p->mutex);
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] drm/amdkfd: Fix potential NULL pointer dereferences
  2018-01-10 23:15 [PATCH v2] drm/amdkfd: Fix potential NULL pointer dereferences Gustavo A. R. Silva
@ 2018-01-11 14:40 ` Oded Gabbay
  2018-01-11 17:42   ` Gustavo A. R. Silva
  0 siblings, 1 reply; 3+ messages in thread
From: Oded Gabbay @ 2018-01-11 14:40 UTC (permalink / raw)
  To: Gustavo A. R. Silva
  Cc: Felix Kuehling, Alex Deucher, Christian König, David Airlie,
	Maling list - DRI developers, amd-gfx list,
	Linux-Kernel@Vger. Kernel. Org

On Thu, Jan 11, 2018 at 1:15 AM, Gustavo A. R. Silva
<garsilva@embeddedor.com> 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 <felix.kuehling@amd.com>
> Signed-off-by: Gustavo A. R. Silva <garsilva@embeddedor.com>
> ---
> 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(&p->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(&p->mutex);
>                         continue;
>                 }
> @@ -501,6 +502,11 @@ void kfd_unbind_processes_from_device(struct kfd_dev *dev)
>                 mutex_lock(&p->mutex);
>                 pdd = kfd_get_process_device_data(dev, p);
>
> +               if (WARN_ON(!pdd)) {
> +                       mutex_unlock(&p->mutex);
> +                       continue;
> +               }
> +
>                 if (pdd->bound == PDD_BOUND)
>                         pdd->bound = PDD_BOUND_SUSPENDED;
>                 mutex_unlock(&p->mutex);
> --
> 2.7.4
>
This patch is:
Reviewed-by: Oded Gabbay <oded.gabbay@gmail.com>

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] drm/amdkfd: Fix potential NULL pointer dereferences
  2018-01-11 14:40 ` Oded Gabbay
@ 2018-01-11 17:42   ` Gustavo A. R. Silva
  0 siblings, 0 replies; 3+ messages in thread
From: Gustavo A. R. Silva @ 2018-01-11 17:42 UTC (permalink / raw)
  To: Oded Gabbay
  Cc: Felix Kuehling, Alex Deucher, Christian König, David Airlie,
	Maling list - DRI developers, amd-gfx list,
	Linux-Kernel@Vger. Kernel. Org


Quoting Oded Gabbay <oded.gabbay@gmail.com>:

> On Thu, Jan 11, 2018 at 1:15 AM, Gustavo A. R. Silva
> <garsilva@embeddedor.com> 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 <felix.kuehling@amd.com>
>> Signed-off-by: Gustavo A. R. Silva <garsilva@embeddedor.com>
>> ---
>> 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(&p->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(&p->mutex);
>>                         continue;
>>                 }
>> @@ -501,6 +502,11 @@ void kfd_unbind_processes_from_device(struct  
>> kfd_dev *dev)
>>                 mutex_lock(&p->mutex);
>>                 pdd = kfd_get_process_device_data(dev, p);
>>
>> +               if (WARN_ON(!pdd)) {
>> +                       mutex_unlock(&p->mutex);
>> +                       continue;
>> +               }
>> +
>>                 if (pdd->bound == PDD_BOUND)
>>                         pdd->bound = PDD_BOUND_SUSPENDED;
>>                 mutex_unlock(&p->mutex);
>> --
>> 2.7.4
>>
> This patch is:
> Reviewed-by: Oded Gabbay <oded.gabbay@gmail.com>

Thank you, Oded.
--
Gustavo

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2018-01-11 17:42 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-01-10 23:15 [PATCH v2] drm/amdkfd: Fix potential NULL pointer dereferences Gustavo A. R. Silva
2018-01-11 14:40 ` Oded Gabbay
2018-01-11 17:42   ` Gustavo A. R. Silva

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.