diff options
| author | Jinyoung Choi <j-young.choi@samsung.com> | 2023-08-03 11:50:58 +0900 | 
|---|---|---|
| committer | Jens Axboe <axboe@kernel.dk> | 2023-08-09 16:05:35 -0600 | 
| commit | d1f04c2e23c99258049c6081c3147bae69e5bcb8 (patch) | |
| tree | e1c7cb00a9dcfab06a1cc1d04ee62d27ca153ca9 | |
| parent | 80814b8e359f7207595f52702aea432a7bd61200 (diff) | |
bio-integrity: cleanup adding integrity pages to bip's bvec.
bio_integrity_add_page() returns the add length if successful, else 0,
just as bio_add_page.  Simply check return value checking in
bio_integrity_prep to not deal with a > 0 but < len case that can't
happen.
Cc: Christoph Hellwig <hch@lst.de>
Cc: Martin K. Petersen <martin.petersen@oracle.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jinyoung Choi <j-young.choi@samsung.com>
Tested-by: "Martin K. Petersen" <martin.petersen@oracle.com>
Reviewed-by: "Martin K. Petersen" <martin.petersen@oracle.com>
Link: https://lore.kernel.org/r/20230803025058epcms2p5a4d0db5da2ad967668932d463661c633@epcms2p5
Signed-off-by: Jens Axboe <axboe@kernel.dk>
| -rw-r--r-- | block/bio-integrity.c | 16 | 
1 files changed, 3 insertions, 13 deletions
| diff --git a/block/bio-integrity.c b/block/bio-integrity.c index 6220a99977a4..c6b3bc86e1f9 100644 --- a/block/bio-integrity.c +++ b/block/bio-integrity.c @@ -252,27 +252,18 @@ bool bio_integrity_prep(struct bio *bio)  	/* Map it */  	offset = offset_in_page(buf); -	for (i = 0 ; i < nr_pages ; i++) { -		int ret; +	for (i = 0; i < nr_pages && len > 0; i++) {  		bytes = PAGE_SIZE - offset; -		if (len <= 0) -			break; -  		if (bytes > len)  			bytes = len; -		ret = bio_integrity_add_page(bio, virt_to_page(buf), -					     bytes, offset); - -		if (ret == 0) { +		if (bio_integrity_add_page(bio, virt_to_page(buf), +					   bytes, offset) < bytes) {  			printk(KERN_ERR "could not attach integrity payload\n");  			goto err_end_io;  		} -		if (ret < bytes) -			break; -  		buf += bytes;  		len -= bytes;  		offset = 0; @@ -291,7 +282,6 @@ err_end_io:  	bio->bi_status = BLK_STS_RESOURCE;  	bio_endio(bio);  	return false; -  }  EXPORT_SYMBOL(bio_integrity_prep); | 
