From fcb139dfb2fd6c3bc555da9053352b4c7328e21e Mon Sep 17 00:00:00 2001 From: Chia-Wei Wang Date: Tue, 31 May 2022 14:00:50 +0800 Subject: [PATCH] soc/aspeed: espi: Fix RX packet length handling For those eSPI commands without data, the length field of RX packets should not be further handled as 1-based counting. Signed-off-by: Chia-Wei Wang Change-Id: Iad2d05a074b724dbaed1c4104edd5efbbad002f3 --- drivers/soc/aspeed/aspeed-espi-flash.c | 8 +++++--- drivers/soc/aspeed/aspeed-espi-perif.c | 4 ++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/drivers/soc/aspeed/aspeed-espi-flash.c b/drivers/soc/aspeed/aspeed-espi-flash.c index 42093e72e90c..d6990259a9dd 100644 --- a/drivers/soc/aspeed/aspeed-espi-flash.c +++ b/drivers/soc/aspeed/aspeed-espi-flash.c @@ -64,12 +64,14 @@ static long aspeed_espi_flash_get_rx(struct file *fp, * user space. */ switch (cyc) { - case ESPI_FLASH_READ: case ESPI_FLASH_WRITE: - case ESPI_FLASH_ERASE: pkt_len = ((len) ? len : ESPI_PLD_LEN_MAX) + sizeof(struct espi_flash_rwe); break; + case ESPI_FLASH_READ: + case ESPI_FLASH_ERASE: + pkt_len = sizeof(struct espi_flash_rwe); + break; case ESPI_FLASH_SUC_CMPLT_D_MIDDLE: case ESPI_FLASH_SUC_CMPLT_D_FIRST: case ESPI_FLASH_SUC_CMPLT_D_LAST: @@ -79,7 +81,7 @@ static long aspeed_espi_flash_get_rx(struct file *fp, break; case ESPI_FLASH_SUC_CMPLT: case ESPI_FLASH_UNSUC_CMPLT: - pkt_len = len + sizeof(struct espi_flash_cmplt); + pkt_len = sizeof(struct espi_flash_cmplt); break; default: rc = -EFAULT; diff --git a/drivers/soc/aspeed/aspeed-espi-perif.c b/drivers/soc/aspeed/aspeed-espi-perif.c index 4a14ea450922..0f9d6df83199 100644 --- a/drivers/soc/aspeed/aspeed-espi-perif.c +++ b/drivers/soc/aspeed/aspeed-espi-perif.c @@ -67,7 +67,7 @@ static long aspeed_espi_perif_pc_get_rx(struct file *fp, */ switch (cyc) { case ESPI_PERIF_MSG: - pkt_len = len + sizeof(struct espi_perif_msg); + pkt_len = sizeof(struct espi_perif_msg); break; case ESPI_PERIF_MSG_D: pkt_len = ((len) ? len : ESPI_PLD_LEN_MAX) + @@ -82,7 +82,7 @@ static long aspeed_espi_perif_pc_get_rx(struct file *fp, break; case ESPI_PERIF_SUC_CMPLT: case ESPI_PERIF_UNSUC_CMPLT: - pkt_len = len + sizeof(struct espi_perif_cmplt); + pkt_len = sizeof(struct espi_perif_cmplt); break; default: rc = -EFAULT;