projects
/
deliverable
/
linux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
CRED: Wrap current->cred and a few other accessors
[deliverable/linux.git]
/
fs
/
file_table.c
diff --git
a/fs/file_table.c
b/fs/file_table.c
index f45a4493f9e71b5afe52640f453a33bce0603c70..bc4563fe791d1281e91240e21be740ff218054dd 100644
(file)
--- a/
fs/file_table.c
+++ b/
fs/file_table.c
@@
-94,7
+94,7
@@
int proc_nr_files(ctl_table *table, int write, struct file *filp,
*/
struct file *get_empty_filp(void)
{
*/
struct file *get_empty_filp(void)
{
-
struct task_struct *tsk
;
+
const struct cred *cred = current_cred()
;
static int old_max;
struct file * f;
static int old_max;
struct file * f;
@@
-118,12
+118,11
@@
struct file *get_empty_filp(void)
if (security_file_alloc(f))
goto fail_sec;
if (security_file_alloc(f))
goto fail_sec;
- tsk = current;
INIT_LIST_HEAD(&f->f_u.fu_list);
atomic_long_set(&f->f_count, 1);
rwlock_init(&f->f_owner.lock);
INIT_LIST_HEAD(&f->f_u.fu_list);
atomic_long_set(&f->f_count, 1);
rwlock_init(&f->f_owner.lock);
- f->f_uid =
tsk
->fsuid;
- f->f_gid =
tsk
->fsgid;
+ f->f_uid =
cred
->fsuid;
+ f->f_gid =
cred
->fsgid;
eventpoll_init_file(f);
/* f->f_version: 0 */
return f;
eventpoll_init_file(f);
/* f->f_version: 0 */
return f;
@@
-161,7
+160,7
@@
EXPORT_SYMBOL(get_empty_filp);
* code should be moved into this function.
*/
struct file *alloc_file(struct vfsmount *mnt, struct dentry *dentry,
* code should be moved into this function.
*/
struct file *alloc_file(struct vfsmount *mnt, struct dentry *dentry,
- mode_t mode, const struct file_operations *fop)
+
f
mode_t mode, const struct file_operations *fop)
{
struct file *file;
struct path;
{
struct file *file;
struct path;
@@
-193,7
+192,7
@@
EXPORT_SYMBOL(alloc_file);
* of this should be moving to alloc_file().
*/
int init_file(struct file *file, struct vfsmount *mnt, struct dentry *dentry,
* of this should be moving to alloc_file().
*/
int init_file(struct file *file, struct vfsmount *mnt, struct dentry *dentry,
- mode_t mode, const struct file_operations *fop)
+
f
mode_t mode, const struct file_operations *fop)
{
int error = 0;
file->f_path.dentry = dentry;
{
int error = 0;
file->f_path.dentry = dentry;
@@
-269,6
+268,10
@@
void __fput(struct file *file)
eventpoll_release(file);
locks_remove_flock(file);
eventpoll_release(file);
locks_remove_flock(file);
+ if (unlikely(file->f_flags & FASYNC)) {
+ if (file->f_op && file->f_op->fasync)
+ file->f_op->fasync(-1, file, 0);
+ }
if (file->f_op && file->f_op->release)
file->f_op->release(inode, file);
security_file_free(file);
if (file->f_op && file->f_op->release)
file->f_op->release(inode, file);
security_file_free(file);
This page took
0.062371 seconds
and
5
git commands to generate.