It is more lucky that kernel crash does not happen, since we test the bi_pool in function __bio_clone_fast. The idx will be still equal to BIO_POOL_NONE, if there is no bvec to be allocated. Fix the bug_on condition to make the test correct. Signed-off-by: Minfei Huang <mnfhuang@xxxxxxxxx> --- block/bio.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/block/bio.c b/block/bio.c index 4f184d9..041ece0 100644 --- a/block/bio.c +++ b/block/bio.c @@ -573,8 +573,7 @@ EXPORT_SYMBOL(bio_phys_segments); */ void __bio_clone_fast(struct bio *bio, struct bio *bio_src) { - BUG_ON(bio->bi_pool && BIO_POOL_IDX(bio) != BIO_POOL_NONE); - + BUG_ON(BIO_POOL_IDX(bio) != BIO_POOL_NONE); /* * most users will be overriding ->bi_bdev with a new target, * so we don't set nor calculate new physical/hw segment counts here -- 2.6.3 -- To unsubscribe from this list: send the line "unsubscribe linux-block" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html