]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
s390/hypfs: Avoid unnecessary ioctl registration in debugfs
authorPeter Oberparleiter <oberpar@linux.ibm.com>
Thu, 21 Aug 2025 12:35:40 +0000 (14:35 +0200)
committerAlexander Gordeev <agordeev@linux.ibm.com>
Thu, 21 Aug 2025 15:46:13 +0000 (17:46 +0200)
Currently, hypfs registers ioctl callbacks for all debugfs files,
despite only one file requiring them. This leads to unintended exposure
of unused interfaces to user space and can trigger side effects such as
restricted access when kernel lockdown is enabled.

Restrict ioctl registration to only those files that implement ioctl
functionality to avoid interface clutter and unnecessary access
restrictions.

Tested-by: Mete Durlu <meted@linux.ibm.com>
Reviewed-by: Vasily Gorbik <gor@linux.ibm.com>
Fixes: 5496197f9b08 ("debugfs: Restrict debugfs when the kernel is locked down")
Signed-off-by: Peter Oberparleiter <oberpar@linux.ibm.com>
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
arch/s390/hypfs/hypfs_dbfs.c

index 5d9effb0867cde480c7126fd5efd8e7851c59dab..e74eb8f9b23a5b1a1edf7a217a9a6afead7b1ab4 100644 (file)
@@ -66,23 +66,27 @@ static long dbfs_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
        long rc;
 
        mutex_lock(&df->lock);
-       if (df->unlocked_ioctl)
-               rc = df->unlocked_ioctl(file, cmd, arg);
-       else
-               rc = -ENOTTY;
+       rc = df->unlocked_ioctl(file, cmd, arg);
        mutex_unlock(&df->lock);
        return rc;
 }
 
-static const struct file_operations dbfs_ops = {
+static const struct file_operations dbfs_ops_ioctl = {
        .read           = dbfs_read,
        .unlocked_ioctl = dbfs_ioctl,
 };
 
+static const struct file_operations dbfs_ops = {
+       .read           = dbfs_read,
+};
+
 void hypfs_dbfs_create_file(struct hypfs_dbfs_file *df)
 {
-       df->dentry = debugfs_create_file(df->name, 0400, dbfs_dir, df,
-                                        &dbfs_ops);
+       const struct file_operations *fops = &dbfs_ops;
+
+       if (df->unlocked_ioctl)
+               fops = &dbfs_ops_ioctl;
+       df->dentry = debugfs_create_file(df->name, 0400, dbfs_dir, df, fops);
        mutex_init(&df->lock);
 }