• Mikulas Patocka's avatar
    dm: initialize non-blk-mq queue data before queue is used · ad5f498f
    Mikulas Patocka authored
    Commit bfebd1cd ("dm: add full blk-mq
    support to request-based DM") moves the initialization of the fields
    backing_dev_info.congested_fn, backing_dev_info.congested_data and
    queuedata from the function dm_init_md_queue (that is called when the
    device is created) to dm_init_old_md_queue (that is called after the
    device type is determined).
    
    There is no locking when accessing these variables, thus it is possible
    for other parts of the kernel to briefly see this data in a transient
    state (e.g. queue->backing_dev_info.congested_fn initialized and
    md->queue->backing_dev_info.congested_data uninitialized, resulting in
    passing an incorrect parameter to the function dm_any_congested).
    
    This queue data is left initialized for blk-mq devices even though they
    that don't use it.
    
    Fixes: bfebd1cd ("dm: add full blk-mq support to request-based DM")
    Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
    Cc: stable@vger.kernel.org # v4.1+
    ad5f498f
dm.c 81.8 KB