Commit fbadca73 authored by Igor Konopko's avatar Igor Konopko Committed by Jens Axboe
Browse files

lightnvm: fix partial read error path



When error occurs during bio_add_page on partial read path, pblk
tries to free pages twice.

Signed-off-by: default avatarIgor Konopko <igor.j.konopko@intel.com>
Signed-off-by: default avatarMarcin Dziegielewski <marcin.dziegielewski@intel.com>
Signed-off-by: default avatarMatias Bjørling <mb@lightnvm.io>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent f142ac0b
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -256,7 +256,7 @@ static int pblk_partial_read_bio(struct pblk *pblk, struct nvm_rq *rqd,
	new_bio = bio_alloc(GFP_KERNEL, nr_holes);

	if (pblk_bio_add_pages(pblk, new_bio, GFP_KERNEL, nr_holes))
		goto err;
		goto err_add_pages;

	if (nr_holes != new_bio->bi_vcnt) {
		pr_err("pblk: malformed bio\n");
@@ -347,10 +347,10 @@ static int pblk_partial_read_bio(struct pblk *pblk, struct nvm_rq *rqd,
	return NVM_IO_OK;

err:
	pr_err("pblk: failed to perform partial read\n");

	/* Free allocated pages in new bio */
	pblk_bio_free_pages(pblk, bio, 0, new_bio->bi_vcnt);
	pblk_bio_free_pages(pblk, new_bio, 0, new_bio->bi_vcnt);
err_add_pages:
	pr_err("pblk: failed to perform partial read\n");
	__pblk_end_io_read(pblk, rqd, false);
	return NVM_IO_ERR;
}