2.4.36-stable kernel tree
リビジョン | 8f9ef6ad57f199f566bec80cb93bde0153604471 (tree) |
---|---|
日時 | 2006-11-26 07:14:14 |
作者 | Willy Tarreau <w@1wt....> |
コミッター | Willy Tarreau |
[PATCH] ps2esdi: typo may cause premature timeout
The stop condition in the following statement causes an immediate
break out of the loop because ESDI_TIMEOUT=0xf000 and the result
of the !(inb()) expression can only be either 0 or 1, which means
that i never gets counted down.
The obvious cause is the use of "i & !" instead of "i && !". This
was already fixed in 2.6.
Signed-off-by: Willy Tarreau <w@1wt.eu>
@@ -741,7 +741,7 @@ static void ps2esdi_geometry_int_handler(u_int int_ret_code) | ||
741 | 741 | drive_num = int_ret_code >> 5; |
742 | 742 | switch (int_ret_code & 0xf) { |
743 | 743 | case INT_CMD_COMPLETE: |
744 | - for (i = ESDI_TIMEOUT; i & !(inb(ESDI_STATUS) & STATUS_STAT_AVAIL); i--); | |
744 | + for (i = ESDI_TIMEOUT; i && !(inb(ESDI_STATUS) & STATUS_STAT_AVAIL); i--); | |
745 | 745 | if (!(inb(ESDI_STATUS) & STATUS_STAT_AVAIL)) { |
746 | 746 | printk("%s: timeout reading status word\n", DEVICE_NAME); |
747 | 747 | outb((int_ret_code & 0xe0) | ATT_EOI, ESDI_ATTN); |
@@ -876,7 +876,7 @@ static void ps2esdi_normal_interrupt_handler(u_int int_ret_code) | ||
876 | 876 | break; |
877 | 877 | |
878 | 878 | case INT_CMD_COMPLETE: |
879 | - for (i = ESDI_TIMEOUT; i & !(inb(ESDI_STATUS) & STATUS_STAT_AVAIL); i--); | |
879 | + for (i = ESDI_TIMEOUT; i && !(inb(ESDI_STATUS) & STATUS_STAT_AVAIL); i--); | |
880 | 880 | if (!(inb(ESDI_STATUS) & STATUS_STAT_AVAIL)) { |
881 | 881 | printk("%s: timeout reading status word\n", DEVICE_NAME); |
882 | 882 | outb((int_ret_code & 0xe0) | ATT_EOI, ESDI_ATTN); |