lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 18 Oct 2022 09:29:07 -0700 From: Alexei Starovoitov <alexei.starovoitov@...il.com> To: Kees Cook <keescook@...omium.org> Cc: Alexei Starovoitov <ast@...nel.org>, Daniel Borkmann <daniel@...earbox.net>, Andrii Nakryiko <andrii@...nel.org>, Martin KaFai Lau <martin.lau@...ux.dev>, Song Liu <song@...nel.org>, Yonghong Song <yhs@...com>, John Fastabend <john.fastabend@...il.com>, KP Singh <kpsingh@...nel.org>, Stanislav Fomichev <sdf@...gle.com>, Hao Luo <haoluo@...gle.com>, Jiri Olsa <jolsa@...nel.org>, "David S. Miller" <davem@...emloft.net>, Eric Dumazet <edumazet@...gle.com>, Jakub Kicinski <kuba@...nel.org>, Paolo Abeni <pabeni@...hat.com>, Jesper Dangaard Brouer <hawk@...nel.org>, bpf <bpf@...r.kernel.org>, Network Development <netdev@...r.kernel.org>, LKML <linux-kernel@...r.kernel.org>, linux-hardening@...r.kernel.org Subject: Re: [PATCH] bpf, test_run: Track allocation size of data On Tue, Oct 18, 2022 at 2:02 AM Kees Cook <keescook@...omium.org> wrote: > > In preparation for requiring that build_skb() have a non-zero size > argument, track the data allocation size explicitly and pass it into > build_skb(). To retain the original result of using the ksize() > side-effect on the skb size, explicitly round up the size during > allocation. > > Cc: Alexei Starovoitov <ast@...nel.org> > Cc: Daniel Borkmann <daniel@...earbox.net> > Cc: Andrii Nakryiko <andrii@...nel.org> > Cc: Martin KaFai Lau <martin.lau@...ux.dev> > Cc: Song Liu <song@...nel.org> > Cc: Yonghong Song <yhs@...com> > Cc: John Fastabend <john.fastabend@...il.com> > Cc: KP Singh <kpsingh@...nel.org> > Cc: Stanislav Fomichev <sdf@...gle.com> > Cc: Hao Luo <haoluo@...gle.com> > Cc: Jiri Olsa <jolsa@...nel.org> > Cc: "David S. Miller" <davem@...emloft.net> > Cc: Eric Dumazet <edumazet@...gle.com> > Cc: Jakub Kicinski <kuba@...nel.org> > Cc: Paolo Abeni <pabeni@...hat.com> > Cc: Jesper Dangaard Brouer <hawk@...nel.org> > Cc: bpf@...r.kernel.org > Cc: netdev@...r.kernel.org > Signed-off-by: Kees Cook <keescook@...omium.org> > --- > net/bpf/test_run.c | 84 +++++++++++++++++++++++++--------------------- > 1 file changed, 46 insertions(+), 38 deletions(-) > > diff --git a/net/bpf/test_run.c b/net/bpf/test_run.c > index 13d578ce2a09..299ff102f516 100644 > --- a/net/bpf/test_run.c > +++ b/net/bpf/test_run.c > @@ -762,28 +762,38 @@ BTF_ID_FLAGS(func, bpf_kfunc_call_test_ref, KF_TRUSTED_ARGS) > BTF_ID_FLAGS(func, bpf_kfunc_call_test_destructive, KF_DESTRUCTIVE) > BTF_SET8_END(test_sk_check_kfunc_ids) > > -static void *bpf_test_init(const union bpf_attr *kattr, u32 user_size, > - u32 size, u32 headroom, u32 tailroom) > +struct bpfalloc { > + size_t len; > + void *data; > +}; > + > +static int bpf_test_init(struct bpfalloc *alloc, > + const union bpf_attr *kattr, u32 user_size, > + u32 size, u32 headroom, u32 tailroom) > { > void __user *data_in = u64_to_user_ptr(kattr->test.data_in); > - void *data; > > if (size < ETH_HLEN || size > PAGE_SIZE - headroom - tailroom) > - return ERR_PTR(-EINVAL); > + return -EINVAL; > > if (user_size > size) > - return ERR_PTR(-EMSGSIZE); > + return -EMSGSIZE; > > - data = kzalloc(size + headroom + tailroom, GFP_USER); > - if (!data) > - return ERR_PTR(-ENOMEM); > + alloc->len = kmalloc_size_roundup(size + headroom + tailroom); > + alloc->data = kzalloc(alloc->len, GFP_USER); Don't you need to do this generalically in many places in the kernel?
Powered by blists - more mailing lists