linux/drivers/md/bcache
Coly Li e599bfe543 bcache: only set BCACHE_DEV_WB_RUNNING when cached device attached
commit 1f0ffa6734 upstream.

When people set a writeback percent via sysfs file,
  /sys/block/bcache<N>/bcache/writeback_percent
current code directly sets BCACHE_DEV_WB_RUNNING to dc->disk.flags
and schedules kworker dc->writeback_rate_update.

If there is no cache set attached to, the writeback kernel thread is
not running indeed, running dc->writeback_rate_update does not make
sense and may cause NULL pointer deference when reference cache set
pointer inside update_writeback_rate().

This patch checks whether the cache set point (dc->disk.c) is NULL in
sysfs interface handler, and only set BCACHE_DEV_WB_RUNNING and
schedule dc->writeback_rate_update when dc->disk.c is not NULL (it
means the cache device is attached to a cache set).

This problem might be introduced from initial bcache commit, but
commit 3fd47bfe55 ("bcache: stop dc->writeback_rate_update properly")
changes part of the original code piece, so I add 'Fixes: 3fd47bfe55b0'
to indicate from which commit this patch can be applied.

Fixes: 3fd47bfe55 ("bcache: stop dc->writeback_rate_update properly")
Reported-by: Bjørn Forsman <bjorn.forsman@gmail.com>
Signed-off-by: Coly Li <colyli@suse.de>
Reviewed-by: Bjørn Forsman <bjorn.forsman@gmail.com>
Cc: stable@vger.kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-06-19 08:18:00 +02:00
..
alloc.c bcache: avoid clang -Wunintialized warning 2019-05-31 06:46:15 -07:00
bcache.h bcache: add separate workqueue for journal_write to avoid deadlock 2018-09-27 09:47:01 -06:00
bset.c bcache: fix stack corruption by PRECEDING_KEY() 2019-06-19 08:18:00 +02:00
bset.h bcache: fix stack corruption by PRECEDING_KEY() 2019-06-19 08:18:00 +02:00
btree.c bcache: fix miss key refill->end in writeback 2018-11-13 11:08:16 -08:00
btree.h bcache: style fixes for lines over 80 characters 2018-08-11 15:46:41 -06:00
closure.c bcache: add missing SPDX header 2018-08-11 15:46:42 -06:00
closure.h bcache: add the missing comments for smp_mb()/smp_wmb() 2018-08-11 15:46:42 -06:00
debug.c bcache: replace printk() by pr_*() routines 2018-08-11 15:46:41 -06:00
debug.h bcache: add identifier names to arguments of function definitions 2018-08-11 15:46:41 -06:00
extents.c bcache: replace printk() by pr_*() routines 2018-08-11 15:46:41 -06:00
extents.h bcache: add identifier names to arguments of function definitions 2018-08-11 15:46:41 -06:00
io.c bcache: fix typo 'succesfully' to 'successfully' 2018-08-11 15:46:42 -06:00
journal.c bcache: fix failure in journal relplay 2019-05-31 06:46:15 -07:00
journal.h bcache: add identifier names to arguments of function definitions 2018-08-11 15:46:41 -06:00
Kconfig for-4.19/post-20180822 2018-08-22 13:38:05 -07:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
movinggc.c bcache: style fix to add a blank line after declarations 2018-08-11 15:46:41 -06:00
request.c bcache: use (REQ_META|REQ_PRIO) to indicate bio for metadata 2019-03-23 20:10:13 +01:00
request.h bcache: add identifier names to arguments of function definitions 2018-08-11 15:46:41 -06:00
stats.c bcache: style fix to add a blank line after declarations 2018-08-11 15:46:41 -06:00
stats.h bcache: add identifier names to arguments of function definitions 2018-08-11 15:46:41 -06:00
super.c bcache: add failure check to run_cache_set() for journal replay 2019-05-31 06:46:15 -07:00
sysfs.c bcache: only set BCACHE_DEV_WB_RUNNING when cached device attached 2019-06-19 08:18:00 +02:00
sysfs.h bcache: improve sysfs_strtoul_clamp() 2019-04-05 22:33:09 +02:00
trace.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
util.c for-4.19/post-20180822 2018-08-22 13:38:05 -07:00
util.h for-4.19/post-20180822 2018-08-22 13:38:05 -07:00
writeback.c bcache: release dc->writeback_lock properly in bch_writeback_thread() 2018-08-22 15:06:29 -06:00
writeback.h bcache: never writeback a discard operation 2019-03-23 20:10:10 +01:00