aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kernel/bpf/syscall.c32
1 files changed, 12 insertions, 20 deletions
diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c
index 70fb11106fc2..b7c585838c72 100644
--- a/kernel/bpf/syscall.c
+++ b/kernel/bpf/syscall.c
@@ -2272,33 +2272,25 @@ static int bpf_prog_get_info_by_fd(struct bpf_prog *prog,
2272 ulen = info.nr_func_info; 2272 ulen = info.nr_func_info;
2273 info.nr_func_info = prog->aux->func_info_cnt; 2273 info.nr_func_info = prog->aux->func_info_cnt;
2274 if (info.nr_func_info && ulen) { 2274 if (info.nr_func_info && ulen) {
2275 if (bpf_dump_raw_ok()) { 2275 char __user *user_finfo;
2276 char __user *user_finfo;
2277 2276
2278 user_finfo = u64_to_user_ptr(info.func_info); 2277 user_finfo = u64_to_user_ptr(info.func_info);
2279 ulen = min_t(u32, info.nr_func_info, ulen); 2278 ulen = min_t(u32, info.nr_func_info, ulen);
2280 if (copy_to_user(user_finfo, prog->aux->func_info, 2279 if (copy_to_user(user_finfo, prog->aux->func_info,
2281 info.func_info_rec_size * ulen)) 2280 info.func_info_rec_size * ulen))
2282 return -EFAULT; 2281 return -EFAULT;
2283 } else {
2284 info.func_info = 0;
2285 }
2286 } 2282 }
2287 2283
2288 ulen = info.nr_line_info; 2284 ulen = info.nr_line_info;
2289 info.nr_line_info = prog->aux->nr_linfo; 2285 info.nr_line_info = prog->aux->nr_linfo;
2290 if (info.nr_line_info && ulen) { 2286 if (info.nr_line_info && ulen) {
2291 if (bpf_dump_raw_ok()) { 2287 __u8 __user *user_linfo;
2292 __u8 __user *user_linfo;
2293 2288
2294 user_linfo = u64_to_user_ptr(info.line_info); 2289 user_linfo = u64_to_user_ptr(info.line_info);
2295 ulen = min_t(u32, info.nr_line_info, ulen); 2290 ulen = min_t(u32, info.nr_line_info, ulen);
2296 if (copy_to_user(user_linfo, prog->aux->linfo, 2291 if (copy_to_user(user_linfo, prog->aux->linfo,
2297 info.line_info_rec_size * ulen)) 2292 info.line_info_rec_size * ulen))
2298 return -EFAULT; 2293 return -EFAULT;
2299 } else {
2300 info.line_info = 0;
2301 }
2302 } 2294 }
2303 2295
2304 ulen = info.nr_jited_line_info; 2296 ulen = info.nr_jited_line_info;