if (!ASSERT_OK_PTR(skel, "skel_load"))
                goto cleanup;
 
+       skel->bss->page_size = getpagesize();
+
        skel->links._setsockopt =
                bpf_program__attach_cgroup(skel->progs._setsockopt, cgroup_fd);
        if (!ASSERT_OK_PTR(skel->links._setsockopt, "setsockopt_link"))
 
 
 char _license[] SEC("license") = "GPL";
 
-#ifndef PAGE_SIZE
-#define PAGE_SIZE 4096
-#endif
+int page_size = 0; /* userspace should set it */
 
 #ifndef SOL_TCP
 #define SOL_TCP IPPROTO_TCP
                 * program can only see the first PAGE_SIZE
                 * bytes of data.
                 */
-               if (optval_end - optval != PAGE_SIZE)
+               if (optval_end - optval != page_size)
                        return 0; /* EPERM, unexpected data size */
 
                return 1;
 
        if (ctx->level == SOL_IP && ctx->optname == IP_FREEBIND) {
                /* Original optlen is larger than PAGE_SIZE. */
-               if (ctx->optlen != PAGE_SIZE * 2)
+               if (ctx->optlen != page_size * 2)
                        return 0; /* EPERM, unexpected data size */
 
                if (optval + 1 > optval_end)
                 * program can only see the first PAGE_SIZE
                 * bytes of data.
                 */
-               if (optval_end - optval != PAGE_SIZE)
+               if (optval_end - optval != page_size)
                        return 0; /* EPERM, unexpected data size */
 
                return 1;