staging: gasket: page_table: don't unmap coherent pages
authorNick Ewalt <nicholasewalt@google.com>
Mon, 17 Sep 2018 12:39:01 +0000 (05:39 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 18 Sep 2018 11:22:01 +0000 (13:22 +0200)
Only call dma_unmap_page if there was an associated dma_map_page call.

Signed-off-by: Nick Ewalt <nicholasewalt@google.com>
Signed-off-by: Todd Poynor <toddpoynor@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/gasket/gasket_page_table.c

index 8fe27e7d1b53c2bd8beec8c02d41c5057fd2ea72..33d98043953a5bf4de328d14290cfbe32609d743 100644 (file)
@@ -610,7 +610,7 @@ static void gasket_perform_unmapping(struct gasket_page_table *pg_tbl,
 
                /* release the address from the driver, */
                if (ptes[i].status == PTE_INUSE) {
-                       if (ptes[i].dma_addr) {
+                       if (ptes[i].page && ptes[i].dma_addr) {
                                dma_unmap_page(pg_tbl->device, ptes[i].dma_addr,
                                               PAGE_SIZE, DMA_BIDIRECTIONAL);
                        }