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
This commit is contained in:
commit
4f5ed1318c
@ -428,8 +428,19 @@ release it yourself.
|
|||||||
--
|
--
|
||||||
[mandatory]
|
[mandatory]
|
||||||
d_alloc_root() is gone, along with a lot of bugs caused by code
|
d_alloc_root() is gone, along with a lot of bugs caused by code
|
||||||
misusing it. Replacement: d_make_root(inode). The difference is,
|
misusing it. Replacement: d_make_root(inode). On success d_make_root(inode)
|
||||||
d_make_root() drops the reference to inode if dentry allocation fails.
|
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]
|
[mandatory]
|
||||||
|
@ -11618,9 +11618,7 @@ void perf_event_delayed_put(struct task_struct *task)
|
|||||||
|
|
||||||
struct file *perf_event_get(unsigned int fd)
|
struct file *perf_event_get(unsigned int fd)
|
||||||
{
|
{
|
||||||
struct file *file;
|
struct file *file = fget(fd);
|
||||||
|
|
||||||
file = fget_raw(fd);
|
|
||||||
if (!file)
|
if (!file)
|
||||||
return ERR_PTR(-EBADF);
|
return ERR_PTR(-EBADF);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user