Messages in this thread | | | Subject | Re: bio_integrity_verify() bug causing READ verify to be silently skipped | From | "Martin K. Petersen" <> | Date | Fri, 03 Jan 2014 15:09:40 -0500 |
| |
>>>>> "nab" == Nicholas A Bellinger <nab@linux-iscsi.org> writes:
nab> Given that bio_integrity_verify() is using bio_for_each_segment(), nab> the loop starts from the updated bio->bi_idx, and not a zero value, nab> which ends up skipping individual bio segment calls to nab> bi->verify_fn().
That's botched. Verify is meant to be called with the completed bytes before the index is tampered with.
nab> The following patch changes bio_integrity_verify() to use nab> bio_for_each_segment_all() instead of bio_for_each_segment() to nab> ensure that the segment walk always starts from zero, regardless of nab> the current bio->bi_idx value after bio_advance().
That breaks partial completion, though. I'll take a look at Kent's changes...
-- Martin K. Petersen Oracle Linux Engineering
| |