From: Rohit Raj <rohit.raj@nxp.com>
Since error code was being set to 0 in case of error which is a valid
fd, it caused memory leak issue.
This issue have been fixed by changing zero to a valid non fd error.
CID: 26661848
Signed-off-by: Rohit Raj <rohit.raj@nxp.com>
---
drivers/bus/fslmc/fslmc_vfio.c | 19 ++++++-------------
1 file changed, 6 insertions(+), 13 deletions(-)
@@ -1,7 +1,7 @@
/* SPDX-License-Identifier: BSD-3-Clause
*
* Copyright (c) 2015-2016 Freescale Semiconductor, Inc. All rights reserved.
- * Copyright 2016-2023 NXP
+ * Copyright 2016-2024 NXP
*
*/
@@ -41,8 +41,6 @@
#include "portal/dpaa2_hw_pvt.h"
#include "portal/dpaa2_hw_dpio.h"
-#define FSLMC_CONTAINER_MAX_LEN 8 /**< Of the format dprc.XX */
-
#define FSLMC_VFIO_MP "fslmc_vfio_mp_sync"
/* Container is composed by multiple groups, however,
@@ -415,18 +413,16 @@ fslmc_vfio_open_group_fd(const char *group_name)
mp_reply.nb_received == 1) {
mp_rep = &mp_reply.msgs[0];
p = (struct vfio_mp_param *)mp_rep->param;
- if (p->result == SOCKET_OK && mp_rep->num_fds == 1) {
+ if (p->result == SOCKET_OK && mp_rep->num_fds == 1)
vfio_group_fd = mp_rep->fds[0];
- } else if (p->result == SOCKET_NO_FD) {
+ else if (p->result == SOCKET_NO_FD)
DPAA2_BUS_ERR("Bad VFIO group fd");
- vfio_group_fd = 0;
- }
}
free(mp_reply.msgs);
add_vfio_group:
- if (vfio_group_fd <= 0) {
+ if (vfio_group_fd < 0) {
if (rte_eal_process_type() == RTE_PROC_PRIMARY) {
DPAA2_BUS_ERR("Open VFIO group(%s) failed(%d)",
filename, vfio_group_fd);
@@ -1802,14 +1798,11 @@ fslmc_vfio_setup_group(void)
}
vfio_group_fd = fslmc_vfio_group_fd_by_name(group_name);
- if (vfio_group_fd <= 0) {
+ if (vfio_group_fd < 0) {
vfio_group_fd = fslmc_vfio_open_group_fd(group_name);
- if (vfio_group_fd <= 0) {
+ if (vfio_group_fd < 0) {
DPAA2_BUS_ERR("%s: open group name(%s) failed(%d)",
__func__, group_name, vfio_group_fd);
- if (!vfio_group_fd)
- close(vfio_group_fd);
- DPAA2_BUS_ERR("Failed to create MC VFIO group");
return -rte_errno;
}
}