From: Bart Van Assche <bart.vanassche@sandisk.com>
To: Jens Axboe <axboe@kernel.dk>
Cc: <linux-block@vger.kernel.org>,
Bart Van Assche <bart.vanassche@sandisk.com>
Subject: [PATCH v5 05/10] blk-mq: Unregister debugfs attributes earlier
Date: Tue, 25 Apr 2017 13:37:40 -0700 [thread overview]
Message-ID: <20170425203745.19946-6-bart.vanassche@sandisk.com> (raw)
In-Reply-To: <20170425203745.19946-1-bart.vanassche@sandisk.com>
One of the debugfs attributes allows to run a queue. Since running
a queue after a queue has entered the "dead" state is not allowed
and triggers a use-after-free, unregister the debugfs attributes
before a queue reaches the "dead" state.
Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Reviewed-by: Omar Sandoval <osandov@fb.com>
---
block/blk-core.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/block/blk-core.c b/block/blk-core.c
index a49b0830aaaf..33c91a4bee97 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -566,6 +566,11 @@ void blk_cleanup_queue(struct request_queue *q)
spin_lock_irq(lock);
if (!q->mq_ops)
__blk_drain_queue(q, true);
+ spin_unlock_irq(lock);
+
+ blk_mq_debugfs_unregister_mq(q);
+
+ spin_lock_irq(lock);
queue_flag_set(QUEUE_FLAG_DEAD, q);
spin_unlock_irq(lock);
--
2.12.2
next prev parent reply other threads:[~2017-04-25 20:37 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-25 20:37 [PATCH v5 00/10] blk-mq debugfs patches for kernel v4.12 Bart Van Assche
2017-04-25 20:37 ` [PATCH v5 01/10] blk-mq: Register <dev>/queue/mq after having registered <dev>/queue Bart Van Assche
2017-04-25 20:37 ` [PATCH v5 02/10] blk-mq: Let blk_mq_debugfs_register() look up the queue name Bart Van Assche
2017-04-25 20:37 ` [PATCH v5 03/10] blk-mq-debugfs: Rename functions for registering and unregistering the mq directory Bart Van Assche
2017-04-25 20:37 ` [PATCH v5 04/10] blk-mq: Only unregister hctxs for which registration succeeded Bart Van Assche
2017-04-25 21:18 ` Omar Sandoval
2017-04-25 20:37 ` Bart Van Assche [this message]
2017-04-25 21:30 ` [PATCH v5 05/10] blk-mq: Unregister debugfs attributes earlier Omar Sandoval
2017-04-25 21:41 ` Jens Axboe
2017-04-26 20:38 ` Bart Van Assche
2017-04-25 22:24 ` Bart Van Assche
2017-04-25 22:29 ` Jens Axboe
2017-04-25 22:30 ` Omar Sandoval
2017-04-26 20:32 ` Bart Van Assche
2017-04-26 20:37 ` Jens Axboe
2017-04-26 20:37 ` Omar Sandoval
2017-04-25 20:37 ` [PATCH v5 06/10] blk-mq: Move the "state" debugfs attribute one level down Bart Van Assche
2017-04-25 20:37 ` [PATCH v5 07/10] blk-mq: Make blk_flags_show() callers append a newline character Bart Van Assche
2017-04-25 20:37 ` [PATCH v5 08/10] blk-mq: Show operation, cmd_flags and rq_flags names Bart Van Assche
2017-04-25 20:37 ` [PATCH v5 09/10] blk-mq: Add blk_mq_ops.show_rq() Bart Van Assche
2017-04-25 21:35 ` Omar Sandoval
2017-04-25 20:37 ` [PATCH v5 10/10] scsi: Implement blk_mq_ops.show_rq() Bart Van Assche
2017-04-25 20:37 ` Bart Van Assche
2017-04-25 21:39 ` Omar Sandoval
2017-04-25 22:06 ` Bart Van Assche
2017-04-25 22:06 ` Bart Van Assche
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170425203745.19946-6-bart.vanassche@sandisk.com \
--to=bart.vanassche@sandisk.com \
--cc=axboe@kernel.dk \
--cc=linux-block@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.