From: Yufen Yu <yuyufen@huawei.com>
To: <axboe@kernel.dk>, <linux-block@vger.kernel.org>,
<linux-fsdevel@vger.kernel.org>
Cc: <tj@kernel.org>, <jack@suse.cz>, <bvanassche@acm.org>, <tytso@mit.edu>
Subject: [PATCH v2 0/7] bdi: fix use-after-free for bdi device
Date: Wed, 26 Feb 2020 19:18:44 +0800 [thread overview]
Message-ID: <20200226111851.55348-1-yuyufen@huawei.com> (raw)
Hi, all
We have reported a use-after-free crash for bdi device in
__blkg_prfill_rwstat() (see Patch #3). The bug is caused by printing
device kobj->name while the device and kobj->name has been freed by
bdi_unregister().
In fact, commit 68f23b8906 "memcg: fix a crash in wb_workfn when
a device disappears" has tried to address the issue, but the code
is till somewhat racy after that commit.
In this patchset, we try to protect device lifetime with RCU, avoiding
the device been freed when others used.
A way which maybe fix the problem is copy device name into special
memory (as discussed in [0]), but that is also need lock protect.
[0] https://lore.kernel.org/linux-block/20200219125505.GP16121@quack2.suse.cz/
V1:
https://www.spinics.net/lists/linux-block/msg49693.html
Add a new spinlock and copy kobj->name into caller buffer.
Or using synchronize_rcu() to wait until reader complete.
Yufen Yu (7):
blk-wbt: use bdi_dev_name() to get device name
fs/ceph: use bdi_dev_name() to get device name
bdi: protect device lifetime with RCU
bdi: create a new function bdi_get_dev_name()
bfq: fix potential kernel crash when print dev err info
memcg: fix crash in wb_workfn when bdi unregister
blk-wbt: replace bdi_dev_name() with bdi_get_dev_name()
block/bfq-iosched.c | 7 +++--
block/blk-cgroup.c | 8 ++++--
block/genhd.c | 4 +--
fs/ceph/debugfs.c | 2 +-
fs/ext4/super.c | 2 +-
fs/fs-writeback.c | 4 ++-
include/linux/backing-dev-defs.h | 8 +++++-
include/linux/backing-dev.h | 31 +++++++++++++++++++--
include/trace/events/wbt.h | 8 +++---
include/trace/events/writeback.h | 38 ++++++++++++--------------
mm/backing-dev.c | 59 +++++++++++++++++++++++++++++++++-------
11 files changed, 124 insertions(+), 47 deletions(-)
--
2.16.2.dirty
next reply other threads:[~2020-02-26 11:11 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-26 11:18 Yufen Yu [this message]
2020-02-26 11:18 ` [PATCH v2 1/7] blk-wbt: use bdi_dev_name() to get device name Yufen Yu
2020-02-26 11:18 ` [PATCH v2 2/7] fs/ceph: " Yufen Yu
2020-02-26 11:18 ` [PATCH v2 3/7] bdi: protect device lifetime with RCU Yufen Yu
2020-03-04 17:05 ` Tejun Heo
2020-03-04 17:22 ` Greg Kroah-Hartman
2020-03-04 17:23 ` Greg Kroah-Hartman
2020-03-04 18:50 ` Tejun Heo
2020-03-04 19:10 ` Theodore Y. Ts'o
2020-03-04 19:15 ` Tejun Heo
2020-03-04 20:05 ` Greg Kroah-Hartman
2020-03-05 1:22 ` Tejun Heo
2020-03-06 16:25 ` Greg Kroah-Hartman
2020-03-07 9:13 ` Yufen Yu
2020-02-26 11:18 ` [PATCH v2 4/7] bdi: create a new function bdi_get_dev_name() Yufen Yu
2020-02-26 11:18 ` [PATCH v2 5/7] bfq: fix potential kernel crash when print dev err info Yufen Yu
2020-02-26 11:18 ` [PATCH v2 6/7] memcg: fix crash in wb_workfn when bdi unregister Yufen Yu
2020-02-26 11:18 ` [PATCH v2 7/7] blk-wbt: replace bdi_dev_name() with bdi_get_dev_name() Yufen Yu
2020-03-04 17:29 ` [PATCH v2 0/7] bdi: fix use-after-free for bdi device Greg KH
2020-03-04 18:57 ` Tejun Heo
2020-03-04 20:07 ` Greg KH
2020-03-04 19:02 ` Theodore Y. Ts'o
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=20200226111851.55348-1-yuyufen@huawei.com \
--to=yuyufen@huawei.com \
--cc=axboe@kernel.dk \
--cc=bvanassche@acm.org \
--cc=jack@suse.cz \
--cc=linux-block@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=tj@kernel.org \
--cc=tytso@mit.edu \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).