int fd;
 };
 
-/* For 32-bit systems, we need to use mmap2 as the offsets are 64-bit.
- * Unfortunately, it is not part of glibc.
- */
-static inline void *xsk_mmap(void *addr, size_t length, int prot, int flags,
-                            int fd, __u64 offset)
-{
-#ifdef __NR_mmap2
-       unsigned int page_shift = __builtin_ffs(getpagesize()) - 1;
-       long ret = syscall(__NR_mmap2, addr, length, prot, flags, fd,
-                          (off_t)(offset >> page_shift));
-
-       return (void *)ret;
-#else
-       return mmap(addr, length, prot, flags, fd, offset);
-#endif
-}
-
 int xsk_umem__fd(const struct xsk_umem *umem)
 {
        return umem ? umem->fd : -EINVAL;
                goto out_socket;
        }
 
-       map = xsk_mmap(NULL, off.fr.desc +
-                      umem->config.fill_size * sizeof(__u64),
-                      PROT_READ | PROT_WRITE, MAP_SHARED | MAP_POPULATE,
-                      umem->fd, XDP_UMEM_PGOFF_FILL_RING);
+       map = mmap(NULL, off.fr.desc + umem->config.fill_size * sizeof(__u64),
+                  PROT_READ | PROT_WRITE, MAP_SHARED | MAP_POPULATE, umem->fd,
+                  XDP_UMEM_PGOFF_FILL_RING);
        if (map == MAP_FAILED) {
                err = -errno;
                goto out_socket;
        fill->ring = map + off.fr.desc;
        fill->cached_cons = umem->config.fill_size;
 
-       map = xsk_mmap(NULL,
-                      off.cr.desc + umem->config.comp_size * sizeof(__u64),
-                      PROT_READ | PROT_WRITE, MAP_SHARED | MAP_POPULATE,
-                      umem->fd, XDP_UMEM_PGOFF_COMPLETION_RING);
+       map = mmap(NULL, off.cr.desc + umem->config.comp_size * sizeof(__u64),
+                  PROT_READ | PROT_WRITE, MAP_SHARED | MAP_POPULATE, umem->fd,
+                  XDP_UMEM_PGOFF_COMPLETION_RING);
        if (map == MAP_FAILED) {
                err = -errno;
                goto out_mmap;
        }
 
        if (rx) {
-               rx_map = xsk_mmap(NULL, off.rx.desc +
-                                 xsk->config.rx_size * sizeof(struct xdp_desc),
-                                 PROT_READ | PROT_WRITE,
-                                 MAP_SHARED | MAP_POPULATE,
-                                 xsk->fd, XDP_PGOFF_RX_RING);
+               rx_map = mmap(NULL, off.rx.desc +
+                             xsk->config.rx_size * sizeof(struct xdp_desc),
+                             PROT_READ | PROT_WRITE, MAP_SHARED | MAP_POPULATE,
+                             xsk->fd, XDP_PGOFF_RX_RING);
                if (rx_map == MAP_FAILED) {
                        err = -errno;
                        goto out_socket;
        xsk->rx = rx;
 
        if (tx) {
-               tx_map = xsk_mmap(NULL, off.tx.desc +
-                                 xsk->config.tx_size * sizeof(struct xdp_desc),
-                                 PROT_READ | PROT_WRITE,
-                                 MAP_SHARED | MAP_POPULATE,
-                                 xsk->fd, XDP_PGOFF_TX_RING);
+               tx_map = mmap(NULL, off.tx.desc +
+                             xsk->config.tx_size * sizeof(struct xdp_desc),
+                             PROT_READ | PROT_WRITE, MAP_SHARED | MAP_POPULATE,
+                             xsk->fd, XDP_PGOFF_TX_RING);
                if (tx_map == MAP_FAILED) {
                        err = -errno;
                        goto out_mmap_rx;