From: Linus Torvalds Date: Wed, 13 Jun 2018 03:52:16 +0000 (-0700) Subject: Revert "debugfs: inode: debugfs_create_dir uses mode permission from parent" X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=f5b7769eb0400ec5217a47e41148a9f816ca1f9f;p=linux.git Revert "debugfs: inode: debugfs_create_dir uses mode permission from parent" This reverts commit 95cde3c59966f6371b6bcd9e4e2da2ba64ee9775. The commit had good intentions, but it breaks kvm-tool and qemu-kvm. With it in place, "lkvm run" just fails with Error: KVM_CREATE_VM ioctl Warning: Failed init: kvm__init which isn't a wonderful error message, but bisection pinpointed the problematic commit. The problem is almost certainly due to the special kvm debugfs entries created dynamically by kvm under /sys/kernel/debug/kvm/. See kvm_create_vm_debugfs() Bisected-and-reported-by: Linus Torvalds Cc: Wanpeng Li Cc: Greg Kroah-Hartman Cc: Thomas Richter Cc: Kees Cook Signed-off-by: Linus Torvalds --- diff --git a/fs/debugfs/inode.c b/fs/debugfs/inode.c index a913b12fc7f8d..13b01351dd1cb 100644 --- a/fs/debugfs/inode.c +++ b/fs/debugfs/inode.c @@ -512,9 +512,7 @@ struct dentry *debugfs_create_dir(const char *name, struct dentry *parent) if (unlikely(!inode)) return failed_creating(dentry); - if (!parent) - parent = debugfs_mount->mnt_root; - inode->i_mode = S_IFDIR | ((d_inode(parent)->i_mode & 0770)); + inode->i_mode = S_IFDIR | S_IRWXU | S_IRUGO | S_IXUGO; inode->i_op = &simple_dir_inode_operations; inode->i_fop = &simple_dir_operations;