| From fd58f7df2415ef747782e01f94880fefad1247cf Mon Sep 17 00:00:00 2001 |
| From: Dan Carpenter <dan.carpenter@oracle.com> |
| Date: Thu, 26 May 2022 13:24:05 +0300 |
| Subject: bpf: Use safer kvmalloc_array() where possible |
| |
| From: Dan Carpenter <dan.carpenter@oracle.com> |
| |
| commit fd58f7df2415ef747782e01f94880fefad1247cf upstream. |
| |
| The kvmalloc_array() function is safer because it has a check for |
| integer overflows. These sizes come from the user and I was not |
| able to see any bounds checking so an integer overflow seems like a |
| realistic concern. |
| |
| Fixes: 0dcac2725406 ("bpf: Add multi kprobe link") |
| Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> |
| Signed-off-by: Andrii Nakryiko <andrii@kernel.org> |
| Link: https://lore.kernel.org/bpf/Yo9VRVMeHbALyjUH@kili |
| Signed-off-by: Alexei Starovoitov <ast@kernel.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| kernel/trace/bpf_trace.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| --- a/kernel/trace/bpf_trace.c |
| +++ b/kernel/trace/bpf_trace.c |
| @@ -2433,7 +2433,7 @@ int bpf_kprobe_multi_link_attach(const u |
| return -EINVAL; |
| |
| size = cnt * sizeof(*addrs); |
| - addrs = kvmalloc(size, GFP_KERNEL); |
| + addrs = kvmalloc_array(cnt, sizeof(*addrs), GFP_KERNEL); |
| if (!addrs) |
| return -ENOMEM; |
| |
| @@ -2450,7 +2450,7 @@ int bpf_kprobe_multi_link_attach(const u |
| |
| ucookies = u64_to_user_ptr(attr->link_create.kprobe_multi.cookies); |
| if (ucookies) { |
| - cookies = kvmalloc(size, GFP_KERNEL); |
| + cookies = kvmalloc_array(cnt, sizeof(*addrs), GFP_KERNEL); |
| if (!cookies) { |
| err = -ENOMEM; |
| goto error; |