[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <f58385a3-866f-424b-b6ad-ee04edf9aeb9@linux.dev>
Date: Fri, 1 Aug 2025 18:15:33 -0700
From: Martin KaFai Lau <martin.lau@...ux.dev>
To: Amery Hung <ameryhung@...il.com>
Cc: netdev@...r.kernel.org, alexei.starovoitov@...il.com, andrii@...nel.org,
daniel@...earbox.net, memxor@...il.com, kpsingh@...nel.org,
martin.lau@...nel.org, yonghong.song@...ux.dev, song@...nel.org,
haoluo@...gle.com, kernel-team@...a.com, bpf@...r.kernel.org
Subject: Re: [RFC PATCH bpf-next v1 06/11] bpf: Remove task local storage
percpu counter
On 7/29/25 11:25 AM, Amery Hung wrote:
> kernel/bpf/bpf_task_storage.c | 149 ++++------------------------------
nice.
> +BPF_CALL_5(bpf_task_storage_get, struct bpf_map *, map, struct task_struct *,
> + task, void *, value, u64, flags, gfp_t, gfp_flags)
> {
> struct bpf_local_storage_data *sdata;
>
> - sdata = task_storage_lookup(task, map, nobusy);
> + WARN_ON_ONCE(!bpf_rcu_lock_held());
> + if (flags & ~BPF_LOCAL_STORAGE_GET_F_CREATE || !task)
> + return (unsigned long)NULL;
> +
> + sdata = task_storage_lookup(task, map, true);
> if (sdata)
> - return sdata->data;
> + return (unsigned long)sdata->data;
>
> /* only allocate new storage, when the task is refcounted */
> if (refcount_read(&task->usage) &&
> - (flags & BPF_LOCAL_STORAGE_GET_F_CREATE) && nobusy) {
> + (flags & BPF_LOCAL_STORAGE_GET_F_CREATE)) {
> sdata = bpf_local_storage_update(
> task, (struct bpf_local_storage_map *)map, value,
> BPF_NOEXIST, false, gfp_flags);
> - return IS_ERR(sdata) ? NULL : sdata->data;
> + WARN_ON(IS_ERR(sdata));
A nit for now. ok during development/RFC. This will eventually need to be
removed. e.g. it should not WARN_ON ENOMEM.
Powered by blists - more mailing lists