[v1,2/2] raw/ifpga/base: check pointer adapter before derefence

Message ID 1604540969-5503-3-git-send-email-wei.huang@intel.com (mailing list archive)
State Superseded, archived
Delegated to: Qi Zhang
Headers
Series Fix defects found by coverity scan |

Checks

Context Check Description
ci/checkpatch warning coding style issues
ci/Intel-compilation success Compilation OK
ci/travis-robot success Travis build: passed

Commit Message

Wei Huang Nov. 5, 2020, 1:49 a.m. UTC
  In opae_adapter_destroy(), pointer "adapter" is not validated before
passing it to opae_adapter_shm_free() and opae_adapter_mutex_close()
which derefence it.

Fixes: e41856b515ce ("raw/ifpga/base: enhance driver reliability in multi-process")
Coverity issue: 363752

Signed-off-by: Wei Huang <wei.huang@intel.com>
---
 drivers/raw/ifpga/base/opae_hw_api.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)
  

Comments

Zhang, Tianfei Nov. 5, 2020, 9:35 a.m. UTC | #1
> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Wei Huang
> Sent: 2020年11月5日 9:49
> To: dev@dpdk.org; Xu, Rosen <rosen.xu@intel.com>; Zhang, Qi Z
> <qi.z.zhang@intel.com>
> Cc: stable@dpdk.org; Huang, Wei <wei.huang@intel.com>
> Subject: [dpdk-dev] [PATCH v1 2/2] raw/ifpga/base: check pointer adapter
> before derefence
> 
> In opae_adapter_destroy(), pointer "adapter" is not validated before passing
> it to opae_adapter_shm_free() and opae_adapter_mutex_close() which
> derefence it.
> 
> Fixes: e41856b515ce ("raw/ifpga/base: enhance driver reliability in
> multi-process") Coverity issue: 363752
> 
> Signed-off-by: Wei Huang <wei.huang@intel.com>
> ---
>  drivers/raw/ifpga/base/opae_hw_api.c | 10 ++++++----
>  1 file changed, 6 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/raw/ifpga/base/opae_hw_api.c
> b/drivers/raw/ifpga/base/opae_hw_api.c
> index 600afdea1..d5cd5fe60 100644
> --- a/drivers/raw/ifpga/base/opae_hw_api.c
> +++ b/drivers/raw/ifpga/base/opae_hw_api.c
> @@ -605,10 +605,12 @@ int opae_adapter_enumerate(struct opae_adapter
> *adapter)
>   */
>  void opae_adapter_destroy(struct opae_adapter *adapter)  {
> -	if (adapter && adapter->ops && adapter->ops->destroy)
> -		adapter->ops->destroy(adapter);
> -	opae_adapter_shm_free(adapter);
> -	opae_adapter_mutex_close(adapter);
> +	if (adapter) {
> +		if (adapter->ops && adapter->ops->destroy)
> +			adapter->ops->destroy(adapter);
> +		opae_adapter_shm_free(adapter);
> +		opae_adapter_mutex_close(adapter);
> +	}
>  }

Acked-by: Tianfei zhang <tianfei.zhang@intel.com>
  

Patch

diff --git a/drivers/raw/ifpga/base/opae_hw_api.c b/drivers/raw/ifpga/base/opae_hw_api.c
index 600afdea1..d5cd5fe60 100644
--- a/drivers/raw/ifpga/base/opae_hw_api.c
+++ b/drivers/raw/ifpga/base/opae_hw_api.c
@@ -605,10 +605,12 @@  int opae_adapter_enumerate(struct opae_adapter *adapter)
  */
 void opae_adapter_destroy(struct opae_adapter *adapter)
 {
-	if (adapter && adapter->ops && adapter->ops->destroy)
-		adapter->ops->destroy(adapter);
-	opae_adapter_shm_free(adapter);
-	opae_adapter_mutex_close(adapter);
+	if (adapter) {
+		if (adapter->ops && adapter->ops->destroy)
+			adapter->ops->destroy(adapter);
+		opae_adapter_shm_free(adapter);
+		opae_adapter_mutex_close(adapter);
+	}
 }
 
 /**