Commit 31de8398 authored by Gui-Dong Han's avatar Gui-Dong Han Committed by Greg Kroah-Hartman
Browse files

debugfs: check for NULL pointer in debugfs_create_str()



Passing a NULL pointer to debugfs_create_str() leads to a NULL pointer
dereference when the debugfs file is read. Following upstream
discussions, forbid the creation of debugfs string files with NULL
pointers. Add a WARN_ON() to expose offending callers and return early.

Fixes: 9af0440e ("debugfs: Implement debugfs_create_str()")
Reported-by: default avataryangshiguang <yangshiguang@xiaomi.com>
Closes: https://lore.kernel.org/lkml/2025122221-gag-malt-75ba@gregkh/


Suggested-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarGui-Dong Han <hanguidong02@gmail.com>
Link: https://patch.msgid.link/20260323085930.88894-2-hanguidong02@gmail.com


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 56e3ee72
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -1127,7 +1127,7 @@ static const struct file_operations fops_str_wo = {
 *          directory dentry if set.  If this parameter is %NULL, then the
 *          file will be created in the root of the debugfs filesystem.
 * @value: a pointer to the variable that the file should read to and write
 *         from.
 *         from. This pointer and the string it points to must not be %NULL.
 *
 * This function creates a file in debugfs with the given name that
 * contains the value of the variable @value.  If the @mode variable is so
@@ -1136,6 +1136,9 @@ static const struct file_operations fops_str_wo = {
void debugfs_create_str(const char *name, umode_t mode,
			struct dentry *parent, char **value)
{
	if (WARN_ON(!value || !*value))
		return;

	debugfs_create_mode_unsafe(name, mode, parent, value, &fops_str,
				   &fops_str_ro, &fops_str_wo);
}