On Tue, 4 Dec 2007, Boaz Harrosh wrote:
> perhaps below hunk should be added to your patch.
It looks like a good idea.
> Was it decided when this data corruption bugfix is
> merged.
I don't know -- I haven't heard anything back from James.
> Also in sr.c. It does the range check but it might
> enjoy the resid handling as well.
I think the range checking in sr.c is completely wrong. The code
doesn't check carefully to see that the error sector lies within the
range of sectors being accessed; there's a possibility of overflow if
the capacity is larger than 2**31 bytes. Also this line in particular
makes no sense:
error_sector &= ~(block_sectors - 1);
Like you said, using the residue value too wouldn't hurt.
Furthermore the check for the Valid bit is done wrongly:
if (!(SCpnt->sense_buffer[0] & 0x90))
This will never be true because of the earlier test:
if (driver_byte(result) != 0 && /* An error occurred */
(SCpnt->sense_buffer[0] & 0x7f) == 0x70) { /* Sense current */
It probably should test against 0x80 instead of 0x90.
Alan Stern
-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html