Lines Matching refs:ctx
63 const void *ctx, bpf_prog_run_fn run_prog, in bpf_prog_run_array_cg() argument
81 func_ret = run_prog(prog, ctx); in bpf_prog_run_array_cg()
96 unsigned int __cgroup_bpf_run_lsm_sock(const void *ctx, in __cgroup_bpf_run_lsm_sock() argument
105 args = (u64 *)ctx; in __cgroup_bpf_run_lsm_sock()
114 ctx, bpf_prog_run, 0, NULL); in __cgroup_bpf_run_lsm_sock()
118 unsigned int __cgroup_bpf_run_lsm_socket(const void *ctx, in __cgroup_bpf_run_lsm_socket() argument
127 args = (u64 *)ctx; in __cgroup_bpf_run_lsm_socket()
136 ctx, bpf_prog_run, 0, NULL); in __cgroup_bpf_run_lsm_socket()
140 unsigned int __cgroup_bpf_run_lsm_current(const void *ctx, in __cgroup_bpf_run_lsm_current() argument
155 ctx, bpf_prog_run, 0, NULL); in __cgroup_bpf_run_lsm_current()
1675 struct bpf_sock_addr_kern ctx = { in __cgroup_bpf_run_filter_sock_addr() local
1691 if (!ctx.uaddr) { in __cgroup_bpf_run_filter_sock_addr()
1693 ctx.uaddr = (struct sockaddr *)&unspec; in __cgroup_bpf_run_filter_sock_addr()
1694 ctx.uaddrlen = 0; in __cgroup_bpf_run_filter_sock_addr()
1696 ctx.uaddrlen = *uaddrlen; in __cgroup_bpf_run_filter_sock_addr()
1700 ret = bpf_prog_run_array_cg(&cgrp->bpf, atype, &ctx, bpf_prog_run, in __cgroup_bpf_run_filter_sock_addr()
1704 *uaddrlen = ctx.uaddrlen; in __cgroup_bpf_run_filter_sock_addr()
1741 struct bpf_cgroup_dev_ctx ctx = { in __cgroup_bpf_check_dev_permission() local
1750 ret = bpf_prog_run_array_cg(&cgrp->bpf, atype, &ctx, bpf_prog_run, 0, in __cgroup_bpf_check_dev_permission()
1765 struct bpf_cg_run_ctx *ctx; in BPF_CALL_2() local
1769 ctx = container_of(current->bpf_ctx, struct bpf_cg_run_ctx, run_ctx); in BPF_CALL_2()
1770 storage = ctx->prog_item->cgroup_storage[stype]; in BPF_CALL_2()
1790 struct bpf_cg_run_ctx *ctx = in BPF_CALL_0() local
1793 return ctx->retval; in BPF_CALL_0()
1804 struct bpf_cg_run_ctx *ctx = in BPF_CALL_1() local
1807 ctx->retval = retval; in BPF_CALL_1()
1899 struct bpf_sysctl_kern ctx = { in __cgroup_bpf_run_filter_sysctl() local
1914 ctx.cur_val = kmalloc_track_caller(ctx.cur_len, GFP_KERNEL); in __cgroup_bpf_run_filter_sysctl()
1915 if (!ctx.cur_val || in __cgroup_bpf_run_filter_sysctl()
1916 table->proc_handler(table, 0, ctx.cur_val, &ctx.cur_len, &pos)) { in __cgroup_bpf_run_filter_sysctl()
1918 ctx.cur_len = 0; in __cgroup_bpf_run_filter_sysctl()
1925 ctx.new_val = kmalloc_track_caller(PAGE_SIZE, GFP_KERNEL); in __cgroup_bpf_run_filter_sysctl()
1926 ctx.new_len = min_t(size_t, PAGE_SIZE, *pcount); in __cgroup_bpf_run_filter_sysctl()
1927 if (ctx.new_val) { in __cgroup_bpf_run_filter_sysctl()
1928 memcpy(ctx.new_val, *buf, ctx.new_len); in __cgroup_bpf_run_filter_sysctl()
1931 ctx.new_len = 0; in __cgroup_bpf_run_filter_sysctl()
1937 ret = bpf_prog_run_array_cg(&cgrp->bpf, atype, &ctx, bpf_prog_run, 0, in __cgroup_bpf_run_filter_sysctl()
1941 kfree(ctx.cur_val); in __cgroup_bpf_run_filter_sysctl()
1943 if (ret == 1 && ctx.new_updated) { in __cgroup_bpf_run_filter_sysctl()
1945 *buf = ctx.new_val; in __cgroup_bpf_run_filter_sysctl()
1946 *pcount = ctx.new_len; in __cgroup_bpf_run_filter_sysctl()
1948 kfree(ctx.new_val); in __cgroup_bpf_run_filter_sysctl()
1955 static int sockopt_alloc_buf(struct bpf_sockopt_kern *ctx, int max_optlen, in sockopt_alloc_buf() argument
1972 ctx->optval = buf->data; in sockopt_alloc_buf()
1973 ctx->optval_end = ctx->optval + max_optlen; in sockopt_alloc_buf()
1977 ctx->optval = kzalloc(max_optlen, GFP_USER); in sockopt_alloc_buf()
1978 if (!ctx->optval) in sockopt_alloc_buf()
1981 ctx->optval_end = ctx->optval + max_optlen; in sockopt_alloc_buf()
1986 static void sockopt_free_buf(struct bpf_sockopt_kern *ctx, in sockopt_free_buf() argument
1989 if (ctx->optval == buf->data) in sockopt_free_buf()
1991 kfree(ctx->optval); in sockopt_free_buf()
1994 static bool sockopt_buf_allocated(struct bpf_sockopt_kern *ctx, in sockopt_buf_allocated() argument
1997 return ctx->optval != buf->data; in sockopt_buf_allocated()
2006 struct bpf_sockopt_kern ctx = { in __cgroup_bpf_run_filter_setsockopt() local
2018 max_optlen = sockopt_alloc_buf(&ctx, max_optlen, &buf); in __cgroup_bpf_run_filter_setsockopt()
2022 ctx.optlen = *optlen; in __cgroup_bpf_run_filter_setsockopt()
2024 if (copy_from_sockptr(ctx.optval, optval, in __cgroup_bpf_run_filter_setsockopt()
2032 &ctx, bpf_prog_run, 0, NULL); in __cgroup_bpf_run_filter_setsockopt()
2038 if (ctx.optlen == -1) { in __cgroup_bpf_run_filter_setsockopt()
2041 } else if (ctx.optlen > max_optlen || ctx.optlen < -1) { in __cgroup_bpf_run_filter_setsockopt()
2043 if (*optlen > PAGE_SIZE && ctx.optlen >= 0) { in __cgroup_bpf_run_filter_setsockopt()
2045 ctx.optlen, max_optlen); in __cgroup_bpf_run_filter_setsockopt()
2055 *level = ctx.level; in __cgroup_bpf_run_filter_setsockopt()
2056 *optname = ctx.optname; in __cgroup_bpf_run_filter_setsockopt()
2061 if (ctx.optlen != 0) { in __cgroup_bpf_run_filter_setsockopt()
2062 *optlen = ctx.optlen; in __cgroup_bpf_run_filter_setsockopt()
2069 if (!sockopt_buf_allocated(&ctx, &buf)) { in __cgroup_bpf_run_filter_setsockopt()
2070 void *p = kmalloc(ctx.optlen, GFP_USER); in __cgroup_bpf_run_filter_setsockopt()
2076 memcpy(p, ctx.optval, ctx.optlen); in __cgroup_bpf_run_filter_setsockopt()
2079 *kernel_optval = ctx.optval; in __cgroup_bpf_run_filter_setsockopt()
2087 sockopt_free_buf(&ctx, &buf); in __cgroup_bpf_run_filter_setsockopt()
2098 struct bpf_sockopt_kern ctx = { in __cgroup_bpf_run_filter_getsockopt() local
2108 ctx.optlen = max_optlen; in __cgroup_bpf_run_filter_getsockopt()
2109 max_optlen = sockopt_alloc_buf(&ctx, max_optlen, &buf); in __cgroup_bpf_run_filter_getsockopt()
2120 if (copy_from_sockptr(&ctx.optlen, optlen, in __cgroup_bpf_run_filter_getsockopt()
2121 sizeof(ctx.optlen))) { in __cgroup_bpf_run_filter_getsockopt()
2126 if (ctx.optlen < 0) { in __cgroup_bpf_run_filter_getsockopt()
2130 orig_optlen = ctx.optlen; in __cgroup_bpf_run_filter_getsockopt()
2132 if (copy_from_sockptr(ctx.optval, optval, in __cgroup_bpf_run_filter_getsockopt()
2133 min(ctx.optlen, max_optlen))) { in __cgroup_bpf_run_filter_getsockopt()
2141 &ctx, bpf_prog_run, retval, NULL); in __cgroup_bpf_run_filter_getsockopt()
2148 (ctx.optlen > max_optlen || ctx.optlen < 0)) { in __cgroup_bpf_run_filter_getsockopt()
2149 if (orig_optlen > PAGE_SIZE && ctx.optlen >= 0) { in __cgroup_bpf_run_filter_getsockopt()
2151 ctx.optlen, max_optlen); in __cgroup_bpf_run_filter_getsockopt()
2159 if (ctx.optlen != 0) { in __cgroup_bpf_run_filter_getsockopt()
2161 copy_to_sockptr(optval, ctx.optval, ctx.optlen)) { in __cgroup_bpf_run_filter_getsockopt()
2165 if (copy_to_sockptr(optlen, &ctx.optlen, sizeof(ctx.optlen))) { in __cgroup_bpf_run_filter_getsockopt()
2172 sockopt_free_buf(&ctx, &buf); in __cgroup_bpf_run_filter_getsockopt()
2181 struct bpf_sockopt_kern ctx = { in __cgroup_bpf_run_filter_getsockopt_kern() local
2201 &ctx, bpf_prog_run, retval, NULL); in __cgroup_bpf_run_filter_getsockopt_kern()
2205 if (ctx.optlen > *optlen) in __cgroup_bpf_run_filter_getsockopt_kern()
2210 if (ctx.optlen != 0) in __cgroup_bpf_run_filter_getsockopt_kern()
2211 *optlen = ctx.optlen; in __cgroup_bpf_run_filter_getsockopt_kern()
2248 BPF_CALL_4(bpf_sysctl_get_name, struct bpf_sysctl_kern *, ctx, char *, buf, in BPF_CALL_4() argument
2257 if (!ctx->head) in BPF_CALL_4()
2259 tmp_ret = sysctl_cpy_dir(ctx->head->parent, &buf, &buf_len); in BPF_CALL_4()
2264 ret = strscpy(buf, ctx->table->procname, buf_len); in BPF_CALL_4()
2305 BPF_CALL_3(bpf_sysctl_get_current_value, struct bpf_sysctl_kern *, ctx, in BPF_CALL_3() argument
2308 return copy_sysctl_value(buf, buf_len, ctx->cur_val, ctx->cur_len); in BPF_CALL_3()
2320 BPF_CALL_3(bpf_sysctl_get_new_value, struct bpf_sysctl_kern *, ctx, char *, buf, in BPF_CALL_3() argument
2323 if (!ctx->write) { in BPF_CALL_3()
2328 return copy_sysctl_value(buf, buf_len, ctx->new_val, ctx->new_len); in BPF_CALL_3()
2340 BPF_CALL_3(bpf_sysctl_set_new_value, struct bpf_sysctl_kern *, ctx, in BPF_CALL_3() argument
2343 if (!ctx->write || !ctx->new_val || !ctx->new_len || !buf || !buf_len) in BPF_CALL_3()
2349 memcpy(ctx->new_val, buf, buf_len); in BPF_CALL_3()
2350 ctx->new_len = buf_len; in BPF_CALL_3()
2351 ctx->new_updated = 1; in BPF_CALL_3()
2493 BPF_CALL_1(bpf_get_netns_cookie_sockopt, struct bpf_sockopt_kern *, ctx) in BPF_CALL_1() argument
2495 const struct net *net = ctx ? sock_net(ctx->sk) : &init_net; in BPF_CALL_1()