diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c index 04ec425b44f4581c54742f827f558b02173ba3f7..da0ee8cc15a726a537e9c37b03a2ea47c49bb6f2 100644 --- a/kernel/trace/blktrace.c +++ b/kernel/trace/blktrace.c @@ -534,8 +534,18 @@ static int do_blk_trace_setup(struct request_queue *q, char *name, dev_t dev, else #endif bt->dir = dir = debugfs_create_dir(buts->name, blk_debugfs_root); - if (!dir) + + /* + * As blktrace relies on debugfs for its interface the debugfs directory + * is required, contrary to the usual mantra of not checking for debugfs + * files or directories. + */ + if (IS_ERR_OR_NULL(dir)) { + pr_warn("debugfs_dir not present for %s so skipping\n", + buts->name); + ret = -ENOENT; goto err; + } bt->dev = dev; atomic_set(&bt->dropped, 0);