diff options
author | kaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk> | 2005-06-16 01:47:29 +0000 |
---|---|---|
committer | kaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk> | 2005-06-16 01:47:29 +0000 |
commit | 7752c1a0368f1331775ff7ea5d1d6733da795ff0 (patch) | |
tree | ceb037e62aa85d073a38a43e6acd8803f4d3ff1b | |
parent | c39f4a5931522c6fdea218d607d7f3953e1f934b (diff) | |
download | xen-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.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); |