tracefs: Fix potential null dereference in default_file_open()
authorBen Hutchings <ben@decadent.org.uk>
Mon, 12 Aug 2019 00:17:32 +0000 (01:17 +0100)
committerSalvatore Bonaccorso <carnil@debian.org>
Thu, 26 Sep 2019 12:19:06 +0000 (13:19 +0100)
The "open" operation in struct file_operations is optional, and
ftrace_event_id_fops does not set it.  In default_file_open(), after
all other checks have passed, return 0 if the underlying struct
file_operations does not implement open.

Fixes: 757ff7244358 ("tracefs: Restrict tracefs when the kernel is …")
References: https://bugs.debian.org/934304
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Gbp-Pq: Topic features/all/lockdown
Gbp-Pq: Name tracefs-fix-potential-null-dereference-in-default_fi.patch

fs/tracefs/inode.c

index 338c791c9a0e72ccd074b75dc000e232ef926bab..c59bd8a199850112c9b962e01d51bb01c51fe22f 100644 (file)
@@ -41,6 +41,8 @@ static int default_open_file(struct inode *inode, struct file *filp)
                return -EPERM;
 
        real_fops = dentry->d_fsdata;
+       if (!real_fops->open)
+               return 0;
        return real_fops->open(inode, filp);
 }