Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965202AbeAKRms (ORCPT + 1 other); Thu, 11 Jan 2018 12:42:48 -0500 Received: from gateway36.websitewelcome.com ([192.185.195.25]:24965 "EHLO gateway36.websitewelcome.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932429AbeAKRmn (ORCPT ); Thu, 11 Jan 2018 12:42:43 -0500 Date: Thu, 11 Jan 2018 11:42:41 -0600 Message-ID: <20180111114241.Horde.e34BFMG4XOnVcEFgqb3KBss@gator4166.hostgator.com> From: "Gustavo A. R. Silva" To: Oded Gabbay Cc: Felix Kuehling , Alex Deucher , Christian =?utf-8?b?S8O2bmln?= , David Airlie , Maling list - DRI developers , amd-gfx list , "Linux-Kernel@Vger. Kernel. Org" Subject: Re: [PATCH v2] drm/amdkfd: Fix potential NULL pointer dereferences References: <20180110231509.GA14154@embeddedor.com> In-Reply-To: User-Agent: Horde Application Framework 5 Content-Type: text/plain; charset=utf-8; format=flowed; DelSp=Yes MIME-Version: 1.0 Content-Disposition: inline X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - gator4166.hostgator.com X-AntiAbuse: Original Domain - vger.kernel.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - embeddedor.com X-BWhitelist: no X-Source-IP: 108.167.133.22 X-Source-L: Yes X-Exim-ID: 1eZgsD-000ErQ-IH X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: gator4166.hostgator.com [108.167.133.22]:18837 X-Source-Auth: garsilva@embeddedor.com X-Email-Count: 2 X-Source-Cap: Z3V6aWRpbmU7Z3V6aWRpbmU7Z2F0b3I0MTY2Lmhvc3RnYXRvci5jb20= X-Local-Domain: yes Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: 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(&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 Thank you, Oded. -- Gustavo