Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp5975224ybi; Wed, 31 Jul 2019 06:21:08 -0700 (PDT) X-Google-Smtp-Source: APXvYqxN2UTFhl0/dwacUx6lDA4zRv4CtxQKP1ru8zfrhhz9YWCoU4oQYw+TVlK3BFwv1N0WNDqP X-Received: by 2002:a17:902:102c:: with SMTP id b41mr118301949pla.204.1564579268089; Wed, 31 Jul 2019 06:21:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564579268; cv=none; d=google.com; s=arc-20160816; b=0hmYt5bMxCUKgOCRopTfuSc4kj6ouXkUGasqqD9iFq1kObSLwxLAboav8+18Lxj9wv 4FoNkNQbeuj9EAfWZ1OVzbmgpMmoPdWQuU0f12uPmBCWue20qW1PtPfPDWB6MuhnVjMn b1gHVUXYkpqtZsvEUZx//nvYjV2IOoJsFFF9v9yV+6pLCWV9Pott7pCej4+t74xYczsC CXNVVZRZcZGRB3I81S64L8gnUzGtiTuMtYzjYA+MHIcZf3phAFafxggbIQIYOm0L4TOP OVfTJt+4cpyYizUSEcuoYQibe3Yqp2Ko9jqTJq3nIvgjBN9ReOc0c2l/x/gJeTwvPGNp AkMw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=ZwP7OcNdv80f6FJKCqiHSfAmtsYsUEd/zNF1suX+K08=; b=m5xzLUeqwvCemFgbwwn8yfl/v7r3rmNVB7R/3wPh+negVW7OUSkSjIIJiZHjrqxrUz Si4alO0wkAFBu5uJLhOTKdwvwIbc5O+mKzimM5xlVDBoId3drCmrh/IbvJ78VSLzMtYW ruiBdobTmwjWrTq9W3VBm4/H+RR8W/wm5vyK74lqxSh5GVEK95IrRM8sm7DlVnB2t4l1 2qeCItBeBV3qJJESr1yI0d5itYy/+mHkfEe0oobiXPFDvkH2AIZBV2KaSeV0BagxU24K WeaxBZr6Cy9b0WYlUhCbHG/1dj//CxWrGc0QUEoqUH04dQ5tgKHRMoiRXLkpOlG3hdae lrjQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=b9bLULyI; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 26si34403477pgs.520.2019.07.31.06.20.52; Wed, 31 Jul 2019 06:21:08 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=b9bLULyI; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729375AbfGaNRk (ORCPT + 99 others); Wed, 31 Jul 2019 09:17:40 -0400 Received: from mail.kernel.org ([198.145.29.99]:49352 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726804AbfGaNRi (ORCPT ); Wed, 31 Jul 2019 09:17:38 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 66BBF208E4; Wed, 31 Jul 2019 13:17:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1564579057; bh=/fJuh2BrCm/YkwllLX3B/FXV1b9lACjnAv5WC6FPK+c=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=b9bLULyIq0w4zRzwoxokLmLMtFCUbQqTppHGARqd5WmRlXJMZxHnw3Hrq2u9QO3rI 8mVV0M0FQVsIsib1EBQLDF6JDhRmWEjalOXaZyYTdmkLYNnecT/112VTrNtt509wF+ fhsT4y4utwlZrasPf3Y8AxQh8JYhVzP7OQcrarFI= From: Greg Kroah-Hartman To: Mark Brown , Takashi Iwai Cc: linux-kernel@vger.kernel.org, alsa-devel@alsa-project.org, Greg Kroah-Hartman , Liam Girdwood , Jaroslav Kysela , Ranjani Sridharan , Pierre-Louis Bossart Subject: [PATCH v2 3/3] ASoC: SOF: no need to check return value of debugfs_create functions Date: Wed, 31 Jul 2019 15:17:16 +0200 Message-Id: <20190731131716.9764-3-gregkh@linuxfoundation.org> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20190731131716.9764-1-gregkh@linuxfoundation.org> References: <20190731131716.9764-1-gregkh@linuxfoundation.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When calling debugfs functions, there is no need to ever check the return value. The function can work or not, but the code logic should never do something different based on this. Also, if a debugfs call fails, userspace is notified with an error in the log, so no need to log the error again. Because we no longer need to check the return value, there's no need to save the dentry returned by debugfs. Just use the dentry in the file pointer if we really need to figure out the "name" of the file being opened. Cc: Liam Girdwood Cc: Mark Brown Cc: Jaroslav Kysela Cc: Takashi Iwai Cc: Ranjani Sridharan Cc: Pierre-Louis Bossart Cc: alsa-devel@alsa-project.org Signed-off-by: Greg Kroah-Hartman --- v2: rebase on 5.3-rc1 change Subject line to match the subsystem better rework based on debugfs core now reporting errors. sound/soc/sof/debug.c | 49 +++++++++++++++------------------------- sound/soc/sof/sof-priv.h | 1 - sound/soc/sof/trace.c | 9 ++------ 3 files changed, 20 insertions(+), 39 deletions(-) diff --git a/sound/soc/sof/debug.c b/sound/soc/sof/debug.c index 2388477a965e..40940b2fe9d5 100644 --- a/sound/soc/sof/debug.c +++ b/sound/soc/sof/debug.c @@ -128,6 +128,7 @@ static ssize_t sof_dfsentry_write(struct file *file, const char __user *buffer, unsigned long ipc_duration_ms = 0; bool flood_duration_test = false; unsigned long ipc_count = 0; + struct dentry *dentry; int err; #endif size_t size; @@ -149,11 +150,12 @@ static ssize_t sof_dfsentry_write(struct file *file, const char __user *buffer, * ipc_duration_ms test floods the DSP for the time specified * in the debugfs entry. */ - if (strcmp(dfse->dfsentry->d_name.name, "ipc_flood_count") && - strcmp(dfse->dfsentry->d_name.name, "ipc_flood_duration_ms")) + dentry = file->f_path.dentry; + if (strcmp(dentry->d_name.name, "ipc_flood_count") && + strcmp(dentry->d_name.name, "ipc_flood_duration_ms")) return -EINVAL; - if (!strcmp(dfse->dfsentry->d_name.name, "ipc_flood_duration_ms")) + if (!strcmp(dentry->d_name.name, "ipc_flood_duration_ms")) flood_duration_test = true; /* test completion criterion */ @@ -219,6 +221,7 @@ static ssize_t sof_dfsentry_read(struct file *file, char __user *buffer, { struct snd_sof_dfsentry *dfse = file->private_data; struct snd_sof_dev *sdev = dfse->sdev; + struct dentry *dentry; loff_t pos = *ppos; size_t size_ret; int skip = 0; @@ -226,8 +229,9 @@ static ssize_t sof_dfsentry_read(struct file *file, char __user *buffer, u8 *buf; #if IS_ENABLED(CONFIG_SND_SOC_SOF_DEBUG_IPC_FLOOD_TEST) - if ((!strcmp(dfse->dfsentry->d_name.name, "ipc_flood_count") || - !strcmp(dfse->dfsentry->d_name.name, "ipc_flood_duration_ms")) && + dentry = file->f_path.dentry; + if ((!strcmp(dentry->d_name.name, "ipc_flood_count") || + !strcmp(dentry->d_name.name, "ipc_flood_duration_ms")) && dfse->cache_buf) { if (*ppos) return 0; @@ -290,8 +294,7 @@ static ssize_t sof_dfsentry_read(struct file *file, char __user *buffer, if (!pm_runtime_active(sdev->dev) && dfse->access_type == SOF_DEBUGFS_ACCESS_D0_ONLY) { dev_err(sdev->dev, - "error: debugfs entry %s cannot be read in DSP D3\n", - dfse->dfsentry->d_name.name); + "error: debugfs entry cannot be read in DSP D3\n"); kfree(buf); return -EINVAL; } @@ -356,17 +359,11 @@ int snd_sof_debugfs_io_item(struct snd_sof_dev *sdev, } #endif - dfse->dfsentry = debugfs_create_file(name, 0444, sdev->debugfs_root, - dfse, &sof_dfs_fops); - if (!dfse->dfsentry) { - /* can't rely on debugfs, only log error and keep going */ - dev_err(sdev->dev, "error: cannot create debugfs entry %s\n", - name); - } else { - /* add to dfsentry list */ - list_add(&dfse->list, &sdev->dfsentry_list); + debugfs_create_file(name, 0444, sdev->debugfs_root, dfse, + &sof_dfs_fops); - } + /* add to dfsentry list */ + list_add(&dfse->list, &sdev->dfsentry_list); return 0; } @@ -402,16 +399,10 @@ int snd_sof_debugfs_buf_item(struct snd_sof_dev *sdev, return -ENOMEM; #endif - dfse->dfsentry = debugfs_create_file(name, mode, sdev->debugfs_root, - dfse, &sof_dfs_fops); - if (!dfse->dfsentry) { - /* can't rely on debugfs, only log error and keep going */ - dev_err(sdev->dev, "error: cannot create debugfs entry %s\n", - name); - } else { - /* add to dfsentry list */ - list_add(&dfse->list, &sdev->dfsentry_list); - } + debugfs_create_file(name, mode, sdev->debugfs_root, dfse, + &sof_dfs_fops); + /* add to dfsentry list */ + list_add(&dfse->list, &sdev->dfsentry_list); return 0; } @@ -426,10 +417,6 @@ int snd_sof_dbg_init(struct snd_sof_dev *sdev) /* use "sof" as top level debugFS dir */ sdev->debugfs_root = debugfs_create_dir("sof", NULL); - if (IS_ERR_OR_NULL(sdev->debugfs_root)) { - dev_err(sdev->dev, "error: failed to create debugfs directory\n"); - return 0; - } /* init dfsentry list */ INIT_LIST_HEAD(&sdev->dfsentry_list); diff --git a/sound/soc/sof/sof-priv.h b/sound/soc/sof/sof-priv.h index b8c0b2a22684..79b6709d1874 100644 --- a/sound/soc/sof/sof-priv.h +++ b/sound/soc/sof/sof-priv.h @@ -228,7 +228,6 @@ enum sof_debugfs_access_type { /* FS entry for debug files that can expose DSP memories, registers */ struct snd_sof_dfsentry { - struct dentry *dfsentry; size_t size; enum sof_dfsentry_type type; /* diff --git a/sound/soc/sof/trace.c b/sound/soc/sof/trace.c index befed975161c..4c3cff031fd6 100644 --- a/sound/soc/sof/trace.c +++ b/sound/soc/sof/trace.c @@ -148,13 +148,8 @@ static int trace_debugfs_create(struct snd_sof_dev *sdev) dfse->size = sdev->dmatb.bytes; dfse->sdev = sdev; - dfse->dfsentry = debugfs_create_file("trace", 0444, sdev->debugfs_root, - dfse, &sof_dfs_trace_fops); - if (!dfse->dfsentry) { - /* can't rely on debugfs, only log error and keep going */ - dev_err(sdev->dev, - "error: cannot create debugfs entry for trace\n"); - } + debugfs_create_file("trace", 0444, sdev->debugfs_root, dfse, + &sof_dfs_trace_fops); return 0; } -- 2.22.0