• Coly Li's avatar
    bcache: only set BCACHE_DEV_WB_RUNNING when cached device attached · 1f0ffa67
    Coly Li authored
    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 3fd47bfe ("bcache: stop dc->writeback_rate_update properly")
    changes part of the original code piece, so I add 'Fixes: 3fd47bfe'
    to indicate from which commit this patch can be applied.
    
    Fixes: 3fd47bfe ("bcache: stop dc->writeback_rate_update properly")
    Reported-by: default avatarBjørn Forsman <bjorn.forsman@gmail.com>
    Signed-off-by: default avatarColy Li <colyli@suse.de>
    Reviewed-by: default avatarBjørn Forsman <bjorn.forsman@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    1f0ffa67
sysfs.c 27.1 KB