]> git.baikalelectronics.ru Git - kernel.git/commit
dm: initialize non-blk-mq queue data before queue is used
authorMikulas Patocka <mpatocka@redhat.com>
Tue, 27 Oct 2015 23:06:55 +0000 (19:06 -0400)
committerMike Snitzer <snitzer@redhat.com>
Fri, 30 Oct 2015 02:09:40 +0000 (22:09 -0400)
commit1f83211ece0b510a509f56af73f59eb2d806d505
tree9e3fa163b68180e4d0ddc3466d04c91d4e7e3a5f
parentb6e71ecdebaed073a70399404c1cfc28185af01a
dm: initialize non-blk-mq queue data before queue is used

Commit 347192a20b2b0a5bd2f9ccca9010e8a97a92c229 ("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: 347192a20b2b ("dm: add full blk-mq support to request-based DM")
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Cc: stable@vger.kernel.org # v4.1+
drivers/md/dm.c