From: Igor Konopko <[email protected]>

Currently in case of error caused by bio_pc_add_page in
pblk_bio_add_pages two issues occur when calling from
pblk_rb_read_to_bio(). First one is in pblk_bio_free_pages, since we
are trying to free pages not allocated from our mempool. Second one
is the warn from dma_pool_free, that we are trying to free NULL
pointer dma.

This commit fix both issues.

Signed-off-by: Igor Konopko <[email protected]>
Signed-off-by: Marcin Dziegielewski <[email protected]>
Signed-off-by: Matias Bjørling <[email protected]>
---
 drivers/lightnvm/pblk-core.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/lightnvm/pblk-core.c b/drivers/lightnvm/pblk-core.c
index e43093e27084..a20b41c355c5 100644
--- a/drivers/lightnvm/pblk-core.c
+++ b/drivers/lightnvm/pblk-core.c
@@ -278,7 +278,9 @@ void pblk_free_rqd(struct pblk *pblk, struct nvm_rq *rqd, 
int type)
                return;
        }
 
-       nvm_dev_dma_free(dev->parent, rqd->meta_list, rqd->dma_meta_list);
+       if (rqd->meta_list)
+               nvm_dev_dma_free(dev->parent, rqd->meta_list,
+                               rqd->dma_meta_list);
        mempool_free(rqd, pool);
 }
 
@@ -316,7 +318,7 @@ int pblk_bio_add_pages(struct pblk *pblk, struct bio *bio, 
gfp_t flags,
 
        return 0;
 err:
-       pblk_bio_free_pages(pblk, bio, 0, i - 1);
+       pblk_bio_free_pages(pblk, bio, (bio->bi_vcnt - i), i);
        return -1;
 }
 
-- 
2.11.0

Reply via email to