drivers: ifpga_rawdev: fix fd leak in rte_fpga_do_pr

Message ID 20190409143221.16396-1-liq3ea@163.com (mailing list archive)
State Superseded, archived
Delegated to: Thomas Monjalon
Headers
Series drivers: ifpga_rawdev: fix fd leak in rte_fpga_do_pr |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK
ci/intel-Performance-Testing success Performance Testing PASS
ci/mellanox-Performance-Testing success Performance Testing PASS

Commit Message

Li Qiang April 9, 2019, 2:32 p.m. UTC
  In rte_fpga_do_pr() function, if 'stat' return error the
'file_fd' is never closed thus leading a fd leak. This patch
avoids this.

Spotted by Coverity: CID 27441

Signed-off-by: Li Qiang <liq3ea@163.com>
---
 drivers/raw/ifpga_rawdev/ifpga_rawdev.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Xu, Rosen April 10, 2019, 10:23 a.m. UTC | #1
> -----Original Message-----
> From: Li Qiang [mailto:liq3ea@163.com]
> Sent: Tuesday, April 09, 2019 22:32
> To: Xu, Rosen <rosen.xu@intel.com>; Zhang, Tianfei
> <tianfei.zhang@intel.com>
> Cc: dev@dpdk.org; liq3ea@gmail.com; Li Qiang <liq3ea@163.com>
> Subject: [PATCH] drivers: ifpga_rawdev: fix fd leak in rte_fpga_do_pr
> 
> In rte_fpga_do_pr() function, if 'stat' return error the 'file_fd' is never closed
> thus leading a fd leak. This patch avoids this.
> 
> Spotted by Coverity: CID 27441
> 
> Signed-off-by: Li Qiang <liq3ea@163.com>
> ---
>  drivers/raw/ifpga_rawdev/ifpga_rawdev.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/raw/ifpga_rawdev/ifpga_rawdev.c
> b/drivers/raw/ifpga_rawdev/ifpga_rawdev.c
> index da772d026..0dbb16ca6 100644
> --- a/drivers/raw/ifpga_rawdev/ifpga_rawdev.c
> +++ b/drivers/raw/ifpga_rawdev/ifpga_rawdev.c
> @@ -244,7 +244,7 @@ rte_fpga_do_pr(struct rte_rawdev *rawdev, int
> port_id,
>  	if (ret) {
>  		IFPGA_RAWDEV_PMD_ERR("stat on bitstream file
> failed: %s\n",
>  				file_name);
> -		return -EINVAL;

Fill ret before goto close_fd.

> +		goto close_fd;
>  	}
>  	buffer_size = file_stat.st_size;
>  	IFPGA_RAWDEV_PMD_INFO("bitstream file size: %zu\n", buffer_size);
> --
> 2.17.1
>
  

Patch

diff --git a/drivers/raw/ifpga_rawdev/ifpga_rawdev.c b/drivers/raw/ifpga_rawdev/ifpga_rawdev.c
index da772d026..0dbb16ca6 100644
--- a/drivers/raw/ifpga_rawdev/ifpga_rawdev.c
+++ b/drivers/raw/ifpga_rawdev/ifpga_rawdev.c
@@ -244,7 +244,7 @@  rte_fpga_do_pr(struct rte_rawdev *rawdev, int port_id,
 	if (ret) {
 		IFPGA_RAWDEV_PMD_ERR("stat on bitstream file failed: %s\n",
 				file_name);
-		return -EINVAL;
+		goto close_fd;
 	}
 	buffer_size = file_stat.st_size;
 	IFPGA_RAWDEV_PMD_INFO("bitstream file size: %zu\n", buffer_size);