aboutsummaryrefslogtreecommitdiffstats
path: root/fs/file_table.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/file_table.c')
-rw-r--r--fs/file_table.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/file_table.c b/fs/file_table.c
index bc4563fe791d..0fbcacc3ea75 100644
--- a/fs/file_table.c
+++ b/fs/file_table.c
@@ -36,7 +36,9 @@ static struct percpu_counter nr_files __cacheline_aligned_in_smp;
36 36
37static inline void file_free_rcu(struct rcu_head *head) 37static inline void file_free_rcu(struct rcu_head *head)
38{ 38{
39 struct file *f = container_of(head, struct file, f_u.fu_rcuhead); 39 struct file *f = container_of(head, struct file, f_u.fu_rcuhead);
40
41 put_cred(f->f_cred);
40 kmem_cache_free(filp_cachep, f); 42 kmem_cache_free(filp_cachep, f);
41} 43}
42 44
@@ -121,8 +123,7 @@ struct file *get_empty_filp(void)
121 INIT_LIST_HEAD(&f->f_u.fu_list); 123 INIT_LIST_HEAD(&f->f_u.fu_list);
122 atomic_long_set(&f->f_count, 1); 124 atomic_long_set(&f->f_count, 1);
123 rwlock_init(&f->f_owner.lock); 125 rwlock_init(&f->f_owner.lock);
124 f->f_uid = cred->fsuid; 126 f->f_cred = get_cred(cred);
125 f->f_gid = cred->fsgid;
126 eventpoll_init_file(f); 127 eventpoll_init_file(f);
127 /* f->f_version: 0 */ 128 /* f->f_version: 0 */
128 return f; 129 return f;