[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <0851bf66-9d81-5c50-c75d-3a70a069a654@huawei.com>
Date: Sat, 20 Jun 2020 10:48:06 +0800
From: Zefan Li <lizefan@...wei.com>
To: Roman Gushchin <guro@...com>
CC: Cong Wang <xiyou.wangcong@...il.com>,
Linux Kernel Network Developers <netdev@...r.kernel.org>,
Cameron Berkenpas <cam@...-zeon.de>,
Peter Geis <pgwipeout@...il.com>,
Lu Fengqi <lufq.fnst@...fujitsu.com>,
Daniƫl Sonck <dsonck92@...il.com>,
Daniel Borkmann <daniel@...earbox.net>,
Tejun Heo <tj@...nel.org>
Subject: Re: [Patch net] cgroup: fix cgroup_sk_alloc() for sk_clone_lock()
>>> If so, we might wanna fix it in a different way,
>>> just checking if (!(css->flags & CSS_NO_REF)) in cgroup_bpf_put()
>>> like in cgroup_put(). It feels more reliable to me.
>>>
>>
>> Yeah I also have this idea in my mind.
>
> I wonder if the following patch will fix the issue?
>
I guess so, but it's better we have someone who reported this bug to
test it.
> --
>
> diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h
> index 4598e4da6b1b..7eb51137d896 100644
> --- a/include/linux/cgroup.h
> +++ b/include/linux/cgroup.h
> @@ -942,12 +942,14 @@ static inline bool cgroup_task_frozen(struct task_struct *task)
> #ifdef CONFIG_CGROUP_BPF
> static inline void cgroup_bpf_get(struct cgroup *cgrp)
> {
> - percpu_ref_get(&cgrp->bpf.refcnt);
> + if (!(cgrp->self.flags & CSS_NO_REF))
> + percpu_ref_get(&cgrp->bpf.refcnt);
> }
>
> static inline void cgroup_bpf_put(struct cgroup *cgrp)
> {
> - percpu_ref_put(&cgrp->bpf.refcnt);
> + if (!(cgrp->self.flags & CSS_NO_REF))
> + percpu_ref_put(&cgrp->bpf.refcnt);
> }
>
> #else /* CONFIG_CGROUP_BPF */
>
Powered by blists - more mailing lists