net/mlx5: fix socket close
authorMichael Baum <michaelba@mellanox.com>
Wed, 27 May 2020 08:37:55 +0000 (08:37 +0000)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 2 Jun 2020 14:06:23 +0000 (16:06 +0200)
The mlx5_pmd_socket_handle function calls the accept function that
returns the socket descriptor into the conn_sock variable. The socket
descriptor value can be 0 (according to accept API) or positive and so
immediately after calling the function it checks whether conn_sock < 0.
Later in the function when other things fail it jumps to the error label
and release previously allocated resources (such as socket or file).

During the resource release, it checks whether the variable conn_sock
containing the socket descriptor is positive and if it is, it releases
it. However, in this check it misses the case where conn_sock == 0, in
this case the socket will not be released and there will be a Resource
leak.

Extend the close condition for 0 value too.

Fixes: e6cdc54cc0ef ("net/mlx5: add socket server for external tools")
Cc: stable@dpdk.org
Signed-off-by: Michael Baum <michaelba@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>
drivers/net/mlx5/mlx5_socket.c

index f473795..08af905 100644 (file)
@@ -109,7 +109,7 @@ mlx5_pmd_socket_handle(void *cb __rte_unused)
                DRV_LOG(WARNING, "failed to send response %s",
                        strerror(errno));
 error:
-       if (conn_sock > 0)
+       if (conn_sock >= 0)
                close(conn_sock);
        if (file)
                fclose(file);