From dbea68ddd21cb3132dedb20892a4259057454d5e Mon Sep 17 00:00:00 2001 From: Tom Marshall Date: Sat, 9 Nov 2019 17:07:38 +0100 Subject: [PATCH] Do not vmap singe pages, just use page_address --- dm-compress/pbat.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/dm-compress/pbat.c b/dm-compress/pbat.c index eaa5510..2c067c2 100644 --- a/dm-compress/pbat.c +++ b/dm-compress/pbat.c @@ -65,9 +65,14 @@ pbat_ctr(struct pbat* pbat, if (!cbd_alloc_pagev(pbat->pagev, nr_pages)) { return false; } - pbat->buf = vmap(pbat->pagev, nr_pages, VM_MAP, PAGE_KERNEL); - if (!pbat->buf) { - return false; + if (nr_pages == 1) { + pbat->buf = page_address(pbat->pagev[0]); + } + else { + pbat->buf = vmap(pbat->pagev, nr_pages, VM_MAP, PAGE_KERNEL); + if (!pbat->buf) { + return false; + } } return true; @@ -82,7 +87,9 @@ pbat_dtr(struct pbat* pbat) for (n = 0; n < nr_pages; ++n) { lock_page(pbat->pagev[n]); } - vunmap(pbat->buf); + if (nr_pages != 1) { + vunmap(pbat->buf); + } pbat->buf = NULL; cbd_free_pagev(pbat->pagev, nr_pages); kfree(pbat->pagev);