ARG_ANYTHING,           /* any (initialized) argument is ok */
        ARG_PTR_TO_SPIN_LOCK,   /* pointer to bpf_spin_lock */
        ARG_PTR_TO_SOCK_COMMON, /* pointer to sock_common */
+       ARG_PTR_TO_INT,         /* pointer to int */
+       ARG_PTR_TO_LONG,        /* pointer to long */
 };
 
 /* type of values returned from helper functions */
 
               type == ARG_CONST_SIZE_OR_ZERO;
 }
 
+static bool arg_type_is_int_ptr(enum bpf_arg_type type)
+{
+       return type == ARG_PTR_TO_INT ||
+              type == ARG_PTR_TO_LONG;
+}
+
+static int int_ptr_type_to_size(enum bpf_arg_type type)
+{
+       if (type == ARG_PTR_TO_INT)
+               return sizeof(u32);
+       else if (type == ARG_PTR_TO_LONG)
+               return sizeof(u64);
+
+       return -EINVAL;
+}
+
 static int check_func_arg(struct bpf_verifier_env *env, u32 regno,
                          enum bpf_arg_type arg_type,
                          struct bpf_call_arg_meta *meta)
                         type != expected_type)
                        goto err_type;
                meta->raw_mode = arg_type == ARG_PTR_TO_UNINIT_MEM;
+       } else if (arg_type_is_int_ptr(arg_type)) {
+               expected_type = PTR_TO_STACK;
+               if (!type_is_pkt_pointer(type) &&
+                   type != PTR_TO_MAP_VALUE &&
+                   type != expected_type)
+                       goto err_type;
        } else {
                verbose(env, "unsupported arg_type %d\n", arg_type);
                return -EFAULT;
                err = check_helper_mem_access(env, regno - 1,
                                              reg->umax_value,
                                              zero_size_allowed, meta);
+       } else if (arg_type_is_int_ptr(arg_type)) {
+               int size = int_ptr_type_to_size(arg_type);
+
+               err = check_helper_mem_access(env, regno, size, false, meta);
+               if (err)
+                       return err;
+               err = check_ptr_alignment(env, reg, 0, size, true);
        }
 
        return err;