Messages in this thread | | | Date | Wed, 30 Oct 2013 17:40:46 +0100 | From | Paolo Bonzini <> | Subject | Re: [PATCH 3.12-rc7] KVM: Fix modprobe failure for kvm_intel/kvm_amd |
| |
Il 30/10/2013 17:23, Greg KH ha scritto: >> > static inline struct dentry *debugfs_create_dir(const char *name, >> > struct dentry *parent) >> > { >> > return ERR_PTR(-ENODEV); >> > } >> > >> > which would oops a lot of the current callers. > It will oops? Really? Where? That shouldn't happen at all.
Doh, it obviously won't because the bogus pointer value will never be dereferenced by the dummy debugfs_create_file.
>> > Very few places use the currently correct idiom >> > >> > if (IS_ERR(root) || !root) >> > >> > but it's very ugly... Perhaps debugfs_create_dir *should* return an >> > error-valued pointer after all. > Or just don't care about the return value, and all will work out just > fine, right?
Debugfs files would then be created in the debugfs root, which is not nice.
/* If the parent is not specified, we create it in the root. * We need the root dentry to do this, which is in the super * block. A pointer to that is in the struct vfsmount that we * have around. */ if (!parent) parent = debugfs_mount->mnt_root;
This is all documented right:
/** * debugfs_create_file - create a file in the debugfs filesystem * ... * This function will return a pointer to a dentry if it succeeds. This * pointer must be passed to the debugfs_remove() function when the file is * to be removed (no automatic cleanup happens if your module is unloaded, * you are responsible here.) If an error occurs, %NULL will be returned. * * If debugfs is not enabled in the kernel, the value -%ENODEV will be * returned. */
so I guess it's just part of the API.
Paolo
| |