[patch 3/5] vfs: change remove_suid() to file_remove_suid()
authorMiklos Szeredi <mszeredi@suse.cz>
Tue, 24 Jun 2008 14:50:14 +0000 (16:50 +0200)
committerAl Viro <viro@zeniv.linux.org.uk>
Sun, 27 Jul 2008 00:53:16 +0000 (20:53 -0400)
All calls to remove_suid() are made with a file pointer, because
(similarly to file_update_time) it is called when the file is written.

Clean up callers by passing in a file instead of a dentry.

Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
fs/fuse/file.c
fs/ntfs/file.c
fs/splice.c
fs/xfs/linux-2.6/xfs_lrw.c
include/linux/fs.h
mm/filemap.c
mm/filemap_xip.c

index 67ff2c6a8f6309bc09746a65d29b8d55f0a90bb5..2bada6bbc317dbeab3887fbcd26ed9fe630b6148 100644 (file)
@@ -893,7 +893,7 @@ static ssize_t fuse_file_aio_write(struct kiocb *iocb, const struct iovec *iov,
        if (count == 0)
                goto out;
 
-       err = remove_suid(file->f_path.dentry);
+       err = file_remove_suid(file);
        if (err)
                goto out;
 
index 3c5550cd11d67b53a5d3ef6ff49dd6d4312f9d4c..d020866d42320dddd0ed6a8b9a9d31e572a42cab 100644 (file)
@@ -2118,7 +2118,7 @@ static ssize_t ntfs_file_aio_write_nolock(struct kiocb *iocb,
                goto out;
        if (!count)
                goto out;
-       err = remove_suid(file->f_path.dentry);
+       err = file_remove_suid(file);
        if (err)
                goto out;
        file_update_time(file);
index 47dc1a445d1f0953123668cae1633c797f2dcc7f..b30311ba8af6ff23ee45af51d07655e68c98fad2 100644 (file)
@@ -772,7 +772,7 @@ generic_file_splice_write_nolock(struct pipe_inode_info *pipe, struct file *out,
        ssize_t ret;
        int err;
 
-       err = remove_suid(out->f_path.dentry);
+       err = file_remove_suid(out);
        if (unlikely(err))
                return err;
 
@@ -830,7 +830,7 @@ generic_file_splice_write(struct pipe_inode_info *pipe, struct file *out,
        ssize_t ret;
 
        inode_double_lock(inode, pipe->inode);
-       ret = remove_suid(out->f_path.dentry);
+       ret = file_remove_suid(out);
        if (likely(!ret))
                ret = __splice_from_pipe(pipe, &sd, pipe_to_file);
        inode_double_unlock(inode, pipe->inode);
index 5e3b57516ec7293fe8bffe42cc995b9025780b8e..82333b3e118e7d6491589c5ad524b179e4feec96 100644 (file)
@@ -711,7 +711,7 @@ start:
             !capable(CAP_FSETID)) {
                error = xfs_write_clear_setuid(xip);
                if (likely(!error))
-                       error = -remove_suid(file->f_path.dentry);
+                       error = -file_remove_suid(file);
                if (unlikely(error)) {
                        goto out_unlock_internal;
                }
index 6c923c9b79bcdb6f5c4e1fa28287c4ca795130a8..1a3546e69f9e75d6f43c2e54fe2858ae8044116c 100644 (file)
@@ -1834,7 +1834,7 @@ extern void clear_inode(struct inode *);
 extern void destroy_inode(struct inode *);
 extern struct inode *new_inode(struct super_block *);
 extern int should_remove_suid(struct dentry *);
-extern int remove_suid(struct dentry *);
+extern int file_remove_suid(struct file *);
 
 extern void __insert_inode_hash(struct inode *, unsigned long hashval);
 extern void remove_inode_hash(struct inode *);
index 2ed8b0389c51a91d7dbc24fa210310d3986ca5fe..5de7633e1dbe5c4da6b749f9fbd5bfd9841a382b 100644 (file)
@@ -1758,8 +1758,9 @@ static int __remove_suid(struct dentry *dentry, int kill)
        return notify_change(dentry, &newattrs);
 }
 
-int remove_suid(struct dentry *dentry)
+int file_remove_suid(struct file *file)
 {
+       struct dentry *dentry = file->f_path.dentry;
        int killsuid = should_remove_suid(dentry);
        int killpriv = security_inode_need_killpriv(dentry);
        int error = 0;
@@ -1773,7 +1774,7 @@ int remove_suid(struct dentry *dentry)
 
        return error;
 }
-EXPORT_SYMBOL(remove_suid);
+EXPORT_SYMBOL(file_remove_suid);
 
 static size_t __iovec_copy_from_user_inatomic(char *vaddr,
                        const struct iovec *iov, size_t base, size_t bytes)
@@ -2529,7 +2530,7 @@ __generic_file_aio_write_nolock(struct kiocb *iocb, const struct iovec *iov,
        if (count == 0)
                goto out;
 
-       err = remove_suid(file->f_path.dentry);
+       err = file_remove_suid(file);
        if (err)
                goto out;
 
index 3e744abcce9daa8aada1487bd42e31b769c414bf..98a3f31ccd6ab2070aed454351c22279efa338f5 100644 (file)
@@ -380,7 +380,7 @@ xip_file_write(struct file *filp, const char __user *buf, size_t len,
        if (count == 0)
                goto out_backing;
 
-       ret = remove_suid(filp->f_path.dentry);
+       ret = file_remove_suid(filp);
        if (ret)
                goto out_backing;