diff mbox series

block: bio-integrity: Copy flags when bio_integrity_payload is cloned

Message ID 20230215171801.21062-1-martin.petersen@oracle.com (mailing list archive)
State New, archived
Headers show
Series block: bio-integrity: Copy flags when bio_integrity_payload is cloned | expand

Commit Message

Martin K. Petersen Feb. 15, 2023, 5:18 p.m. UTC
Make sure to copy the flags when a bio_integrity_payload is cloned.
Otherwise per-I/O properties such as IP checksum flag will not be
passed down to the HBA driver. Since the integrity buffer is owned by
the original bio, the BIP_BLOCK_INTEGRITY flag needs to be masked off
to avoid a double free in the completion path.

Fixes: aae7df50190a ("block: Integrity checksum flag")
Fixes: b1f01388574c ("block: Relocate bio integrity flags")
Reported-by: Saurav Kashyap <skashyap@marvell.com>
Tested-by: Saurav Kashyap <skashyap@marvell.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
---
 block/bio-integrity.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Chaitanya Kulkarni Feb. 15, 2023, 9:20 p.m. UTC | #1
On 2/15/23 09:18, Martin K. Petersen wrote:
> Make sure to copy the flags when a bio_integrity_payload is cloned.
> Otherwise per-I/O properties such as IP checksum flag will not be
> passed down to the HBA driver. Since the integrity buffer is owned by
> the original bio, the BIP_BLOCK_INTEGRITY flag needs to be masked off
> to avoid a double free in the completion path.
> 
> Fixes: aae7df50190a ("block: Integrity checksum flag")
> Fixes: b1f01388574c ("block: Relocate bio integrity flags")
> Reported-by: Saurav Kashyap <skashyap@marvell.com>
> Tested-by: Saurav Kashyap <skashyap@marvell.com>
> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
> ---

Looks good.

Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>

-ck
Christoph Hellwig Feb. 16, 2023, 6:05 a.m. UTC | #2
On Wed, Feb 15, 2023 at 12:18:01PM -0500, Martin K. Petersen wrote:
> Make sure to copy the flags when a bio_integrity_payload is cloned.
> Otherwise per-I/O properties such as IP checksum flag will not be
> passed down to the HBA driver. Since the integrity buffer is owned by
> the original bio, the BIP_BLOCK_INTEGRITY flag needs to be masked off
> to avoid a double free in the completion path.

Looks good:

Reviewed-by: Christoph Hellwig <hch@lst.de>
Jens Axboe Feb. 16, 2023, 6:05 p.m. UTC | #3
On Wed, 15 Feb 2023 12:18:01 -0500, Martin K. Petersen wrote:
> Make sure to copy the flags when a bio_integrity_payload is cloned.
> Otherwise per-I/O properties such as IP checksum flag will not be
> passed down to the HBA driver. Since the integrity buffer is owned by
> the original bio, the BIP_BLOCK_INTEGRITY flag needs to be masked off
> to avoid a double free in the completion path.
> 
> 
> [...]

Applied, thanks!

[1/1] block: bio-integrity: Copy flags when bio_integrity_payload is cloned
      commit: b6a4bdcda430e3ca43bbb9cb1d4d4d34ebe15c40

Best regards,
diff mbox series

Patch

diff --git a/block/bio-integrity.c b/block/bio-integrity.c
index 3f5685c00e36..91ffee6fc8cb 100644
--- a/block/bio-integrity.c
+++ b/block/bio-integrity.c
@@ -418,6 +418,7 @@  int bio_integrity_clone(struct bio *bio, struct bio *bio_src,
 
 	bip->bip_vcnt = bip_src->bip_vcnt;
 	bip->bip_iter = bip_src->bip_iter;
+	bip->bip_flags = bip_src->bip_flags & ~BIP_BLOCK_INTEGRITY;
 
 	return 0;
 }