net/virtio: check return value when calling pthread_mutex_init

Message ID 20241220015326.36760-1-sunyang.wu@jaguarmicro.com (mailing list archive)
State Rejected, archived
Delegated to: Maxime Coquelin
Headers
Series net/virtio: check return value when calling pthread_mutex_init |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/loongarch-compilation success Compilation OK
ci/loongarch-unit-testing success Unit Testing PASS
ci/Intel-compilation success Compilation OK
ci/intel-Testing success Testing PASS
ci/github-robot: build success github build: passed
ci/intel-Functional success Functional PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-marvell-Functional success Functional Testing PASS
ci/iol-unit-amd64-testing success Testing PASS
ci/iol-sample-apps-testing success Testing PASS
ci/iol-broadcom-Performance success Performance Testing PASS
ci/iol-unit-arm64-testing success Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-compile-arm64-testing success Testing PASS
ci/iol-abi-testing success Testing PASS
ci/iol-compile-amd64-testing success Testing PASS

Commit Message

Sunyang Wu Dec. 20, 2024, 1:53 a.m. UTC
Add validation for the return value of the pthread_mutex_init.

Signed-off-by: Sunyang Wu <sunyang.wu@jaguarmicro.com>
---
 drivers/net/virtio/virtio_user/virtio_user_dev.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
  

Comments

Stephen Hemminger Dec. 20, 2024, 5:24 a.m. UTC | #1
On Fri, 20 Dec 2024 09:53:26 +0800
Sunyang Wu <sunyang.wu@jaguarmicro.com> wrote:

> Add validation for the return value of the pthread_mutex_init.
> 
> Signed-off-by: Sunyang Wu <sunyang.wu@jaguarmicro.com>
> ---
>  drivers/net/virtio/virtio_user/virtio_user_dev.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/virtio/virtio_user/virtio_user_dev.c b/drivers/net/virtio/virtio_user/virtio_user_dev.c
> index 2997d2bd26..00272cf802 100644
> --- a/drivers/net/virtio/virtio_user/virtio_user_dev.c
> +++ b/drivers/net/virtio/virtio_user/virtio_user_dev.c
> @@ -735,8 +735,13 @@ virtio_user_dev_init(struct virtio_user_dev *dev, char *path, uint16_t queues,
>  		     enum virtio_user_backend_type backend_type)
>  {
>  	uint64_t backend_features;
> +	int ret;
>  
> -	pthread_mutex_init(&dev->mutex, NULL);
> +	ret = pthread_mutex_init(&dev->mutex, NULL);
> +	if (ret) {
> +		PMD_INIT_LOG(ERR, "(%s) init dev mutex failed", dev->path);
> +		return ret;
> +	}
>  	strlcpy(dev->path, path, PATH_MAX);
>  
>  	dev->started = 0;

This is wasted and dead code.
The man page for pthread_mutex_init explicitly says:

RETURN VALUE
       pthread_mutex_init  always  returns  0.
  

Patch

diff --git a/drivers/net/virtio/virtio_user/virtio_user_dev.c b/drivers/net/virtio/virtio_user/virtio_user_dev.c
index 2997d2bd26..00272cf802 100644
--- a/drivers/net/virtio/virtio_user/virtio_user_dev.c
+++ b/drivers/net/virtio/virtio_user/virtio_user_dev.c
@@ -735,8 +735,13 @@  virtio_user_dev_init(struct virtio_user_dev *dev, char *path, uint16_t queues,
 		     enum virtio_user_backend_type backend_type)
 {
 	uint64_t backend_features;
+	int ret;
 
-	pthread_mutex_init(&dev->mutex, NULL);
+	ret = pthread_mutex_init(&dev->mutex, NULL);
+	if (ret) {
+		PMD_INIT_LOG(ERR, "(%s) init dev mutex failed", dev->path);
+		return ret;
+	}
 	strlcpy(dev->path, path, PATH_MAX);
 
 	dev->started = 0;