X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=kernel%2Ffreebsd%2Fcontigmem%2Fcontigmem.c;h=bd72f4d62015662cf0f4d27f7924fb58f3abfbfa;hb=349355141cfe5823cd60d75e5e2f8b2acf3f8b17;hp=1715b5dc513f45a2b58c2eb8d5b3350297243b9e;hpb=acaa9ee991b584d536ffa9529f063d11be7923a4;p=dpdk.git diff --git a/kernel/freebsd/contigmem/contigmem.c b/kernel/freebsd/contigmem/contigmem.c index 1715b5dc51..bd72f4d620 100644 --- a/kernel/freebsd/contigmem/contigmem.c +++ b/kernel/freebsd/contigmem/contigmem.c @@ -13,10 +13,13 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include +#include #include #include #include +#include #include @@ -162,9 +165,11 @@ contigmem_load() error: for (i = 0; i < contigmem_num_buffers; i++) { - if (contigmem_buffers[i].addr != NULL) + if (contigmem_buffers[i].addr != NULL) { contigfree(contigmem_buffers[i].addr, contigmem_buffer_size, M_CONTIGMEM); + contigmem_buffers[i].addr = NULL; + } if (mtx_initialized(&contigmem_buffers[i].mtx)) mtx_destroy(&contigmem_buffers[i].mtx); } @@ -294,19 +299,22 @@ contigmem_cdev_pager_fault(vm_object_t object, vm_ooffset_t offset, int prot, VM_OBJECT_WLOCK(object); vm_page_updatefake(page, paddr, memattr); } else { - vm_page_t mret; /* * Replace the passed in reqpage page with our own fake page and * free up the original page. */ page = vm_page_getfake(paddr, memattr); VM_OBJECT_WLOCK(object); - mret = vm_page_replace(page, object, (*mres)->pindex); +#if __FreeBSD__ >= 13 + vm_page_replace(page, object, (*mres)->pindex, *mres); +#else + vm_page_t mret = vm_page_replace(page, object, (*mres)->pindex); KASSERT(mret == *mres, ("invalid page replacement, old=%p, ret=%p", *mres, mret)); vm_page_lock(mret); vm_page_free(mret); vm_page_unlock(mret); +#endif *mres = page; }