| Index: ui/events/ozone/evdev/key_event_converter.cc | 
| diff --git a/ui/events/ozone/evdev/key_event_converter.cc b/ui/events/ozone/evdev/key_event_converter.cc | 
| index 3c07898e3ee748e6188bfe9e1a0eb9d070548aa1..f4f66428df6235159a2f28fbae8e997741bc4445 100644 | 
| --- a/ui/events/ozone/evdev/key_event_converter.cc | 
| +++ b/ui/events/ozone/evdev/key_event_converter.cc | 
| @@ -4,6 +4,7 @@ | 
|  | 
| #include "ui/events/ozone/evdev/key_event_converter.h" | 
|  | 
| +#include <errno.h> | 
| #include <linux/input.h> | 
|  | 
| #include "base/message_loop/message_pump_ozone.h" | 
| @@ -210,8 +211,13 @@ void KeyEventConverterEvdev::Stop() { | 
| void KeyEventConverterEvdev::OnFileCanReadWithoutBlocking(int fd) { | 
| input_event inputs[4]; | 
| ssize_t read_size = read(fd, inputs, sizeof(inputs)); | 
| -  if (read_size <= 0) | 
| +  if (read_size < 0) { | 
| +    if (errno == EINTR || errno == EAGAIN) | 
| +      return; | 
| +    PLOG(ERROR) << "error reading device " << path_.value(); | 
| +    Stop(); | 
| return; | 
| +  } | 
|  | 
| CHECK_EQ(read_size % sizeof(*inputs), 0u); | 
| ProcessEvents(inputs, read_size / sizeof(*inputs)); | 
|  |