Possible IDE bug in 2.4 and 2.6

From: Matthew Schulkind
Date: Sun Jan 15 2006 - 03:12:08 EST


Hi,

First off, I'm not on the list, so please CC me on any replies.

I believe I have found a bug in the IDE code of both the 2.4 and 2.6 kernels. Here is a snippet from 2.4.32 starting from line 277 of drivers/ide/ide-io.c:

if (drive->select.b.lba &&
(hwif->INB(IDE_COMMAND_REG) == WIN_SPECIFY))
/* some newer drives don't
* support WIN_SPECIFY
*/
return ide_stopped;


This code is attempting to ignore IDE errors if they were a result of the WIN_SPECIFY command, but the IDE_COMMAND_REG is a write only register, if it is read, IDE_STATUS_REG is read instead. Could someone confirm that this is in fact a bug and not something I'm missing? Almost identical code is also found in 2.6 kernels.

I think the best way to fix this would be to ignore the error in set_geometry_intr() in ide-taskfile.c instead of in ide_error() as seen above.

-Matt Schulkind
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/