Unverified Commit db89beee authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!14519 bpf,perf: Fix invalid prog_array access in perf_event_detach_bpf_prog

parents fc7fa9bf 45d08c1d
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -2216,6 +2216,9 @@ void perf_event_detach_bpf_prog(struct perf_event *event)
		goto unlock;

	old_array = bpf_event_rcu_dereference(event->tp_event->prog_array);
	if (!old_array)
		goto put;

	ret = bpf_prog_array_copy(old_array, event->prog, NULL, 0, &new_array);
	if (ret < 0) {
		bpf_prog_array_delete_safe(old_array, event->prog);
@@ -2224,6 +2227,7 @@ void perf_event_detach_bpf_prog(struct perf_event *event)
		bpf_prog_array_free_sleepable(old_array);
	}

put:
	/*
	 * It could be that the bpf_prog is not sleepable (and will be freed
	 * via normal RCU), but is called from a point that supports sleepable