Thread (6 messages) flat view 6 messages, 4 authors, 2019-07-01

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help