diff --git a/kernel-src/io/acpi/dev.c b/kernel-src/io/acpi/dev.c index d83edb68..73e604fc 100644 --- a/kernel-src/io/acpi/dev.c +++ b/kernel-src/io/acpi/dev.c @@ -112,5 +112,6 @@ static devops_t acpiops = { void acpi_initdevice(void) { __assert(devfs_register(&acpiops, "acpi", V_TYPE_CHDEV, DEV_MAJOR_ACPI, 0, 0600, NULL) == 0); __assert(ringbuffer_init(&ringbuffer, 64) == 0); + MUTEX_INIT(&mutex); POLL_INITHEADER(&pollheader); } diff --git a/kernel-src/io/tty.c b/kernel-src/io/tty.c index 01825c64..870125c3 100644 --- a/kernel-src/io/tty.c +++ b/kernel-src/io/tty.c @@ -256,14 +256,15 @@ static int read(int minor, iovec_iterator_t *iovec_iterator, size_t size, uintma } error = poll_dowait(&desc, effectivetimeout); + + poll_leave(&desc); + poll_destroydesc(&desc); + if (error == 0 && (desc.event == NULL || (desc.event && desc.event->revents == 0))) { // timed out! break; } - poll_leave(&desc); - poll_destroydesc(&desc); - if (error) goto leave; }