summaryrefslogtreecommitdiffstats
path: root/block/bio-integrity.c
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2017-08-09 17:47:27 +0200
committerJens Axboe <axboe@kernel.dk>2017-08-10 04:24:36 +0200
commitf86e28c4dc8d475cb82ca8d018daaa1564534aad (patch)
tree1e967aba87ed8f786ddd7f8e65b2a4173bf702e7 /block/bio-integrity.c
parentbio-integrity: Fix regression if profile verify_fn is NULL (diff)
downloadlinux-f86e28c4dc8d475cb82ca8d018daaa1564534aad.tar.xz
linux-f86e28c4dc8d475cb82ca8d018daaa1564534aad.zip
bio-integrity: only verify integrity on the lowest stacked driver
This gets us back to the behavior in 4.12 and earlier. Signed-off-by: Christoph Hellwig <hch@lst.de> Fixes: 7c20f116 ("bio-integrity: stop abusing bi_end_io") Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'block/bio-integrity.c')
-rw-r--r--block/bio-integrity.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/block/bio-integrity.c b/block/bio-integrity.c
index 0fd9604974da..9b1ea478577b 100644
--- a/block/bio-integrity.c
+++ b/block/bio-integrity.c
@@ -388,11 +388,10 @@ static void bio_integrity_verify_fn(struct work_struct *work)
bool __bio_integrity_endio(struct bio *bio)
{
struct blk_integrity *bi = bdev_get_integrity(bio->bi_bdev);
+ struct bio_integrity_payload *bip = bio_integrity(bio);
if (bio_op(bio) == REQ_OP_READ && !bio->bi_status &&
- bi->profile->verify_fn) {
- struct bio_integrity_payload *bip = bio_integrity(bio);
-
+ (bip->bip_flags & BIP_BLOCK_INTEGRITY) && bi->profile->verify_fn) {
INIT_WORK(&bip->bip_work, bio_integrity_verify_fn);
queue_work(kintegrityd_wq, &bip->bip_work);
return false;