History

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

Give it a few tries, then exit. Prevents a possible endless loop situation.

Jarod Wilson committed 15 years ago

Commit cc664ae1 parent 55734781 file · +7 −1Browse files

Showing the changes to drivers/staging/lirc/lirc_zilog.c (1 of 1 file). Show all

Unified · Split

drivers/staging/lirc/lirc_zilog.c+7−1
@@ -897,7 +897,7 @@ static ssize_t read(struct file *filep, char *outbuf, size_t n, loff_t *ppos) · 896 unmodified lines
897897 struct IR *ir = filep->private_data;
898898 struct IR_rx *rx;
899899 struct lirc_buffer *rbuf = ir->l.rbuf;
900− int ret = 0, written = 0;
900+ int ret = 0, written = 0, retries = 0;
901901 unsigned int m;
902902 DECLARE_WAITQUEUE(wait, current);
903903
@@ -950,6 +950,12 @@ static ssize_t read(struct file *filep, char *outbuf, size_t n, loff_t *ppos) · 46 unmodified lines
950950 ret = copy_to_user((void *)outbuf+written, buf,
951951 rbuf->chunk_size);
952952 written += rbuf->chunk_size;
953+ } else {
954+ retries++;
955+ }
956+ if (retries >= 5) {
957+ zilog_error("Buffer read failed!\n");
958+ ret = -EIO;
953959 }
954960 }
955961 }

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t