From: Alan Cox Date: Fri, 29 Sep 2006 17:26:47 +0000 (+0100) Subject: [PATCH] libata: Don't believe bogus claims in the older PIO mode register X-Git-Tag: v2.6.19-rc2~22^2~5 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=46767aeba58ca9357a2309765201bad38d8f5e9b;p=profile%2Fivi%2Fkernel-x86-ivi.git [PATCH] libata: Don't believe bogus claims in the older PIO mode register Signed-off-by: Alan Cox Signed-off-by: Jeff Garzik --- diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index dce6565..ad8e2c6 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c @@ -870,7 +870,11 @@ static unsigned int ata_id_xfermask(const u16 *id) * the PIO timing number for the maximum. Turn it into * a mask. */ - pio_mask = (2 << (id[ATA_ID_OLD_PIO_MODES] & 0xFF)) - 1 ; + u8 mode = id[ATA_ID_OLD_PIO_MODES] & 0xFF; + if (mode < 5) /* Valid PIO range */ + pio_mask = (2 << mode) - 1; + else + pio_mask = 1; /* But wait.. there's more. Design your standards by * committee and you too can get a free iordy field to