Message ID | 20241104140601.12239-3-anuj20.g@samsung.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [v7,01/10] block: define set of integrity flags to be inherited by cloned bip | expand |
On Mon, Nov 04, 2024 at 07:35:53PM +0530, Anuj Gupta wrote: > From: Christoph Hellwig <hch@lst.de> > > Copy back the bounce buffer to user-space in entirety when the parent > bio completes. The existing code uses bip_iter.bi_size for sizing the > copy, which can be modified. So move away from that and fetch it from > the vector passed to the block layer. While at it, switch to using > better variable names. > > Fixes: 492c5d455969f ("block: bio-integrity: directly map user buffers") > Signed-off-by: Anuj Gupta <anuj20.g@samsung.com> > [hch: better names for variables] > Signed-off-by: Christoph Hellwig <hch@lst.de> This shouldn't really have a from for me as it wasn't my patch originally. But if you insist to re-attribute it, my signoff should be the first as signoffs are supposed to be a chain starting from the original author to the submitter.
> This shouldn't really have a from for me as it wasn't my patch > originally. But if you insist to re-attribute it, my signoff should > be the first as signoffs are supposed to be a chain starting from > the original author to the submitter. > Will change the sign-off order if I have to iterate.
diff --git a/block/bio-integrity.c b/block/bio-integrity.c index a448a25d13de..4341b0d4efa1 100644 --- a/block/bio-integrity.c +++ b/block/bio-integrity.c @@ -118,17 +118,18 @@ static void bio_integrity_unpin_bvec(struct bio_vec *bv, int nr_vecs, static void bio_integrity_uncopy_user(struct bio_integrity_payload *bip) { - unsigned short nr_vecs = bip->bip_max_vcnt - 1; - struct bio_vec *copy = &bip->bip_vec[1]; - size_t bytes = bip->bip_iter.bi_size; - struct iov_iter iter; + unsigned short orig_nr_vecs = bip->bip_max_vcnt - 1; + struct bio_vec *orig_bvecs = &bip->bip_vec[1]; + struct bio_vec *bounce_bvec = &bip->bip_vec[0]; + size_t bytes = bounce_bvec->bv_len; + struct iov_iter orig_iter; int ret; - iov_iter_bvec(&iter, ITER_DEST, copy, nr_vecs, bytes); - ret = copy_to_iter(bvec_virt(bip->bip_vec), bytes, &iter); + iov_iter_bvec(&orig_iter, ITER_DEST, orig_bvecs, orig_nr_vecs, bytes); + ret = copy_to_iter(bvec_virt(bounce_bvec), bytes, &orig_iter); WARN_ON_ONCE(ret != bytes); - bio_integrity_unpin_bvec(copy, nr_vecs, true); + bio_integrity_unpin_bvec(orig_bvecs, orig_nr_vecs, true); } /**