Thread (4 messages) 4 messages, 4 authors, 2021-05-25

Re: [PATCH bpf-next] xsk: use kvcalloc to support large umems

From: Björn Töpel <hidden>
Date: 2021-05-22 14:12:28
Also in: bpf

On Fri, 21 May 2021 at 10:33, Magnus Karlsson [off-list ref] wrote:
From: Magnus Karlsson <magnus.karlsson@intel.com>

Use kvcalloc() instead of kcalloc() to support large umems with, on my
server, one million pages or more in the umem.

Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com>
Reported-by: Dan Siemon <redacted>
Nice!

Acked-by: Björn Töpel <bjorn@kernel.org>
quoted hunk ↗ jump to hunk
---
 net/xdp/xdp_umem.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/net/xdp/xdp_umem.c b/net/xdp/xdp_umem.c
index 56a28a686988..f01ef6bda390 100644
--- a/net/xdp/xdp_umem.c
+++ b/net/xdp/xdp_umem.c
@@ -27,7 +27,7 @@ static void xdp_umem_unpin_pages(struct xdp_umem *umem)
 {
        unpin_user_pages_dirty_lock(umem->pgs, umem->npgs, true);

-       kfree(umem->pgs);
+       kvfree(umem->pgs);
        umem->pgs = NULL;
 }
@@ -99,8 +99,7 @@ static int xdp_umem_pin_pages(struct xdp_umem *umem, unsigned long address)
        long npgs;
        int err;

-       umem->pgs = kcalloc(umem->npgs, sizeof(*umem->pgs),
-                           GFP_KERNEL | __GFP_NOWARN);
+       umem->pgs = kvcalloc(umem->npgs, sizeof(*umem->pgs), GFP_KERNEL | __GFP_NOWARN);
        if (!umem->pgs)
                return -ENOMEM;
@@ -123,7 +122,7 @@ static int xdp_umem_pin_pages(struct xdp_umem *umem, unsigned long address)
 out_pin:
        xdp_umem_unpin_pages(umem);
 out_pgs:
-       kfree(umem->pgs);
+       kvfree(umem->pgs);
        umem->pgs = NULL;
        return err;
 }
base-commit: a49e72b3bda73d36664a084e47da9727a31b8095
--
2.29.0
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help