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 majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html