Commit f2788094 authored by Aaron Thompson's avatar Aaron Thompson Committed by Greg Kroah-Hartman
Browse files

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] a24c6f7b ("debugfs: Add access restriction option")

[2] bc6de804 ("debugfs: be more robust at handling improper input in debugfs_lookup()")
    56348560 ("debugfs: do not attempt to create a new file before the filesystem is initalized")

Signed-off-by: default avatarAaron Thompson <dev@aaront.org>
Link: https://patch.msgid.link/20251120102222.18371-3-dev@null.aaront.org


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 3ae94a55
Loading
Loading
Loading
Loading
+1 −5
Original line number Diff line number Diff line
@@ -1113,12 +1113,8 @@

	debugfs=    	[KNL,EARLY] This parameter enables what is exposed to
			userspace and debugfs internal clients.
			Format: { on, no-mount, off }
			Format: { on, off }
			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
			        get a -EPERM as result when trying to register files
				or directories within debugfs.
+11 −7
Original line number Diff line number Diff line
@@ -35,7 +35,7 @@
static struct vfsmount *debugfs_mount;
static int debugfs_mount_count;
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
@@ -365,7 +365,7 @@ static struct dentry *debugfs_start_creating(const char *name,
	struct dentry *dentry;
	int error;

	if (!(debugfs_allow & DEBUGFS_ALLOW_API))
	if (!debugfs_enabled)
		return ERR_PTR(-EPERM);

	if (!debugfs_initialized())
@@ -885,21 +885,25 @@ static int __init debugfs_kernel(char *str)
{
	if (str) {
		if (!strcmp(str, "on"))
			debugfs_allow = DEBUGFS_ALLOW_API | DEBUGFS_ALLOW_MOUNT;
		else if (!strcmp(str, "no-mount"))
			debugfs_allow = DEBUGFS_ALLOW_API;
			debugfs_enabled = true;
		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;
}
early_param("debugfs", debugfs_kernel);

static int __init debugfs_init(void)
{
	int retval;

	if (!(debugfs_allow & DEBUGFS_ALLOW_MOUNT))
	if (!debugfs_enabled)
		return -EPERM;

	retval = sysfs_create_mount_point(kernel_kobj, "debug");
+0 −13
Original line number Diff line number Diff line
@@ -55,17 +55,4 @@ enum {
	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_ */
+1 −8
Original line number Diff line number Diff line
@@ -679,7 +679,7 @@ choice
	help
	  This selects the default access restrictions for debugfs.
	  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.

config DEBUG_FS_ALLOW_ALL
@@ -688,13 +688,6 @@ config DEBUG_FS_ALLOW_ALL
	  No restrictions apply. Both API and filesystem registration
	  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
	bool "No access"
	help