Commit 4e2e6841 authored by Di Shen's avatar Di Shen Committed by Alexei Starovoitov
Browse files

bpf: Revert "bpf: remove unnecessary rcu_read_{lock,unlock}() in multi-uprobe attach logic"



This reverts commit 4a8f635a.

Althought get_pid_task() internally already calls rcu_read_lock() and
rcu_read_unlock(), the find_vpid() was not.

The documentation for find_vpid() clearly states:
"Must be called with the tasklist_lock or rcu_read_lock() held."

Add proper rcu_read_lock/unlock() to protect the find_vpid().

Fixes: 4a8f635a ("bpf: remove unnecessary rcu_read_{lock,unlock}() in multi-uprobe attach logic")
Reported-by: default avatarXuewen Yan <xuewen.yan@unisoc.com>
Signed-off-by: default avatarDi Shen <di.shen@unisoc.com>
Acked-by: default avatarAndrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/r/20250520054943.5002-1-xuewen.yan@unisoc.com


Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
parent 25b6d5de
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -3318,7 +3318,9 @@ int bpf_uprobe_multi_link_attach(const union bpf_attr *attr, struct bpf_prog *pr
	}

	if (pid) {
		rcu_read_lock();
		task = get_pid_task(find_vpid(pid), PIDTYPE_TGID);
		rcu_read_unlock();
		if (!task) {
			err = -ESRCH;
			goto error_path_put;