diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2019-07-19 11:35:08 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2019-07-19 11:35:08 -0700 |
commit | 4f5ed1318c0108369a76f4a56242fbeea537abe9 (patch) | |
tree | e1092bbcf848124782edc05d931afbec27600357 | |
parent | d2fbf4b6d585e40f2369675148777abce3abd0e7 (diff) | |
parent | 02e5ad973883c36c0868b301b8357d9c455bb91c (diff) | |
download | linux-4f5ed1318c0108369a76f4a56242fbeea537abe9.tar.bz2 |
Merge branch 'work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull misc vfs updates from Al Viro:
"Assorted stuff"
* 'work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
perf_event_get(): don't bother with fget_raw()
vfs: update d_make_root() description
-rw-r--r-- | Documentation/filesystems/porting | 15 | ||||
-rw-r--r-- | kernel/events/core.c | 4 |
2 files changed, 14 insertions, 5 deletions
diff --git a/Documentation/filesystems/porting b/Documentation/filesystems/porting index 2813a19389fe..209672010fb4 100644 --- a/Documentation/filesystems/porting +++ b/Documentation/filesystems/porting @@ -428,8 +428,19 @@ release it yourself. -- [mandatory] d_alloc_root() is gone, along with a lot of bugs caused by code -misusing it. Replacement: d_make_root(inode). The difference is, -d_make_root() drops the reference to inode if dentry allocation fails. +misusing it. Replacement: d_make_root(inode). On success d_make_root(inode) +allocates and returns a new dentry instantiated with the passed in inode. +On failure NULL is returned and the passed in inode is dropped so the reference +to inode is consumed in all cases and failure handling need not do any cleanup +for the inode. If d_make_root(inode) is passed a NULL inode it returns NULL +and also requires no further error handling. Typical usage is: + + inode = foofs_new_inode(....); + s->s_root = d_make_inode(inode); + if (!s->s_root) + /* Nothing needed for the inode cleanup */ + return -ENOMEM; + ... -- [mandatory] diff --git a/kernel/events/core.c b/kernel/events/core.c index eea9d52b010c..026a14541a38 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -11618,9 +11618,7 @@ void perf_event_delayed_put(struct task_struct *task) struct file *perf_event_get(unsigned int fd) { - struct file *file; - - file = fget_raw(fd); + struct file *file = fget(fd); if (!file) return ERR_PTR(-EBADF); |