FAILED: patch "[PATCH] zram: fix race between backing_dev_show and backing_dev_store" failed to apply to 4.19-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 4.19-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From f7daefe4231e57381d92c2e2ad905a899c28e402 Mon Sep 17 00:00:00 2001
From: Chenwandun <[email protected]>
Date: Fri, 18 Oct 2019 20:20:14 -0700
Subject: [PATCH] zram: fix race between backing_dev_show and backing_dev_store
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);gets the value of zram->backing_dev too early in backing_dev_show, which resultin the value being NULL at the beginning, and not NULL later.
backtrace:
d_path+0xcc/0x174 file_path+0x10/0x18 backing_dev_show+0x40/0xb4 dev_attr_show+0x20/0x54 sysfs_kf_seq_show+0x9c/0x10c kernfs_seq_show+0x28/0x30 seq_read+0x184/0x488 kernfs_fop_read+0x5c/0x1a4 __vfs_read+0x44/0x128 vfs_read+0xa0/0x138 SyS_read+0x54/0xb4
drivers/block/zram/zram_drv.c +3 -2
@@ -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 ;
Sasha Levin
maintainerQuoted 41 lines · On Sun, Oct 27, 2019 at 02:46:07PM +0100, [email protected] wrote:
The patch below does not apply to the 4.19-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From
f7daefe4231e57381d92c2e2ad905a899c28e402Mon Sep 17 00:00:00 2001
From: Chenwandun <[email protected]>
Date: Fri, 18 Oct 2019 20:20:14 -0700
Subject: [PATCH] zram: fix race betweenbacking_dev_showandbacking_dev_storeCPU0: CPU1:
backing_dev_showbacking_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);gets the value of
zram->backing_devtoo early inbacking_dev_show, which resultin the value being NULL at the beginning, and not NULL later.backtrace:
d_path+0xcc/0x174 file_path+0x10/0x18 backing_dev_show+0x40/0xb4 dev_attr_show+0x20/0x54 sysfs_kf_seq_show+0x9c/0x10c kernfs_seq_show+0x28/0x30 seq_read+0x184/0x488 kernfs_fop_read+0x5c/0x1a4 __vfs_read+0x44/0x128 vfs_read+0xa0/0x138 SyS_read+0x54/0xb4
Quoted 8 lines
Signed-off-by Chenwandun <[email protected]>Acked-by Minchan Kim <[email protected]>Cc Sergey Senozhatsky <[email protected]>Cc Jens Axboe <[email protected]>Cc <[email protected]> [4.14+]Signed-off-by Andrew Morton <[email protected]>Signed-off-by Linus Torvalds <[email protected]>
This conflict was due to the refactoring done by 7e5292831b346 ("zram:
refactor flags and writeback stuff"). I originally wanted to take it as well, but there were too many changes in 4.14, so instead I fixed up the original conflict and queued it up for 4.19 and 4.14.
Signature · 2 lines
Thanks, Sasha