[PATCH linux dev-4.10 v3 14/31] drivers: fsi: SBEFIFO: check for xfr complete in read wait_event
Eddie James
eajames at linux.vnet.ibm.com
Fri Oct 6 06:24:07 AEDT 2017
From: "Edward A. James" <eajames at us.ibm.com>
We should check to see if the XFR is complete, not just for a failure
or for available data. If we hit EOT without getting more data, we may
wait forever.
Signed-off-by: Edward A. James <eajames at us.ibm.com>
---
drivers/fsi/fsi-sbefifo.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/fsi/fsi-sbefifo.c b/drivers/fsi/fsi-sbefifo.c
index 9b560ec..5d73437 100644
--- a/drivers/fsi/fsi-sbefifo.c
+++ b/drivers/fsi/fsi-sbefifo.c
@@ -541,10 +541,15 @@ static bool sbefifo_read_ready(struct sbefifo *sbefifo,
struct sbefifo_client *client, size_t *n,
size_t *ret)
{
+ struct sbefifo_xfr *xfr = list_first_entry_or_null(&client->xfrs,
+ struct sbefifo_xfr,
+ client);
+
*n = sbefifo_buf_nbreadable(&client->rbuf);
*ret = READ_ONCE(sbefifo->rc);
- return *ret || *n;
+ return *ret || *n ||
+ (xfr && test_bit(SBEFIFO_XFR_COMPLETE, &xfr->flags));
}
static ssize_t sbefifo_read_common(struct sbefifo_client *client,
--
1.8.3.1
More information about the openbmc
mailing list