mirror of
https://gitlab.com/apparmor/apparmor.git
synced 2025-03-05 00:41:03 +01:00
141 lines
3.9 KiB
Diff
141 lines
3.9 KiB
Diff
From: Andreas Gruenbacher <agruen@suse.de>
|
|
Subject: Pass struct path down to remove_suid and children
|
|
|
|
Required by a later patch that adds a struct vfsmount parameter to
|
|
notify_change().
|
|
|
|
Signed-off-by: Tony Jones <tonyj@suse.de>
|
|
Signed-off-by: Andreas Gruenbacher <agruen@suse.de>
|
|
Signed-off-by: John Johansen <jjohansen@suse.de>
|
|
|
|
---
|
|
|
|
fs/fuse/file.c | 2 +-
|
|
fs/ntfs/file.c | 2 +-
|
|
fs/splice.c | 4 ++--
|
|
fs/xfs/linux-2.6/xfs_lrw.c | 2 +-
|
|
include/linux/fs.h | 2 +-
|
|
mm/filemap.c | 16 ++++++++--------
|
|
mm/filemap_xip.c | 2 +-
|
|
7 files changed, 15 insertions(+), 15 deletions(-)
|
|
|
|
--- a/fs/fuse/file.c
|
|
+++ b/fs/fuse/file.c
|
|
@@ -893,7 +893,7 @@ static ssize_t fuse_file_aio_write(struc
|
|
if (count == 0)
|
|
goto out;
|
|
|
|
- err = remove_suid(file->f_path.dentry);
|
|
+ err = remove_suid(&file->f_path);
|
|
if (err)
|
|
goto out;
|
|
|
|
--- a/fs/ntfs/file.c
|
|
+++ b/fs/ntfs/file.c
|
|
@@ -2118,7 +2118,7 @@ static ssize_t ntfs_file_aio_write_noloc
|
|
goto out;
|
|
if (!count)
|
|
goto out;
|
|
- err = remove_suid(file->f_path.dentry);
|
|
+ err = remove_suid(&file->f_path);
|
|
if (err)
|
|
goto out;
|
|
file_update_time(file);
|
|
--- a/fs/splice.c
|
|
+++ b/fs/splice.c
|
|
@@ -763,7 +763,7 @@ generic_file_splice_write_nolock(struct
|
|
ssize_t ret;
|
|
int err;
|
|
|
|
- err = remove_suid(out->f_path.dentry);
|
|
+ err = remove_suid(&out->f_path);
|
|
if (unlikely(err))
|
|
return err;
|
|
|
|
@@ -821,7 +821,7 @@ generic_file_splice_write(struct pipe_in
|
|
ssize_t ret;
|
|
|
|
inode_double_lock(inode, pipe->inode);
|
|
- ret = remove_suid(out->f_path.dentry);
|
|
+ ret = remove_suid(&out->f_path);
|
|
if (likely(!ret))
|
|
ret = __splice_from_pipe(pipe, &sd, pipe_to_file);
|
|
inode_double_unlock(inode, pipe->inode);
|
|
--- a/fs/xfs/linux-2.6/xfs_lrw.c
|
|
+++ b/fs/xfs/linux-2.6/xfs_lrw.c
|
|
@@ -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 = -remove_suid(&file->f_path);
|
|
if (unlikely(error)) {
|
|
goto out_unlock_internal;
|
|
}
|
|
--- a/include/linux/fs.h
|
|
+++ b/include/linux/fs.h
|
|
@@ -1815,7 +1815,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 remove_suid(struct path *);
|
|
|
|
extern void __insert_inode_hash(struct inode *, unsigned long hashval);
|
|
extern void remove_inode_hash(struct inode *);
|
|
--- a/mm/filemap.c
|
|
+++ b/mm/filemap.c
|
|
@@ -1660,26 +1660,26 @@ int should_remove_suid(struct dentry *de
|
|
}
|
|
EXPORT_SYMBOL(should_remove_suid);
|
|
|
|
-static int __remove_suid(struct dentry *dentry, int kill)
|
|
+static int __remove_suid(struct path *path, int kill)
|
|
{
|
|
struct iattr newattrs;
|
|
|
|
newattrs.ia_valid = ATTR_FORCE | kill;
|
|
- return notify_change(dentry, &newattrs);
|
|
+ return notify_change(path->dentry, &newattrs);
|
|
}
|
|
|
|
-int remove_suid(struct dentry *dentry)
|
|
+int remove_suid(struct path *path)
|
|
{
|
|
- int killsuid = should_remove_suid(dentry);
|
|
- int killpriv = security_inode_need_killpriv(dentry);
|
|
+ int killsuid = should_remove_suid(path->dentry);
|
|
+ int killpriv = security_inode_need_killpriv(path->dentry);
|
|
int error = 0;
|
|
|
|
if (killpriv < 0)
|
|
return killpriv;
|
|
if (killpriv)
|
|
- error = security_inode_killpriv(dentry);
|
|
+ error = security_inode_killpriv(path->dentry);
|
|
if (!error && killsuid)
|
|
- error = __remove_suid(dentry, killsuid);
|
|
+ error = __remove_suid(path, killsuid);
|
|
|
|
return error;
|
|
}
|
|
@@ -2394,7 +2394,7 @@ __generic_file_aio_write_nolock(struct k
|
|
if (count == 0)
|
|
goto out;
|
|
|
|
- err = remove_suid(file->f_path.dentry);
|
|
+ err = remove_suid(&file->f_path);
|
|
if (err)
|
|
goto out;
|
|
|
|
--- a/mm/filemap_xip.c
|
|
+++ b/mm/filemap_xip.c
|
|
@@ -380,7 +380,7 @@ xip_file_write(struct file *filp, const
|
|
if (count == 0)
|
|
goto out_backing;
|
|
|
|
- ret = remove_suid(filp->f_path.dentry);
|
|
+ ret = remove_suid(&filp->f_path);
|
|
if (ret)
|
|
goto out_backing;
|
|
|