mirror of
https://github.com/torvalds/linux.git
synced 2026-05-25 15:41:52 +02:00
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 <chiawei_wang@aspeedtech.com> Change-Id: Iad2d05a074b724dbaed1c4104edd5efbbad002f3
This commit is contained in:
parent
8d428079d9
commit
fcb139dfb2
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user