All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tejun Heo <tj@kernel.org>
To: Muchun Song <songmuchun@bytedance.com>
Cc: viro@zeniv.linux.org.uk, axboe@fb.com, willy@infradead.org,
	linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
	duanxiongchun@bytedance.com, Michal Hocko <mhocko@suse.com>
Subject: Re: [PATCH v3] writeback: fix obtain a reference to a freeing memcg css
Date: Sun, 4 Apr 2021 14:01:26 -0400	[thread overview]
Message-ID: <YGn+9gY/VAc6YI/q@mtj.duckdns.org> (raw)
In-Reply-To: <20210402091145.80635-1-songmuchun@bytedance.com>

On Fri, Apr 02, 2021 at 05:11:45PM +0800, Muchun Song wrote:
> The caller of wb_get_create() should pin the memcg, because
> wb_get_create() relies on this guarantee. The rcu read lock
> only can guarantee that the memcg css returned by css_from_id()
> cannot be released, but the reference of the memcg can be zero.
> 
>   rcu_read_lock()
>   memcg_css = css_from_id()
>   wb_get_create(memcg_css)
>       cgwb_create(memcg_css)
>           // css_get can change the ref counter from 0 back to 1
>           css_get(memcg_css)
>   rcu_read_unlock()
> 
> Fix it by holding a reference to the css before calling
> wb_get_create(). This is not a problem I encountered in the
> real world. Just the result of a code review.
> 
> Fixes: 682aa8e1a6a1 ("writeback: implement unlocked_inode_to_wb transaction and use it for stat updates")
> Signed-off-by: Muchun Song <songmuchun@bytedance.com>
> Acked-by: Michal Hocko <mhocko@suse.com>

Acked-by: Tejun Heo <tj@kernel.org>

Thanks.

-- 
tejun

  reply	other threads:[~2021-04-04 18:01 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-02  9:11 [PATCH v3] writeback: fix obtain a reference to a freeing memcg css Muchun Song
2021-04-04 18:01 ` Tejun Heo [this message]
2021-05-20  3:45 ` Muchun Song
2021-06-28 16:32   ` Jan Kara
2021-06-29  3:06     ` [External] " Muchun Song

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YGn+9gY/VAc6YI/q@mtj.duckdns.org \
    --to=tj@kernel.org \
    --cc=axboe@fb.com \
    --cc=duanxiongchun@bytedance.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mhocko@suse.com \
    --cc=songmuchun@bytedance.com \
    --cc=viro@zeniv.linux.org.uk \
    --cc=willy@infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.