diff options
| author | Albert Herranz <albert_herranz@yahoo.es> | 2009-12-17 08:33:41 +0000 | 
|---|---|---|
| committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2009-12-18 15:13:57 +1100 | 
| commit | 698cd335a782561b79504d4e98c7df62b08e7abd (patch) | |
| tree | 44b3056c81ff1032ffd6c6681cf9e08c12746af8 | |
| parent | 38e1313fc753482b93aa6c6f11cfbd43a5bcd963 (diff) | |
powerpc/gamecube/wii: Fix off-by-one error in ugecon/usbgecko_udbg
The retry logic in ug_putc() is broken.
If the TX fifo is not ready and the counter runs out it will have a
value of -1 and no transfer should be attempted. Also, a counter
with a value of 0 means that the TX fifo got ready in the last try
and the transfer should be attempted.
Reported-by: "Juha Leppanen" <juha_motorsportcom@luukku.com>
Signed-off-by: "Juha Leppanen" <juha_motorsportcom@luukku.com>
Signed-off-by: Albert Herranz <albert_herranz@yahoo.es>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
| -rw-r--r-- | arch/powerpc/boot/ugecon.c | 2 | ||||
| -rw-r--r-- | arch/powerpc/platforms/embedded6xx/usbgecko_udbg.c | 2 | 
2 files changed, 2 insertions, 2 deletions
| diff --git a/arch/powerpc/boot/ugecon.c b/arch/powerpc/boot/ugecon.c index 50609ea6ddf8..8f2a6b311534 100644 --- a/arch/powerpc/boot/ugecon.c +++ b/arch/powerpc/boot/ugecon.c @@ -86,7 +86,7 @@ static void ug_putc(char ch)  	while (!ug_is_txfifo_ready() && count--)  		barrier(); -	if (count) +	if (count >= 0)  		ug_raw_putc(ch);  } diff --git a/arch/powerpc/platforms/embedded6xx/usbgecko_udbg.c b/arch/powerpc/platforms/embedded6xx/usbgecko_udbg.c index edc956cc8b13..20a8ed91962e 100644 --- a/arch/powerpc/platforms/embedded6xx/usbgecko_udbg.c +++ b/arch/powerpc/platforms/embedded6xx/usbgecko_udbg.c @@ -120,7 +120,7 @@ static void ug_putc(char ch)  	while (!ug_is_txfifo_ready() && count--)  		barrier(); -	if (count) +	if (count >= 0)  		ug_raw_putc(ch);  } | 
