On Wed, 26 Jun 2019 at 17:59, Ivan Khoronzhuk <ivan.khoronzhuk@xxxxxxxxxx> 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 <bjorn.topel@xxxxxxxxx> > Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@xxxxxxxxxx> > --- > 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 >