Two issues are introduced from previous patch, one resides in ifpga_fme.c and the other resides in opae_hw_api.c. Below two patches are provided to fix them separately. Wei Huang (2): raw/ifpga/base: unlock mutex when nios init fail raw/ifpga/base: check pointer adapter before derefence drivers/raw/ifpga/base/ifpga_fme.c | 2 ++ drivers/raw/ifpga/base/opae_hw_api.c | 10 ++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) -- 2.29.2
In fme_nios_spi_init(), a mutex is locked for protecting nios initialization process, the mutex is only unlocked when process is successful, it should also be unlocked when process fail. Fixes: e41856b515ce ("raw/ifpga/base: enhance driver reliability in multi-process") Coverity issue: 363751 Signed-off-by: Wei Huang <wei.huang@intel.com> --- drivers/raw/ifpga/base/ifpga_fme.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/raw/ifpga/base/ifpga_fme.c b/drivers/raw/ifpga/base/ifpga_fme.c index 540bb1110..f29ff3159 100644 --- a/drivers/raw/ifpga/base/ifpga_fme.c +++ b/drivers/raw/ifpga/base/ifpga_fme.c @@ -1115,6 +1115,8 @@ static int fme_nios_spi_init(struct ifpga_feature *feature) ret = nios_spi_wait_init_done(spi_master); if (ret != 0) { dev_err(fme, "FME NIOS_SPI init fail\n"); + if (spi_master->mutex) + pthread_mutex_unlock(spi_master->mutex); goto release_dev; } -- 2.29.2
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); + } } /** -- 2.29.2
> -----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 1/2] raw/ifpga/base: unlock mutex when nios > init fail > > In fme_nios_spi_init(), a mutex is locked for protecting nios initialization > process, the mutex is only unlocked when process is successful, it should also > be unlocked when process fail. > > Fixes: e41856b515ce ("raw/ifpga/base: enhance driver reliability in > multi-process") Coverity issue: 363751 > > Signed-off-by: Wei Huang <wei.huang@intel.com> > --- > drivers/raw/ifpga/base/ifpga_fme.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/raw/ifpga/base/ifpga_fme.c > b/drivers/raw/ifpga/base/ifpga_fme.c > index 540bb1110..f29ff3159 100644 > --- a/drivers/raw/ifpga/base/ifpga_fme.c > +++ b/drivers/raw/ifpga/base/ifpga_fme.c > @@ -1115,6 +1115,8 @@ static int fme_nios_spi_init(struct ifpga_feature > *feature) > ret = nios_spi_wait_init_done(spi_master); > if (ret != 0) { > dev_err(fme, "FME NIOS_SPI init fail\n"); > + if (spi_master->mutex) > + pthread_mutex_unlock(spi_master->mutex); > goto release_dev; > } > Acked-by: Tianfei zhang <tianfei.zhang@intel.com> > -- > 2.29.2
> -----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>