Commit cc664ae0 authored by Jarod Wilson's avatar Jarod Wilson Committed by Mauro Carvalho Chehab

[media] lirc_zilog: error out if buffer read bytes != chunk size

Give it a few tries, then exit. Prevents a possible endless loop
situation.
Signed-off-by: default avatarJarod Wilson <jarod@redhat.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 55734785
...@@ -897,7 +897,7 @@ static ssize_t read(struct file *filep, char *outbuf, size_t n, loff_t *ppos) ...@@ -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 *ir = filep->private_data;
struct IR_rx *rx; struct IR_rx *rx;
struct lirc_buffer *rbuf = ir->l.rbuf; struct lirc_buffer *rbuf = ir->l.rbuf;
int ret = 0, written = 0; int ret = 0, written = 0, retries = 0;
unsigned int m; unsigned int m;
DECLARE_WAITQUEUE(wait, current); DECLARE_WAITQUEUE(wait, current);
...@@ -950,6 +950,12 @@ static ssize_t read(struct file *filep, char *outbuf, size_t n, loff_t *ppos) ...@@ -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, ret = copy_to_user((void *)outbuf+written, buf,
rbuf->chunk_size); rbuf->chunk_size);
written += rbuf->chunk_size; written += rbuf->chunk_size;
} else {
retries++;
}
if (retries >= 5) {
zilog_error("Buffer read failed!\n");
ret = -EIO;
} }
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment