Release bip using kfree() in error path when that was allocated by kmalloc(). Signed-off-by: Chengguang Xu <cgxu519@xxxxxxxxxxxx> --- block/bio-integrity.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/block/bio-integrity.c b/block/bio-integrity.c index 23632a33ed39..538c8dc8840a 100644 --- a/block/bio-integrity.c +++ b/block/bio-integrity.c @@ -78,7 +78,11 @@ struct bio_integrity_payload *bio_integrity_alloc(struct bio *bio, return bip; err: - mempool_free(bip, &bs->bio_integrity_pool); + if (bs && mempool_initialized(&bs->bio_integrity_pool)) + mempool_free(bip, &bs->bio_integrity_pool); + else + kfree(bip); + return ERR_PTR(-ENOMEM); } EXPORT_SYMBOL(bio_integrity_alloc); -- 2.17.2