debugfs: Remove broken no-mount mode
debugfs access modes were added in Linux 5.10 (Dec 2020) [1], but the no-mount mode has behaved effectively the same as the off mode since Linux 5.12 (Apr 2021) [2]. The only difference is the specific error code returned by the debugfs_create_* functions, which is -ENOENT in no-mount mode and -EPERM in off mode. Given that no-mount hasn't worked for several years with no complaints, just remove it. [1]a24c6f7bc9("debugfs: Add access restriction option") [2]bc6de804d3("debugfs: be more robust at handling improper input in debugfs_lookup()")56348560d4("debugfs: do not attempt to create a new file before the filesystem is initalized") Signed-off-by: Aaron Thompson <dev@aaront.org> Link: https://patch.msgid.link/20251120102222.18371-3-dev@null.aaront.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
3ae94a55d0
commit
f278809475
@@ -1113,12 +1113,8 @@
|
|||||||
|
|
||||||
debugfs= [KNL,EARLY] This parameter enables what is exposed to
|
debugfs= [KNL,EARLY] This parameter enables what is exposed to
|
||||||
userspace and debugfs internal clients.
|
userspace and debugfs internal clients.
|
||||||
Format: { on, no-mount, off }
|
Format: { on, off }
|
||||||
on: All functions are enabled.
|
on: All functions are enabled.
|
||||||
no-mount:
|
|
||||||
Filesystem is not registered but kernel clients can
|
|
||||||
access APIs and a crashkernel can be used to read
|
|
||||||
its content. There is nothing to mount.
|
|
||||||
off: Filesystem is not registered and clients
|
off: Filesystem is not registered and clients
|
||||||
get a -EPERM as result when trying to register files
|
get a -EPERM as result when trying to register files
|
||||||
or directories within debugfs.
|
or directories within debugfs.
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
static struct vfsmount *debugfs_mount;
|
static struct vfsmount *debugfs_mount;
|
||||||
static int debugfs_mount_count;
|
static int debugfs_mount_count;
|
||||||
static bool debugfs_registered;
|
static bool debugfs_registered;
|
||||||
static unsigned int debugfs_allow __ro_after_init = DEFAULT_DEBUGFS_ALLOW_BITS;
|
static bool debugfs_enabled __ro_after_init = IS_ENABLED(DEBUG_FS_ALLOW_ALL);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Don't allow access attributes to be changed whilst the kernel is locked down
|
* Don't allow access attributes to be changed whilst the kernel is locked down
|
||||||
@@ -365,7 +365,7 @@ static struct dentry *debugfs_start_creating(const char *name,
|
|||||||
struct dentry *dentry;
|
struct dentry *dentry;
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
if (!(debugfs_allow & DEBUGFS_ALLOW_API))
|
if (!debugfs_enabled)
|
||||||
return ERR_PTR(-EPERM);
|
return ERR_PTR(-EPERM);
|
||||||
|
|
||||||
if (!debugfs_initialized())
|
if (!debugfs_initialized())
|
||||||
@@ -885,21 +885,25 @@ static int __init debugfs_kernel(char *str)
|
|||||||
{
|
{
|
||||||
if (str) {
|
if (str) {
|
||||||
if (!strcmp(str, "on"))
|
if (!strcmp(str, "on"))
|
||||||
debugfs_allow = DEBUGFS_ALLOW_API | DEBUGFS_ALLOW_MOUNT;
|
debugfs_enabled = true;
|
||||||
else if (!strcmp(str, "no-mount"))
|
|
||||||
debugfs_allow = DEBUGFS_ALLOW_API;
|
|
||||||
else if (!strcmp(str, "off"))
|
else if (!strcmp(str, "off"))
|
||||||
debugfs_allow = 0;
|
debugfs_enabled = false;
|
||||||
|
else if (!strcmp(str, "no-mount")) {
|
||||||
|
pr_notice("debugfs=no-mount is a deprecated alias "
|
||||||
|
"for debugfs=off\n");
|
||||||
|
debugfs_enabled = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
early_param("debugfs", debugfs_kernel);
|
early_param("debugfs", debugfs_kernel);
|
||||||
|
|
||||||
static int __init debugfs_init(void)
|
static int __init debugfs_init(void)
|
||||||
{
|
{
|
||||||
int retval;
|
int retval;
|
||||||
|
|
||||||
if (!(debugfs_allow & DEBUGFS_ALLOW_MOUNT))
|
if (!debugfs_enabled)
|
||||||
return -EPERM;
|
return -EPERM;
|
||||||
|
|
||||||
retval = sysfs_create_mount_point(kernel_kobj, "debug");
|
retval = sysfs_create_mount_point(kernel_kobj, "debug");
|
||||||
|
|||||||
@@ -55,17 +55,4 @@ enum {
|
|||||||
HAS_IOCTL = 16
|
HAS_IOCTL = 16
|
||||||
};
|
};
|
||||||
|
|
||||||
#define DEBUGFS_ALLOW_API BIT(0)
|
|
||||||
#define DEBUGFS_ALLOW_MOUNT BIT(1)
|
|
||||||
|
|
||||||
#ifdef CONFIG_DEBUG_FS_ALLOW_ALL
|
|
||||||
#define DEFAULT_DEBUGFS_ALLOW_BITS (DEBUGFS_ALLOW_MOUNT | DEBUGFS_ALLOW_API)
|
|
||||||
#endif
|
|
||||||
#ifdef CONFIG_DEBUG_FS_DISALLOW_MOUNT
|
|
||||||
#define DEFAULT_DEBUGFS_ALLOW_BITS (DEBUGFS_ALLOW_API)
|
|
||||||
#endif
|
|
||||||
#ifdef CONFIG_DEBUG_FS_ALLOW_NONE
|
|
||||||
#define DEFAULT_DEBUGFS_ALLOW_BITS (0)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* _DEBUGFS_INTERNAL_H_ */
|
#endif /* _DEBUGFS_INTERNAL_H_ */
|
||||||
|
|||||||
@@ -679,7 +679,7 @@ choice
|
|||||||
help
|
help
|
||||||
This selects the default access restrictions for debugfs.
|
This selects the default access restrictions for debugfs.
|
||||||
It can be overridden with kernel command line option
|
It can be overridden with kernel command line option
|
||||||
debugfs=[on,no-mount,off]. The restrictions apply for API access
|
debugfs=[on,off]. The restrictions apply for API access
|
||||||
and filesystem registration.
|
and filesystem registration.
|
||||||
|
|
||||||
config DEBUG_FS_ALLOW_ALL
|
config DEBUG_FS_ALLOW_ALL
|
||||||
@@ -688,13 +688,6 @@ config DEBUG_FS_ALLOW_ALL
|
|||||||
No restrictions apply. Both API and filesystem registration
|
No restrictions apply. Both API and filesystem registration
|
||||||
is on. This is the normal default operation.
|
is on. This is the normal default operation.
|
||||||
|
|
||||||
config DEBUG_FS_DISALLOW_MOUNT
|
|
||||||
bool "Do not register debugfs as filesystem"
|
|
||||||
help
|
|
||||||
The API is open but filesystem is not loaded. Clients can still do
|
|
||||||
their work and read with debug tools that do not need
|
|
||||||
debugfs filesystem.
|
|
||||||
|
|
||||||
config DEBUG_FS_ALLOW_NONE
|
config DEBUG_FS_ALLOW_NONE
|
||||||
bool "No access"
|
bool "No access"
|
||||||
help
|
help
|
||||||
|
|||||||
Reference in New Issue
Block a user