From c0dbf1782b654c07d3ef8f5d86c7c520d34ded9f Mon Sep 17 00:00:00 2001 From: Jarod Wilson Date: Fri, 4 Mar 2011 19:53:05 -0300 Subject: [PATCH] --- yaml --- r: 242183 b: refs/heads/master c: cc664ae026f1b0f3254564a7d45cc29e735c7fed h: refs/heads/master i: 242181: 1014e014ee8b13c36d015b6fb2107a0582935ddc 242179: 4f95775c194512755091206e956edbeb232d7149 242175: 039da57f2758b33536036a367841d25b55df1bdc v: v3 --- [refs] | 2 +- trunk/drivers/staging/lirc/lirc_zilog.c | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 2f26c59d1fc8..75ba47966920 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 55734785cdaff596be9a5238af54fc0f4ace2e63 +refs/heads/master: cc664ae026f1b0f3254564a7d45cc29e735c7fed diff --git a/trunk/drivers/staging/lirc/lirc_zilog.c b/trunk/drivers/staging/lirc/lirc_zilog.c index 407d4b409a8b..dd6a57c3c3a3 100644 --- a/trunk/drivers/staging/lirc/lirc_zilog.c +++ b/trunk/drivers/staging/lirc/lirc_zilog.c @@ -897,7 +897,7 @@ static ssize_t read(struct file *filep, char *outbuf, size_t n, loff_t *ppos) struct IR *ir = filep->private_data; struct IR_rx *rx; struct lirc_buffer *rbuf = ir->l.rbuf; - int ret = 0, written = 0; + int ret = 0, written = 0, retries = 0; unsigned int m; DECLARE_WAITQUEUE(wait, current); @@ -950,6 +950,12 @@ static ssize_t read(struct file *filep, char *outbuf, size_t n, loff_t *ppos) ret = copy_to_user((void *)outbuf+written, buf, rbuf->chunk_size); written += rbuf->chunk_size; + } else { + retries++; + } + if (retries >= 5) { + zilog_error("Buffer read failed!\n"); + ret = -EIO; } } }