debugfs_lookup() doesn't like it if it is passed an illegal name pointer, or if the filesystem isn't even initialized yet. If either of these happen, it will crash the system, so fix it up by properly testing for valid input and that we are up and running before trying to find a file in the filesystem.
Reported-by: Michael Walle michael@walle.cc Tested-by: Michael Walle michael@walle.cc Tested-by: Marc Zyngier maz@kernel.org Cc: "Rafael J. Wysocki" rafael@kernel.org Cc: stable stable@vger.kernel.org Signed-off-by: Greg Kroah-Hartman gregkh@linuxfoundation.org --- fs/debugfs/inode.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/debugfs/inode.c b/fs/debugfs/inode.c index 2fcf66473436..bbeb563cbe78 100644 --- a/fs/debugfs/inode.c +++ b/fs/debugfs/inode.c @@ -297,7 +297,7 @@ struct dentry *debugfs_lookup(const char *name, struct dentry *parent) { struct dentry *dentry;
- if (IS_ERR(parent)) + if (!debugfs_initialized() || IS_ERR_OR_NULL(name) || IS_ERR(parent)) return NULL;
if (!parent)
Some subsystems want to add debugfs files at early boot, way before debugfs is initialized. This seems to work somehow as the vfs layer will not allow it to happen, but let's be explicit and test to ensure we are properly up and running before allowing files to be created.
Reported-by: Michael Walle michael@walle.cc Reported-by: Marc Zyngier maz@kernel.org Cc: "Rafael J. Wysocki" rafael@kernel.org Cc: stable stable@vger.kernel.org Signed-off-by: Greg Kroah-Hartman gregkh@linuxfoundation.org --- fs/debugfs/inode.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/fs/debugfs/inode.c b/fs/debugfs/inode.c index bbeb563cbe78..86c7f0489620 100644 --- a/fs/debugfs/inode.c +++ b/fs/debugfs/inode.c @@ -318,6 +318,9 @@ static struct dentry *start_creating(const char *name, struct dentry *parent) if (!(debugfs_allow & DEBUGFS_ALLOW_API)) return ERR_PTR(-EPERM);
+ if (!debugfs_initialized()) + return ERR_PTR(-ENOENT); + pr_debug("creating file '%s'\n", name);
if (IS_ERR(parent))
The following commit has been merged into the irq/irqchip-next branch of irqchip:
Commit-ID: fb0757f54bc9259c4c67907fd97ca3ad109d3f6f Gitweb: https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms/fb0757f54b... Author: Greg Kroah-Hartman gregkh@linuxfoundation.org AuthorDate: Thu, 18 Feb 2021 11:08:18 +01:00 Committer: Marc Zyngier maz@kernel.org CommitterDate: Thu, 18 Feb 2021 11:39:18
debugfs: do not attempt to create a new file before the filesystem is initalized
Some subsystems want to add debugfs files at early boot, way before debugfs is initialized. This seems to work somehow as the vfs layer will not allow it to happen, but let's be explicit and test to ensure we are properly up and running before allowing files to be created.
Reported-by: Michael Walle michael@walle.cc Reported-by: Marc Zyngier maz@kernel.org Cc: "Rafael J. Wysocki" rafael@kernel.org Cc: stable stable@vger.kernel.org Signed-off-by: Greg Kroah-Hartman gregkh@linuxfoundation.org Signed-off-by: Marc Zyngier maz@kernel.org Link: https://lore.kernel.org/r/20210218100818.3622317-2-gregkh@linuxfoundation.or... --- fs/debugfs/inode.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/fs/debugfs/inode.c b/fs/debugfs/inode.c index bbeb563..86c7f04 100644 --- a/fs/debugfs/inode.c +++ b/fs/debugfs/inode.c @@ -318,6 +318,9 @@ static struct dentry *start_creating(const char *name, struct dentry *parent) if (!(debugfs_allow & DEBUGFS_ALLOW_API)) return ERR_PTR(-EPERM);
+ if (!debugfs_initialized()) + return ERR_PTR(-ENOENT); + pr_debug("creating file '%s'\n", name);
if (IS_ERR(parent))
The following commit has been merged into the irq/irqchip-next branch of irqchip:
Commit-ID: 2ad058730606cb68e75177ee7e330e1f94ab7b4b Gitweb: https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms/2ad0587306... Author: Greg Kroah-Hartman gregkh@linuxfoundation.org AuthorDate: Thu, 18 Feb 2021 11:08:17 +01:00 Committer: Marc Zyngier maz@kernel.org CommitterDate: Thu, 18 Feb 2021 11:39:18
debugfs: be more robust at handling improper input in debugfs_lookup()
debugfs_lookup() doesn't like it if it is passed an illegal name pointer, or if the filesystem isn't even initialized yet. If either of these happen, it will crash the system, so fix it up by properly testing for valid input and that we are up and running before trying to find a file in the filesystem.
Reported-by: Michael Walle michael@walle.cc Tested-by: Michael Walle michael@walle.cc Tested-by: Marc Zyngier maz@kernel.org Cc: "Rafael J. Wysocki" rafael@kernel.org Cc: stable stable@vger.kernel.org Signed-off-by: Greg Kroah-Hartman gregkh@linuxfoundation.org Signed-off-by: Marc Zyngier maz@kernel.org Link: https://lore.kernel.org/r/20210218100818.3622317-1-gregkh@linuxfoundation.or... --- fs/debugfs/inode.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/debugfs/inode.c b/fs/debugfs/inode.c index 2fcf664..bbeb563 100644 --- a/fs/debugfs/inode.c +++ b/fs/debugfs/inode.c @@ -297,7 +297,7 @@ struct dentry *debugfs_lookup(const char *name, struct dentry *parent) { struct dentry *dentry;
- if (IS_ERR(parent)) + if (!debugfs_initialized() || IS_ERR_OR_NULL(name) || IS_ERR(parent)) return NULL;
if (!parent)
linux-stable-mirror@lists.linaro.org