diff options
-rw-r--r-- | xen/drivers/char/serial.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/xen/drivers/char/serial.c b/xen/drivers/char/serial.c index bec789e084..ad5ad5cde0 100644 --- a/xen/drivers/char/serial.c +++ b/xen/drivers/char/serial.c @@ -176,11 +176,15 @@ char serial_getc(int handle) if ( port->rxbufp != port->rxbufc ) { c = port->rxbuf[MASK_SERIAL_RXBUF_IDX(port->rxbufc++)]; + spin_unlock_irqrestore(&port->lock, flags); break; } if ( port->driver->getc(port, &c) ) + { + spin_unlock_irqrestore(&port->lock, flags); break; + } spin_unlock_irqrestore(&port->lock, flags); |