|
@@ -97,9 +97,7 @@ void bio_integrity_free(struct bio *bio)
|
|
|
struct bio_integrity_payload *bip = bio->bi_integrity;
|
|
|
struct bio_set *bs = bio->bi_pool;
|
|
|
|
|
|
- /* A cloned bio doesn't own the integrity metadata */
|
|
|
- if (!bio_flagged(bio, BIO_CLONED) && !bio_flagged(bio, BIO_FS_INTEGRITY)
|
|
|
- && bip->bip_buf != NULL)
|
|
|
+ if (bip->bip_owns_buf)
|
|
|
kfree(bip->bip_buf);
|
|
|
|
|
|
if (bs) {
|
|
@@ -386,6 +384,7 @@ int bio_integrity_prep(struct bio *bio)
|
|
|
return -EIO;
|
|
|
}
|
|
|
|
|
|
+ bip->bip_owns_buf = 1;
|
|
|
bip->bip_buf = buf;
|
|
|
bip->bip_size = len;
|
|
|
bip->bip_sector = bio->bi_sector;
|