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

Reply via email to