aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/serial/sunhv.c
diff options
context:
space:
mode:
authorRoel Kluin <roel.kluin@gmail.com>2009-06-22 13:41:56 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2009-06-22 14:32:23 -0400
commit52e3632ea603ef92757d5d0dedcd9fc8643445e3 (patch)
tree8ab96a99d898ada201b55ccb30fe7c0e6a10170f /drivers/serial/sunhv.c
parent607c268ef9a4675287e77f732071e426e62c2d86 (diff)
serial: fix off by one errors
In zs_console_putchar() occurs: if (zs_transmit_drain(zport, irq)) write_zsdata(zport, ch); However if in zs_transmit_drain() no empty Tx Buffer occurs, limit reaches -1 => true, and the write still occurs. This patch changes postfix to prefix decrements in this and similar functions to prevent similar mistakes in the future. This decreases the iterations with one but the chosen loop count was arbitrary anyway. In sunhv limit reaches -1, not 0, so the test is off by one. Signed-off-by: Roel Kluin <roel.kluin@gmail.com> Acked-by: David S. Miller <davem@davemloft.net> Acked-by: Maciej W. Rozycki <macro@linux-mips.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Alan Cox <alan@linux.intel.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/serial/sunhv.c')
-rw-r--r--drivers/serial/sunhv.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/serial/sunhv.c b/drivers/serial/sunhv.c
index a94a2ab4b571..1df5325faab2 100644
--- a/drivers/serial/sunhv.c
+++ b/drivers/serial/sunhv.c
@@ -461,7 +461,7 @@ static void sunhv_console_write_paged(struct console *con, const char *s, unsign
461 break; 461 break;
462 udelay(1); 462 udelay(1);
463 } 463 }
464 if (limit <= 0) 464 if (limit < 0)
465 break; 465 break;
466 page_bytes -= written; 466 page_bytes -= written;
467 ra += written; 467 ra += written;