diff options
author | Ming Lei <ming.lei@canonical.com> | 2015-01-29 15:17:27 +0300 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2015-01-29 19:30:51 +0300 |
commit | e09aae7edec1d20824c60a6f0ca4589f99ada17b (patch) | |
tree | 1cf7f6b2434f356f9dab4104bd5ecbfa85228799 /block/blk-sysfs.c | |
parent | 74170118b26e55b611de5210f47657118a03a0e1 (diff) | |
download | linux-e09aae7edec1d20824c60a6f0ca4589f99ada17b.tar.xz |
blk-mq: release mq's kobjects in blk_release_queue()
The kobject memory inside blk-mq hctx/ctx shouldn't have been freed
before the kobject is released because driver core can access it freely
before its release.
We can't do that in all ctx/hctx/mq_kobj's release handler because
it can be run before blk_cleanup_queue().
Given mq_kobj shouldn't have been introduced, this patch simply moves
mq's release into blk_release_queue().
Reported-by: Sasha Levin <sasha.levin@oracle.com>
Signed-off-by: Ming Lei <ming.lei@canonical.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'block/blk-sysfs.c')
-rw-r--r-- | block/blk-sysfs.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c index 935ea2aa0730..faaf36ade7eb 100644 --- a/block/blk-sysfs.c +++ b/block/blk-sysfs.c @@ -517,6 +517,8 @@ static void blk_release_queue(struct kobject *kobj) if (!q->mq_ops) blk_free_flush_queue(q->fq); + else + blk_mq_release(q); blk_trace_shutdown(q); |