FAILED: patch "[PATCH] zram: fix race between backing_dev_show and backing_dev_store" failed to apply to 4.14-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 4.14-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
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]>
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 ;