Message ID | 20210521083301.26921-1-magnus.karlsson@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Commit | a720a2a0ad6cb6f769b6c7cbc3c54287a7d54ff8 |
Delegated to: | BPF |
Headers | show |
Series | [bpf-next] xsk: use kvcalloc to support large umems | expand |
Context | Check | Description |
---|---|---|
netdev/cover_letter | success | Link |
netdev/fixes_present | success | Link |
netdev/patch_count | success | Link |
netdev/tree_selection | success | Clearly marked for bpf-next |
netdev/subject_prefix | success | Link |
netdev/cc_maintainers | warning | 9 maintainers not CCed: yhs@fb.com kpsingh@kernel.org hawk@kernel.org andrii@kernel.org kafai@fb.com john.fastabend@gmail.com songliubraving@fb.com davem@davemloft.net kuba@kernel.org |
netdev/source_inline | success | Was 0 now: 0 |
netdev/verify_signedoff | success | Link |
netdev/module_param | success | Was 0 now: 0 |
netdev/build_32bit | success | Errors and warnings before: 1 this patch: 1 |
netdev/kdoc | success | Errors and warnings before: 0 this patch: 0 |
netdev/verify_fixes | success | Link |
netdev/checkpatch | warning | WARNING: line length of 88 exceeds 80 columns |
netdev/build_allmodconfig_warn | success | Errors and warnings before: 1 this patch: 1 |
netdev/header_inline | success | Link |
On Fri, 21 May 2021 at 10:33, Magnus Karlsson <magnus.karlsson@gmail.com> 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 <dan@coverfire.com> Nice! Acked-by: Björn Töpel <bjorn@kernel.org> > --- > 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 >
Björn Töpel wrote: > On Fri, 21 May 2021 at 10:33, Magnus Karlsson <magnus.karlsson@gmail.com> 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 <dan@coverfire.com> > > Nice! > > Acked-by: Björn Töpel <bjorn@kernel.org> LGTM as well. I scanned the driver side, thinking there might be some complication there, but looks like it handles this fine. Acked-by: John Fastabend <john.fastabend@gmail.com>
Hello: This patch was applied to bpf/bpf-next.git (refs/heads/master): On Fri, 21 May 2021 10:33:01 +0200 you 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 <dan@coverfire.com> > > [...] Here is the summary with links: - [bpf-next] xsk: use kvcalloc to support large umems https://git.kernel.org/bpf/bpf-next/c/a720a2a0ad6c You are awesome, thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/patchwork/pwbot.html
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; }