diff mbox series

blk-mq: fix up placement of debugfs directory of queue files

Message ID 20190706155032.GA3106@kroah.com (mailing list archive)
State New, archived
Headers show
Series blk-mq: fix up placement of debugfs directory of queue files | expand

Commit Message

Greg Kroah-Hartman July 6, 2019, 3:50 p.m. UTC
When the blk-mq debugfs file creation logic was "cleaned up" it was
cleaned up too much, causing the queue file to not be created in the
correct location.  Turns out the check for the directory being present
is needed as if that has not happened yet, the files should not be
created, and the function will be called later on in the initialization
code so that the files can be created in the correct location.

Fixes: 6cfc0081b046 ("blk-mq: no need to check return value of debugfs_create functions")
Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: linux-block@vger.kernel.org
Cc: stable <stable@vger.kernel.org> # 5.2+
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 block/blk-mq-debugfs.c | 7 +++++++
 1 file changed, 7 insertions(+)

Comments

Jens Axboe July 6, 2019, 4:07 p.m. UTC | #1
On 7/6/19 9:50 AM, Greg Kroah-Hartman wrote:
> When the blk-mq debugfs file creation logic was "cleaned up" it was
> cleaned up too much, causing the queue file to not be created in the
> correct location.  Turns out the check for the directory being present
> is needed as if that has not happened yet, the files should not be
> created, and the function will be called later on in the initialization
> code so that the files can be created in the correct location.

How about we shove this in for 5.2 final? Trivial enough to do, and it
would suck to have 5.2 released with this. Though not sure what
devices this actually impacts, I haven't noticed anything awry on
my setups?
Greg Kroah-Hartman July 6, 2019, 4:50 p.m. UTC | #2
On Sat, Jul 06, 2019 at 10:07:14AM -0600, Jens Axboe wrote:
> On 7/6/19 9:50 AM, Greg Kroah-Hartman wrote:
> > When the blk-mq debugfs file creation logic was "cleaned up" it was
> > cleaned up too much, causing the queue file to not be created in the
> > correct location.  Turns out the check for the directory being present
> > is needed as if that has not happened yet, the files should not be
> > created, and the function will be called later on in the initialization
> > code so that the files can be created in the correct location.
> 
> How about we shove this in for 5.2 final? Trivial enough to do, and it
> would suck to have 5.2 released with this.

Sure, no objection from me!

> Though not sure what devices this actually impacts, I haven't noticed
> anything awry on my setups?

I can easily trigger this with loop devices.  I know Stephen reported
this and I don't know if that was the driver that caused it for him.  I
have also seen this happen in syzbot boot logs already, but again, don't
know what block devices they are using that causes this.

thanks,

greg k-h
diff mbox series

Patch

diff --git a/block/blk-mq-debugfs.c b/block/blk-mq-debugfs.c
index 2489ddbb21db..3afe327f816f 100644
--- a/block/blk-mq-debugfs.c
+++ b/block/blk-mq-debugfs.c
@@ -934,6 +934,13 @@  void blk_mq_debugfs_register_sched(struct request_queue *q)
 {
 	struct elevator_type *e = q->elevator->type;
 
+	/*
+	 * If the parent directory has not been created yet, return, we will be
+	 * called again later on and the directory/files will be created then.
+	 */
+	if (!q->debugfs_dir)
+		return;
+
 	if (!e->queue_debugfs_attrs)
 		return;