From: Chen Wandun <chenwandun@huawei.com> To: <minchan@kernel.org>, <ngupta@vflare.org>, <sergey.senozhatsky.work@gmail.com>, <axboe@kernel.dk>, <linux-kernel@vger.kernel.org>, <linux-block@vger.kernel.org> Cc: <chenwandun@huawei.com> Subject: [PATCH] zram: fix race between backing_dev_show and backing_dev_store Date: Mon, 14 Oct 2019 17:53:59 +0800 [thread overview] Message-ID: <1571046839-16814-1-git-send-email-chenwandun@huawei.com> (raw) From: Chenwandun <chenwandun@huawei.com> CPU0: CPU1: backing_dev_show backing_dev_store ...... ...... file = zram->backing_dev; down_read(&zram->init_lock); down_read(&zram->init_init_lock) file_path(file, ...); zram->backing_dev = backing_dev; up_read(&zram->init_lock); up_read(&zram->init_lock); get the value of zram->backing_dev too early in backing_dev_show, that will result the value may be NULL at the begining, and not NULL later. backtrace: [<ffffff8570e0f3ec>] d_path+0xcc/0x174 [<ffffff8570decd90>] file_path+0x10/0x18 [<ffffff85712f7630>] backing_dev_show+0x40/0xb4 [<ffffff85712c776c>] dev_attr_show+0x20/0x54 [<ffffff8570e835e4>] sysfs_kf_seq_show+0x9c/0x10c [<ffffff8570e82b98>] kernfs_seq_show+0x28/0x30 [<ffffff8570e1c580>] seq_read+0x184/0x488 [<ffffff8570e81ec4>] kernfs_fop_read+0x5c/0x1a4 [<ffffff8570dee0fc>] __vfs_read+0x44/0x128 [<ffffff8570dee310>] vfs_read+0xa0/0x138 [<ffffff8570dee860>] SyS_read+0x54/0xb4 Signed-off-by: Chenwandun <chenwandun@huawei.com> --- drivers/block/zram/zram_drv.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c index d58a359..4285e75 100644 --- a/drivers/block/zram/zram_drv.c +++ b/drivers/block/zram/zram_drv.c @@ -413,13 +413,14 @@ static void reset_bdev(struct zram *zram) static ssize_t backing_dev_show(struct device *dev, struct device_attribute *attr, char *buf) { + struct file *file; struct zram *zram = dev_to_zram(dev); - struct file *file = zram->backing_dev; char *p; ssize_t ret; down_read(&zram->init_lock); - if (!zram->backing_dev) { + file = zram->backing_dev; + if (!file) { memcpy(buf, "none\n", 5); up_read(&zram->init_lock); return 5; -- 2.7.4
next reply other threads:[~2019-10-14 9:47 UTC|newest] Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-10-14 9:53 Chen Wandun [this message] 2019-10-15 20:25 ` Minchan Kim
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=1571046839-16814-1-git-send-email-chenwandun@huawei.com \ --to=chenwandun@huawei.com \ --cc=axboe@kernel.dk \ --cc=linux-block@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=minchan@kernel.org \ --cc=ngupta@vflare.org \ --cc=sergey.senozhatsky.work@gmail.com \ --subject='Re: [PATCH] zram: fix race between backing_dev_show and backing_dev_store' \ /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
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).