block: cleanup bio_integrity_prep
authorJinyoung Choi <j-young.choi@samsung.com>
Tue, 25 Jul 2023 05:18:39 +0000 (14:18 +0900)
committerJens Axboe <axboe@kernel.dk>
Wed, 26 Jul 2023 02:30:54 +0000 (20:30 -0600)
If a problem occurs in the process of creating an integrity payload, the
status of bio is always BLK_STS_RESOURCE.

Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jinyoung Choi <j-young.choi@samsung.com>
Reviewed-by: "Martin K. Petersen" <martin.petersen@oracle.com>
Link: https://lore.kernel.org/r/20230725051839epcms2p8e4d20ad6c51326ad032e8406f59d0aaa@epcms2p8
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/bio-integrity.c

index 8f0af7a..045553a 100644 (file)
@@ -199,7 +199,6 @@ bool bio_integrity_prep(struct bio *bio)
        unsigned long start, end;
        unsigned int len, nr_pages;
        unsigned int bytes, offset, i;
-       blk_status_t status;
 
        if (!bi)
                return true;
@@ -227,7 +226,6 @@ bool bio_integrity_prep(struct bio *bio)
        /* Allocate kernel buffer for protection data */
        len = bio_integrity_bytes(bi, bio_sectors(bio));
        buf = kmalloc(len, GFP_NOIO);
-       status = BLK_STS_RESOURCE;
        if (unlikely(buf == NULL)) {
                printk(KERN_ERR "could not allocate integrity buffer\n");
                goto err_end_io;
@@ -242,7 +240,6 @@ bool bio_integrity_prep(struct bio *bio)
        if (IS_ERR(bip)) {
                printk(KERN_ERR "could not allocate data integrity bioset\n");
                kfree(buf);
-               status = BLK_STS_RESOURCE;
                goto err_end_io;
        }
 
@@ -270,7 +267,6 @@ bool bio_integrity_prep(struct bio *bio)
 
                if (ret == 0) {
                        printk(KERN_ERR "could not attach integrity payload\n");
-                       status = BLK_STS_RESOURCE;
                        goto err_end_io;
                }
 
@@ -292,7 +288,7 @@ bool bio_integrity_prep(struct bio *bio)
        return true;
 
 err_end_io:
-       bio->bi_status = status;
+       bio->bi_status = BLK_STS_RESOURCE;
        bio_endio(bio);
        return false;