diff options
Diffstat (limited to 'fs/file_table.c')
-rw-r--r-- | fs/file_table.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/fs/file_table.c b/fs/file_table.c index c3a5e2fd663b..768b58167543 100644 --- a/fs/file_table.c +++ b/fs/file_table.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <linux/eventpoll.h> | 16 | #include <linux/eventpoll.h> |
17 | #include <linux/rcupdate.h> | 17 | #include <linux/rcupdate.h> |
18 | #include <linux/mount.h> | 18 | #include <linux/mount.h> |
19 | #include <linux/capability.h> | ||
19 | #include <linux/cdev.h> | 20 | #include <linux/cdev.h> |
20 | #include <linux/fsnotify.h> | 21 | #include <linux/fsnotify.h> |
21 | 22 | ||
@@ -117,7 +118,7 @@ EXPORT_SYMBOL(get_empty_filp); | |||
117 | 118 | ||
118 | void fastcall fput(struct file *file) | 119 | void fastcall fput(struct file *file) |
119 | { | 120 | { |
120 | if (rcuref_dec_and_test(&file->f_count)) | 121 | if (atomic_dec_and_test(&file->f_count)) |
121 | __fput(file); | 122 | __fput(file); |
122 | } | 123 | } |
123 | 124 | ||
@@ -166,7 +167,7 @@ struct file fastcall *fget(unsigned int fd) | |||
166 | rcu_read_lock(); | 167 | rcu_read_lock(); |
167 | file = fcheck_files(files, fd); | 168 | file = fcheck_files(files, fd); |
168 | if (file) { | 169 | if (file) { |
169 | if (!rcuref_inc_lf(&file->f_count)) { | 170 | if (!atomic_inc_not_zero(&file->f_count)) { |
170 | /* File object ref couldn't be taken */ | 171 | /* File object ref couldn't be taken */ |
171 | rcu_read_unlock(); | 172 | rcu_read_unlock(); |
172 | return NULL; | 173 | return NULL; |
@@ -198,7 +199,7 @@ struct file fastcall *fget_light(unsigned int fd, int *fput_needed) | |||
198 | rcu_read_lock(); | 199 | rcu_read_lock(); |
199 | file = fcheck_files(files, fd); | 200 | file = fcheck_files(files, fd); |
200 | if (file) { | 201 | if (file) { |
201 | if (rcuref_inc_lf(&file->f_count)) | 202 | if (atomic_inc_not_zero(&file->f_count)) |
202 | *fput_needed = 1; | 203 | *fput_needed = 1; |
203 | else | 204 | else |
204 | /* Didn't get the reference, someone's freed */ | 205 | /* Didn't get the reference, someone's freed */ |
@@ -213,7 +214,7 @@ struct file fastcall *fget_light(unsigned int fd, int *fput_needed) | |||
213 | 214 | ||
214 | void put_filp(struct file *file) | 215 | void put_filp(struct file *file) |
215 | { | 216 | { |
216 | if (rcuref_dec_and_test(&file->f_count)) { | 217 | if (atomic_dec_and_test(&file->f_count)) { |
217 | security_file_free(file); | 218 | security_file_free(file); |
218 | file_kill(file); | 219 | file_kill(file); |
219 | file_free(file); | 220 | file_free(file); |