Re: [PATCH][2/2] dm-crypt end_io bv_offset fix

From: Christophe Saout
Date: Thu Feb 26 2004 - 11:43:17 EST


We should copy the bvec array for read requests so that we still
have the unmodified bvec array to decrypt the data afterwards.

(as discussed earlier this day for highmem bounces)

--- linux.orig/drivers/md/dm-crypt.c 2004-02-26 16:54:08.068578768 +0100
+++ linux/drivers/md/dm-crypt.c 2004-02-26 16:59:35.780758944 +0100
@@ -593,8 +593,21 @@
return NULL;
}
}
- } else
- clone = bio_clone(bio, GFP_NOIO);
+ } else {
+ /*
+ * The block layer might modify the bvec array, so always
+ * copy the required bvecs because we need the original
+ * one in order to decrypt the whole bio data *afterwards*.
+ */
+ clone = bio_alloc(GFP_NOIO, bio_segments(bio));
+ if (clone) {
+ clone->bi_idx = 0;
+ clone->bi_vcnt = bio_segments(bio);
+ clone->bi_size = bio->bi_size;
+ memcpy(clone->bi_io_vec, bio_iovec(bio),
+ sizeof(struct bio_vec) * clone->bi_vcnt);
+ }
+ }

if (!clone)
return NULL;
-
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/