netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] bpf: use vmemdup_user instead of kvmalloc and copy_from_user
@ 2022-03-22 11:28 Yihao Han
  2022-03-22 21:11 ` Andrii Nakryiko
  0 siblings, 1 reply; 2+ messages in thread
From: Yihao Han @ 2022-03-22 11:28 UTC (permalink / raw)
  To: Steven Rostedt, Ingo Molnar, Alexei Starovoitov, Daniel Borkmann,
	Andrii Nakryiko, Martin KaFai Lau, Song Liu, Yonghong Song,
	John Fastabend, KP Singh, netdev, bpf, linux-kernel
  Cc: kernel, Yihao Han

fix memdup_user.cocci warning:
kernel/trace/bpf_trace.c:2450:12-20: WARNING opportunity
for vmemdup_user

Signed-off-by: Yihao Han <hanyihao@vivo.com>
---
 kernel/trace/bpf_trace.c | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/kernel/trace/bpf_trace.c b/kernel/trace/bpf_trace.c
index 7fa2ebc07f60..aff2461c1ea2 100644
--- a/kernel/trace/bpf_trace.c
+++ b/kernel/trace/bpf_trace.c
@@ -2447,13 +2447,9 @@ int bpf_kprobe_multi_link_attach(const union bpf_attr *attr, struct bpf_prog *pr
 
 	ucookies = u64_to_user_ptr(attr->link_create.kprobe_multi.cookies);
 	if (ucookies) {
-		cookies = kvmalloc(size, GFP_KERNEL);
-		if (!cookies) {
-			err = -ENOMEM;
-			goto error;
-		}
-		if (copy_from_user(cookies, ucookies, size)) {
-			err = -EFAULT;
+		cookies = vmemdup_user(ucookies, size);
+		if (IS_ERR(cookies)) {
+			err = PTR_ERR(cookies);
 			goto error;
 		}
 	}
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] bpf: use vmemdup_user instead of kvmalloc and copy_from_user
  2022-03-22 11:28 [PATCH] bpf: use vmemdup_user instead of kvmalloc and copy_from_user Yihao Han
@ 2022-03-22 21:11 ` Andrii Nakryiko
  0 siblings, 0 replies; 2+ messages in thread
From: Andrii Nakryiko @ 2022-03-22 21:11 UTC (permalink / raw)
  To: Yihao Han
  Cc: Steven Rostedt, Ingo Molnar, Alexei Starovoitov, Daniel Borkmann,
	Andrii Nakryiko, Martin KaFai Lau, Song Liu, Yonghong Song,
	John Fastabend, KP Singh, Networking, bpf, open list, kernel

On Tue, Mar 22, 2022 at 4:29 AM Yihao Han <hanyihao@vivo.com> wrote:
>
> fix memdup_user.cocci warning:
> kernel/trace/bpf_trace.c:2450:12-20: WARNING opportunity
> for vmemdup_user
>
> Signed-off-by: Yihao Han <hanyihao@vivo.com>
> ---
>  kernel/trace/bpf_trace.c | 10 +++-------
>  1 file changed, 3 insertions(+), 7 deletions(-)
>
> diff --git a/kernel/trace/bpf_trace.c b/kernel/trace/bpf_trace.c
> index 7fa2ebc07f60..aff2461c1ea2 100644
> --- a/kernel/trace/bpf_trace.c
> +++ b/kernel/trace/bpf_trace.c
> @@ -2447,13 +2447,9 @@ int bpf_kprobe_multi_link_attach(const union bpf_attr *attr, struct bpf_prog *pr
>
>         ucookies = u64_to_user_ptr(attr->link_create.kprobe_multi.cookies);
>         if (ucookies) {
> -               cookies = kvmalloc(size, GFP_KERNEL);
> -               if (!cookies) {
> -                       err = -ENOMEM;
> -                       goto error;
> -               }
> -               if (copy_from_user(cookies, ucookies, size)) {
> -                       err = -EFAULT;
> +               cookies = vmemdup_user(ucookies, size);

does kvfree() handle ERR_PTR() values properly? I doubt so. Did you
validate your change or just blindly applied some tool?

> +               if (IS_ERR(cookies)) {
> +                       err = PTR_ERR(cookies);
>                         goto error;
>                 }
>         }
> --
> 2.17.1
>

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-03-22 21:11 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-22 11:28 [PATCH] bpf: use vmemdup_user instead of kvmalloc and copy_from_user Yihao Han
2022-03-22 21:11 ` Andrii Nakryiko

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).