Re: [PATCH net-next] xdp: xdp_umem: fix umem pages mapping for 32bits systems
From: Björn Töpel <hidden>
Date: 2019-06-26 20:50:37
Also in:
bpf, lkml
On Wed, 26 Jun 2019 at 17:59, Ivan Khoronzhuk [off-list ref] wrote:
Use kmap instead of page_address as it's not always in low memory.
Ah, some 32-bit love. :-) Thanks for working on this! For future patches, please base AF_XDP patches on the bpf/bpf-next tree instead of net/net-next. Acked-by: Björn Töpel <redacted>
quoted hunk ↗ jump to hunk
Signed-off-by: Ivan Khoronzhuk <redacted> --- net/xdp/xdp_umem.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-)diff --git a/net/xdp/xdp_umem.c b/net/xdp/xdp_umem.c index 9c6de4f114f8..d3c1411420fd 100644 --- a/net/xdp/xdp_umem.c +++ b/net/xdp/xdp_umem.c@@ -169,6 +169,14 @@ static void xdp_umem_clear_dev(struct xdp_umem *umem) } } +static void xdp_umem_unmap_pages(struct xdp_umem *umem) +{ + unsigned int i; + + for (i = 0; i < umem->npgs; i++) + kunmap(umem->pgs[i]); +} + static void xdp_umem_unpin_pages(struct xdp_umem *umem) { unsigned int i;@@ -210,6 +218,7 @@ static void xdp_umem_release(struct xdp_umem *umem) xsk_reuseq_destroy(umem); + xdp_umem_unmap_pages(umem); xdp_umem_unpin_pages(umem); kfree(umem->pages);@@ -372,7 +381,7 @@ static int xdp_umem_reg(struct xdp_umem *umem, struct xdp_umem_reg *mr) } for (i = 0; i < umem->npgs; i++) - umem->pages[i].addr = page_address(umem->pgs[i]); + umem->pages[i].addr = kmap(umem->pgs[i]); return 0; --2.17.1