diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c
index 54ade89a1ad2..a1b341722693 100644
--- a/kernel/trace/blktrace.c
+++ b/kernel/trace/blktrace.c
@@ -735,7 +735,10 @@ int blk_trace_ioctl(struct block_device *bdev, unsigned cmd, char __user *arg)
 	int ret, start = 0;
 	char b[BDEVNAME_SIZE];
 
-	mutex_lock(&q->debugfs_mutex);
+	if (cmd == BLKTRACESETUP)
+		mutex_lock_nested(&q->debugfs_mutex, 0);
+	else
+		mutex_lock_nested(&q->debugfs_mutex, 1);
 
 	switch (cmd) {
 	case BLKTRACESETUP: