mirror of
https://gitlab.com/apparmor/apparmor.git
synced 2025-03-04 08:24:42 +01:00
86 lines
2.6 KiB
Diff
86 lines
2.6 KiB
Diff
From: Andreas Gruenbacher <agruen@suse.de>
|
|
Subject: Remove redundant may_create() argument
|
|
|
|
Signed-off-by: Andreas Gruenbacher <agruen@suse.de>
|
|
|
|
---
|
|
fs/namei.c | 22 ++++++++++------------
|
|
1 file changed, 10 insertions(+), 12 deletions(-)
|
|
|
|
--- a/fs/namei.c
|
|
+++ b/fs/namei.c
|
|
@@ -1462,16 +1462,14 @@ static int may_delete(struct inode *dir,
|
|
* 3. We should have write and exec permissions on dir
|
|
* 4. We can't do it if dir is immutable (done in permission())
|
|
*/
|
|
-static inline int may_create(struct inode *dir, struct dentry *child,
|
|
- struct nameidata2 *nd)
|
|
+static inline int may_create(struct nameidata2 *nd, struct dentry *child)
|
|
{
|
|
if (child->d_inode)
|
|
return -EEXIST;
|
|
- if (IS_DEADDIR(dir))
|
|
+ if (IS_DEADDIR(nd->dentry->d_inode))
|
|
return -ENOENT;
|
|
- if (nd)
|
|
- nd->flags |= LOOKUP_CONTINUE;
|
|
- return permission(dir,MAY_WRITE | MAY_EXEC, nd);
|
|
+ nd->flags |= LOOKUP_CONTINUE;
|
|
+ return permission(nd->dentry->d_inode, MAY_WRITE | MAY_EXEC, nd);
|
|
}
|
|
|
|
/*
|
|
@@ -1537,7 +1535,7 @@ void unlock_rename(struct dentry *p1, st
|
|
int vfs_create(struct nameidata2 *nd, struct dentry *dentry, int mode)
|
|
{
|
|
struct inode *dir = nd->dentry->d_inode;
|
|
- int error = may_create(dir, dentry, nd);
|
|
+ int error = may_create(nd, dentry);
|
|
|
|
if (error)
|
|
return error;
|
|
@@ -1883,7 +1881,7 @@ EXPORT_SYMBOL_GPL(lookup_create);
|
|
int vfs_mknod(struct nameidata2 *nd, struct dentry *dentry, int mode, dev_t dev)
|
|
{
|
|
struct inode *dir = nd->dentry->d_inode;
|
|
- int error = may_create(dir, dentry, nd);
|
|
+ int error = may_create(nd, dentry);
|
|
|
|
if (error)
|
|
return error;
|
|
@@ -1963,7 +1961,7 @@ asmlinkage long sys_mknod(const char __u
|
|
int vfs_mkdir(struct nameidata2 *nd, struct dentry *dentry, int mode)
|
|
{
|
|
struct inode *dir = nd->dentry->d_inode;
|
|
- int error = may_create(dir, dentry, nd);
|
|
+ int error = may_create(nd, dentry);
|
|
|
|
if (error)
|
|
return error;
|
|
@@ -2232,7 +2230,7 @@ int vfs_symlink(struct nameidata2 *nd, s
|
|
const char *oldname, int mode)
|
|
{
|
|
struct inode *dir = nd->dentry->d_inode;
|
|
- int error = may_create(dir, dentry, nd);
|
|
+ int error = may_create(nd, dentry);
|
|
|
|
if (error)
|
|
return error;
|
|
@@ -2304,7 +2302,7 @@ int vfs_link(struct nameidata2 *old_nd,
|
|
if (!inode)
|
|
return -ENOENT;
|
|
|
|
- error = may_create(dir, new_dentry, new_parent);
|
|
+ error = may_create(new_parent, new_dentry);
|
|
if (error)
|
|
return error;
|
|
|
|
@@ -2522,7 +2520,7 @@ int vfs_rename(struct nameidata2 *old_nd
|
|
return error;
|
|
|
|
if (!new_dentry->d_inode)
|
|
- error = may_create(new_dir, new_dentry, new_nd);
|
|
+ error = may_create(new_nd, new_dentry);
|
|
else
|
|
error = may_delete(new_dir, new_dentry, is_dir);
|
|
if (error)
|