There is no need to keep around the dentry pointers for the debugfs
files as they will all be automatically removed when the subdir is
removed. So save the space and logic involved in keeping them around by
just getting rid of them entirely.
By doing this change, we remove one of the last in-kernel user that was
storing the result of debugfs_create_bool(), so that api can be cleaned
up.
Cc: Kalle Valo <redacted>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Jakub Kicinski <kuba@kernel.org>
Cc: Kees Cook <redacted>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Jason Gunthorpe <jgg@ziepe.ca>
Cc: Chao Yu <chao@kernel.org>
Cc: Leon Romanovsky <leon@kernel.org>
Cc: linux-wireless@vger.kernel.org
Cc: b43-dev@lists.infradead.org
Cc: netdev@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/net/wireless/broadcom/b43/debugfs.c | 34 +++------------------
drivers/net/wireless/broadcom/b43/debugfs.h | 3 --
2 files changed, 5 insertions(+), 32 deletions(-)
Note, I can take this through my debugfs tree if wanted, that way I can
clean up the debugfs_create_bool() api at the same time. Otherwise it's
fine, I can wait until next -rc1 for that to happen.
v2: remove X/N from subject, it is a stand-alone patch.
@@ -70,8 +69,6 @@ struct b43_dfsentry {/* Enabled/Disabled list for the dynamic debugging features. */booldyn_debug[__B43_NR_DYNDBG];-/* Dentries for the dynamic debugging entries. */-structdentry*dyn_debug_dentries[__B43_NR_DYNDBG];};boolb43_debug(structb43_wldev*dev,enumb43_dyndbgfeature);
From: Jeff Johnson <hidden> Date: 2021-05-18 19:29:58
On 2021-05-18 09:33, Greg Kroah-Hartman wrote:
There is no need to keep around the dentry pointers for the debugfs
files as they will all be automatically removed when the subdir is
removed. So save the space and logic involved in keeping them around
by
just getting rid of them entirely.
By doing this change, we remove one of the last in-kernel user that was
storing the result of debugfs_create_bool(), so that api can be cleaned
up.
Question not about this specific change, but the general concept
of keeping (or not keeping) dentry pointers. In the ath drivers,
as well as in an out-of-tree driver for Android, we keep a
debugfs dentry pointer to use as a param to relay_open().
Will we still be able to have a dentry pointer for this purpose?
Or better, is there a recommended way to get a dentry pointer
NOT associated with debugfs at all (which would be ideal for
Android where debugfs is disabled).
Thanks,
Jeff
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora
Forum,
a Linux Foundation Collaborative Project
From: Jeff Johnson <hidden> Date: 2021-05-18 22:01:01
On 2021-05-18 12:29, Jeff Johnson wrote:
On 2021-05-18 09:33, Greg Kroah-Hartman wrote:
quoted
There is no need to keep around the dentry pointers for the debugfs
files as they will all be automatically removed when the subdir is
removed. So save the space and logic involved in keeping them around
by
just getting rid of them entirely.
By doing this change, we remove one of the last in-kernel user that
was
storing the result of debugfs_create_bool(), so that api can be
cleaned
up.
Question not about this specific change, but the general concept
of keeping (or not keeping) dentry pointers. In the ath drivers,
as well as in an out-of-tree driver for Android, we keep a
debugfs dentry pointer to use as a param to relay_open().
Will we still be able to have a dentry pointer for this purpose?
Or better, is there a recommended way to get a dentry pointer
NOT associated with debugfs at all (which would be ideal for
Android where debugfs is disabled).
Answering one of my questions: The dentry passed to relay_open() comes
from debugfs_create_dir() which is expected to return a dentry.
Would still like guidance on if there is a recommended way to get a
dentry not associated with debugfs.
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora
Forum,
a Linux Foundation Collaborative Project
On Tue, May 18, 2021 at 03:00:44PM -0700, Jeff Johnson wrote:
On 2021-05-18 12:29, Jeff Johnson wrote:
quoted
On 2021-05-18 09:33, Greg Kroah-Hartman wrote:
quoted
There is no need to keep around the dentry pointers for the debugfs
files as they will all be automatically removed when the subdir is
removed. So save the space and logic involved in keeping them
around by
just getting rid of them entirely.
By doing this change, we remove one of the last in-kernel user that
was
storing the result of debugfs_create_bool(), so that api can be
cleaned
up.
Question not about this specific change, but the general concept
of keeping (or not keeping) dentry pointers. In the ath drivers,
as well as in an out-of-tree driver for Android, we keep a
debugfs dentry pointer to use as a param to relay_open().
Will we still be able to have a dentry pointer for this purpose?
Or better, is there a recommended way to get a dentry pointer
NOT associated with debugfs at all (which would be ideal for
Android where debugfs is disabled).
Answering one of my questions: The dentry passed to relay_open() comes
from debugfs_create_dir() which is expected to return a dentry.
Would still like guidance on if there is a recommended way to get a
dentry not associated with debugfs.
What do you exactly mean by "not associated with debugfs"?
And why are you passing a debugfs dentry to relay_open()? That feels
really wrong and fragile.
Ideally I want to get rid of the "raw" dentry that debugfs returns to
callers, as it has caused odd problems in the past, but that's a very
long-term project...
thanks,
greg k-h
From: Jeff Johnson <hidden> Date: 2021-05-19 15:05:07
On 2021-05-18 22:05, Greg Kroah-Hartman wrote:
On Tue, May 18, 2021 at 03:00:44PM -0700, Jeff Johnson wrote:
quoted
On 2021-05-18 12:29, Jeff Johnson wrote:
Would still like guidance on if there is a recommended way to get a
dentry not associated with debugfs.
What do you exactly mean by "not associated with debugfs"?
And why are you passing a debugfs dentry to relay_open()? That feels
really wrong and fragile.
I don't know the history but the relay documentation tells us:
"If you want a directory structure to contain your relay files,
you should create it using the host filesystem’s directory
creation function, e.g. debugfs_create_dir()..."
So my guess is that the original implementation followed that
advice. I see 5 clients of this functionality, and all 5 pass a
dentry returned from debugfs_create_dir():
drivers/gpu/drm/i915/gt/uc/intel_guc_log.c, line 384
drivers/net/wireless/ath/ath10k/spectral.c, line 534
drivers/net/wireless/ath/ath11k/spectral.c, line 902
drivers/net/wireless/ath/ath9k/common-spectral.c, line 1077
kernel/trace/blktrace.c, line 549
Jeff
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora
Forum,
a Linux Foundation Collaborative Project
On Wed, May 19, 2021 at 08:04:59AM -0700, Jeff Johnson wrote:
On 2021-05-18 22:05, Greg Kroah-Hartman wrote:
quoted
On Tue, May 18, 2021 at 03:00:44PM -0700, Jeff Johnson wrote:
quoted
On 2021-05-18 12:29, Jeff Johnson wrote:
Would still like guidance on if there is a recommended way to get a
dentry not associated with debugfs.
What do you exactly mean by "not associated with debugfs"?
And why are you passing a debugfs dentry to relay_open()? That feels
really wrong and fragile.
I don't know the history but the relay documentation tells us:
"If you want a directory structure to contain your relay files,
you should create it using the host filesystem’s directory
creation function, e.g. debugfs_create_dir()..."
So my guess is that the original implementation followed that
advice. I see 5 clients of this functionality, and all 5 pass a
dentry returned from debugfs_create_dir():
drivers/gpu/drm/i915/gt/uc/intel_guc_log.c, line 384
drivers/net/wireless/ath/ath10k/spectral.c, line 534
drivers/net/wireless/ath/ath11k/spectral.c, line 902
drivers/net/wireless/ath/ath9k/common-spectral.c, line 1077
kernel/trace/blktrace.c, line 549
Ah, that's just the "parent" dentry for the relayfs file. That's fine,
not a big deal, debugfs will always provide a way for you to get that if
needed.
thanks,
greg k-h
From: Jeff Johnson <hidden> Date: 2021-05-19 15:57:06
On 2021-05-19 08:42, Greg Kroah-Hartman wrote:
On Wed, May 19, 2021 at 08:04:59AM -0700, Jeff Johnson wrote:
quoted
On 2021-05-18 22:05, Greg Kroah-Hartman wrote:
quoted
On Tue, May 18, 2021 at 03:00:44PM -0700, Jeff Johnson wrote:
quoted
On 2021-05-18 12:29, Jeff Johnson wrote:
Would still like guidance on if there is a recommended way to get a
dentry not associated with debugfs.
What do you exactly mean by "not associated with debugfs"?
And why are you passing a debugfs dentry to relay_open()? That feels
really wrong and fragile.
I don't know the history but the relay documentation tells us:
"If you want a directory structure to contain your relay files,
you should create it using the host filesystem’s directory
creation function, e.g. debugfs_create_dir()..."
So my guess is that the original implementation followed that
advice. I see 5 clients of this functionality, and all 5 pass a
dentry returned from debugfs_create_dir():
drivers/gpu/drm/i915/gt/uc/intel_guc_log.c, line 384
drivers/net/wireless/ath/ath10k/spectral.c, line 534
drivers/net/wireless/ath/ath11k/spectral.c, line 902
drivers/net/wireless/ath/ath9k/common-spectral.c, line 1077
kernel/trace/blktrace.c, line 549
Ah, that's just the "parent" dentry for the relayfs file. That's fine,
not a big deal, debugfs will always provide a way for you to get that
if
needed.
Unless debugfs is disabled, like on Android, which is the real problem
I'm
trying to solve.
Jeff
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora
Forum,
a Linux Foundation Collaborative Project
On Wed, May 19, 2021 at 08:57:00AM -0700, Jeff Johnson wrote:
On 2021-05-19 08:42, Greg Kroah-Hartman wrote:
quoted
On Wed, May 19, 2021 at 08:04:59AM -0700, Jeff Johnson wrote:
quoted
On 2021-05-18 22:05, Greg Kroah-Hartman wrote:
quoted
On Tue, May 18, 2021 at 03:00:44PM -0700, Jeff Johnson wrote:
quoted
On 2021-05-18 12:29, Jeff Johnson wrote:
Would still like guidance on if there is a recommended way to get a
dentry not associated with debugfs.
What do you exactly mean by "not associated with debugfs"?
And why are you passing a debugfs dentry to relay_open()? That feels
really wrong and fragile.
I don't know the history but the relay documentation tells us:
"If you want a directory structure to contain your relay files,
you should create it using the host filesystem’s directory
creation function, e.g. debugfs_create_dir()..."
So my guess is that the original implementation followed that
advice. I see 5 clients of this functionality, and all 5 pass a
dentry returned from debugfs_create_dir():
drivers/gpu/drm/i915/gt/uc/intel_guc_log.c, line 384
drivers/net/wireless/ath/ath10k/spectral.c, line 534
drivers/net/wireless/ath/ath11k/spectral.c, line 902
drivers/net/wireless/ath/ath9k/common-spectral.c, line 1077
kernel/trace/blktrace.c, line 549
Ah, that's just the "parent" dentry for the relayfs file. That's fine,
not a big deal, debugfs will always provide a way for you to get that if
needed.
Unless debugfs is disabled, like on Android, which is the real problem I'm
trying to solve.
Then use some other filesystem to place your relay file in. A relay
file is not a file that userspace should rely on for normal operation,
so why do you need it at all?
What tools/operation requires access to this file that systems without
debugfs support is causing problems on?
thanks,
greg k-h