[v1,2/4] raw/ifpga/base: check return value of lseek

Message ID 1615969296-17021-3-git-send-email-wei.huang@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Qi Zhang
Headers
Series Fix coverity issues reported in DPDK-26380 |

Checks

Context Check Description
ci/checkpatch success coding style OK

Commit Message

Wei Huang March 17, 2021, 8:21 a.m. UTC
  In write_flash_image(), calling function "lseek" without checking
return value has risk. Negative return value should be handled as
an error condition.

Coverity issue: 367478
Fixes: 7a4f3993f269 ("raw/ifpga: add FPGA RSU APIs")

Signed-off-by: Wei Huang <wei.huang@intel.com>
---
 drivers/raw/ifpga/base/ifpga_fme_rsu.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
  

Comments

Zhang, Tianfei April 1, 2021, 7:46 a.m. UTC | #1
> -----Original Message-----
> From: Huang, Wei <wei.huang@intel.com>
> Sent: 2021年3月17日 16:22
> To: dev@dpdk.org; Xu, Rosen <rosen.xu@intel.com>; Zhang, Qi Z
> <qi.z.zhang@intel.com>
> Cc: stable@dpdk.org; Zhang, Tianfei <tianfei.zhang@intel.com>; Huang, Wei
> <wei.huang@intel.com>
> Subject: [PATCH v1 2/4] raw/ifpga/base: check return value of lseek
> 
> In write_flash_image(), calling function "lseek" without checking return value
> has risk. Negative return value should be handled as an error condition.
> 
> Coverity issue: 367478
> Fixes: 7a4f3993f269 ("raw/ifpga: add FPGA RSU APIs")
> 
> Signed-off-by: Wei Huang <wei.huang@intel.com>
> ---
>  drivers/raw/ifpga/base/ifpga_fme_rsu.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/raw/ifpga/base/ifpga_fme_rsu.c
> b/drivers/raw/ifpga/base/ifpga_fme_rsu.c
> index d32f1eccb1..a4cb2f54ba 100644
> --- a/drivers/raw/ifpga/base/ifpga_fme_rsu.c
> +++ b/drivers/raw/ifpga/base/ifpga_fme_rsu.c
> @@ -130,7 +130,12 @@ static int write_flash_image(struct ifpga_sec_mgr
> *smgr, const char *image,
>  	do {
>  		to_transfer = (length > IFPGA_RSU_DATA_BLK_SIZE) ?
>  			IFPGA_RSU_DATA_BLK_SIZE : length;
> -		lseek(fd, offset, SEEK_SET);
> +		if (lseek(fd, offset, SEEK_SET) < 0) {
> +			dev_err(smgr, "Failed to seek in \'%s\' [e:%s]\n",
> +				image, strerror(errno));
> +			ret = -EIO;
> +			goto end;
> +		}
>  		read_size = read(fd, buf, to_transfer);
>  		if (read_size < 0) {
>  			dev_err(smgr, "Failed to read from \'%s\' [e:%s]\n",
> --

Acked-by: Tianfei zhang <Tianfei.zhang@intel.com>
  
Xu, Rosen April 1, 2021, 8:47 a.m. UTC | #2
Hi,

-----Original Message-----
From: Huang, Wei <wei.huang@intel.com> 
Sent: Wednesday, March 17, 2021 4:22 PM
To: dev@dpdk.org; Xu, Rosen <rosen.xu@intel.com>; Zhang, Qi Z <qi.z.zhang@intel.com>
Cc: stable@dpdk.org; Zhang, Tianfei <tianfei.zhang@intel.com>; Huang, Wei <wei.huang@intel.com>
Subject: [PATCH v1 2/4] raw/ifpga/base: check return value of lseek

In write_flash_image(), calling function "lseek" without checking return value has risk. Negative return value should be handled as an error condition.

Coverity issue: 367478
Fixes: 7a4f3993f269 ("raw/ifpga: add FPGA RSU APIs")

Signed-off-by: Wei Huang <wei.huang@intel.com>
---
 drivers/raw/ifpga/base/ifpga_fme_rsu.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/raw/ifpga/base/ifpga_fme_rsu.c b/drivers/raw/ifpga/base/ifpga_fme_rsu.c
index d32f1eccb1..a4cb2f54ba 100644
--- a/drivers/raw/ifpga/base/ifpga_fme_rsu.c
+++ b/drivers/raw/ifpga/base/ifpga_fme_rsu.c
@@ -130,7 +130,12 @@ static int write_flash_image(struct ifpga_sec_mgr *smgr, const char *image,
 	do {
 		to_transfer = (length > IFPGA_RSU_DATA_BLK_SIZE) ?
 			IFPGA_RSU_DATA_BLK_SIZE : length;
-		lseek(fd, offset, SEEK_SET);
+		if (lseek(fd, offset, SEEK_SET) < 0) {
+			dev_err(smgr, "Failed to seek in \'%s\' [e:%s]\n",
+				image, strerror(errno));
+			ret = -EIO;
+			goto end;
+		}
 		read_size = read(fd, buf, to_transfer);
 		if (read_size < 0) {
 			dev_err(smgr, "Failed to read from \'%s\' [e:%s]\n",
--
2.29.2

Acked-by: Rosen Xu <rosen.xu@intel.com>
  

Patch

diff --git a/drivers/raw/ifpga/base/ifpga_fme_rsu.c b/drivers/raw/ifpga/base/ifpga_fme_rsu.c
index d32f1eccb1..a4cb2f54ba 100644
--- a/drivers/raw/ifpga/base/ifpga_fme_rsu.c
+++ b/drivers/raw/ifpga/base/ifpga_fme_rsu.c
@@ -130,7 +130,12 @@  static int write_flash_image(struct ifpga_sec_mgr *smgr, const char *image,
 	do {
 		to_transfer = (length > IFPGA_RSU_DATA_BLK_SIZE) ?
 			IFPGA_RSU_DATA_BLK_SIZE : length;
-		lseek(fd, offset, SEEK_SET);
+		if (lseek(fd, offset, SEEK_SET) < 0) {
+			dev_err(smgr, "Failed to seek in \'%s\' [e:%s]\n",
+				image, strerror(errno));
+			ret = -EIO;
+			goto end;
+		}
 		read_size = read(fd, buf, to_transfer);
 		if (read_size < 0) {
 			dev_err(smgr, "Failed to read from \'%s\' [e:%s]\n",