[PATCH] block: Fix BUG_ON when pi errors occur

From: Sagi Grimberg
Date: Wed Aug 13 2014 - 07:49:41 EST


When getting a pi error we get to bio_integrity_end_io with
bi_remaining already decremented to 0 where we will eventually
need to call bio_endio with restored original bio completion handler.
Calling bio_endio invokes a BUG_ON(). We should call bio_endio_nodec
instead, like what is done in bio_integrity_verify_fn.

Signed-off-by: Sagi Grimberg <sagig@xxxxxxxxxxxx>
---
block/bio-integrity.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/block/bio-integrity.c b/block/bio-integrity.c
index 9e24106..90d40f9 100644
--- a/block/bio-integrity.c
+++ b/block/bio-integrity.c
@@ -526,7 +526,7 @@ void bio_integrity_endio(struct bio *bio, int error)
*/
if (error) {
bio->bi_end_io = bip->bip_end_io;
- bio_endio(bio, error);
+ bio_endio_nodec(bio, error);

return;
}
--
1.7.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/