xsk: Remove unnecessary member in xdp_umem
authorMagnus Karlsson <magnus.karlsson@intel.com>
Mon, 4 May 2020 13:33:52 +0000 (15:33 +0200)
committerDaniel Borkmann <daniel@iogearbox.net>
Mon, 4 May 2020 20:56:26 +0000 (22:56 +0200)
Remove the unnecessary member of address in struct xdp_umem as it is
only used during the umem registration. No need to carry this around
as it is not used during run-time nor when unregistering the umem.

Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Jonathan Lemon <jonathan.lemon@gmail.com>
Link: https://lore.kernel.org/bpf/1588599232-24897-3-git-send-email-magnus.karlsson@intel.com
include/net/xdp_sock.h
net/xdp/xdp_umem.c

index b72f1f4..67191cc 100644 (file)
@@ -50,7 +50,6 @@ struct xdp_umem {
        u32 headroom;
        u32 chunk_size_nohr;
        struct user_struct *user;
-       unsigned long address;
        refcount_t users;
        struct work_struct work;
        struct page **pgs;
index 7211f45..37ace3b 100644 (file)
@@ -279,7 +279,7 @@ void xdp_put_umem(struct xdp_umem *umem)
        }
 }
 
-static int xdp_umem_pin_pages(struct xdp_umem *umem)
+static int xdp_umem_pin_pages(struct xdp_umem *umem, unsigned long address)
 {
        unsigned int gup_flags = FOLL_WRITE;
        long npgs;
@@ -291,7 +291,7 @@ static int xdp_umem_pin_pages(struct xdp_umem *umem)
                return -ENOMEM;
 
        down_read(&current->mm->mmap_sem);
-       npgs = pin_user_pages(umem->address, umem->npgs,
+       npgs = pin_user_pages(address, umem->npgs,
                              gup_flags | FOLL_LONGTERM, &umem->pgs[0], NULL);
        up_read(&current->mm->mmap_sem);
 
@@ -385,7 +385,6 @@ static int xdp_umem_reg(struct xdp_umem *umem, struct xdp_umem_reg *mr)
        if (headroom >= chunk_size - XDP_PACKET_HEADROOM)
                return -EINVAL;
 
-       umem->address = (unsigned long)addr;
        umem->chunk_mask = unaligned_chunks ? XSK_UNALIGNED_BUF_ADDR_MASK
                                            : ~((u64)chunk_size - 1);
        umem->size = size;
@@ -404,7 +403,7 @@ static int xdp_umem_reg(struct xdp_umem *umem, struct xdp_umem_reg *mr)
        if (err)
                return err;
 
-       err = xdp_umem_pin_pages(umem);
+       err = xdp_umem_pin_pages(umem, (unsigned long)addr);
        if (err)
                goto out_account;