aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>2005-06-16 01:47:29 +0000
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>2005-06-16 01:47:29 +0000
commit7752c1a0368f1331775ff7ea5d1d6733da795ff0 (patch)
treeceb037e62aa85d073a38a43e6acd8803f4d3ff1b
parentc39f4a5931522c6fdea218d607d7f3953e1f934b (diff)
downloadxen-7752c1a0368f1331775ff7ea5d1d6733da795ff0.tar.gz
xen-7752c1a0368f1331775ff7ea5d1d6733da795ff0.tar.bz2
xen-7752c1a0368f1331775ff7ea5d1d6733da795ff0.zip
bitkeeper revision 1.1713.1.12 (42b0da31QIvTtfE2iHo4yER4A1GFIw)
serial.c: Fix serial_getc locking.
-rw-r--r--xen/drivers/char/serial.c4
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);