|
@@ -588,9 +588,6 @@ asmlinkage long sys_fchmod(unsigned int fd, mode_t mode)
|
|
|
err = mnt_want_write(file->f_path.mnt);
|
|
|
if (err)
|
|
|
goto out_putf;
|
|
|
- err = -EPERM;
|
|
|
- if (IS_IMMUTABLE(inode) || IS_APPEND(inode))
|
|
|
- goto out_drop_write;
|
|
|
mutex_lock(&inode->i_mutex);
|
|
|
if (mode == (mode_t) -1)
|
|
|
mode = inode->i_mode;
|
|
@@ -598,8 +595,6 @@ asmlinkage long sys_fchmod(unsigned int fd, mode_t mode)
|
|
|
newattrs.ia_valid = ATTR_MODE | ATTR_CTIME;
|
|
|
err = notify_change(dentry, &newattrs);
|
|
|
mutex_unlock(&inode->i_mutex);
|
|
|
-
|
|
|
-out_drop_write:
|
|
|
mnt_drop_write(file->f_path.mnt);
|
|
|
out_putf:
|
|
|
fput(file);
|
|
@@ -623,11 +618,6 @@ asmlinkage long sys_fchmodat(int dfd, const char __user *filename,
|
|
|
error = mnt_want_write(nd.path.mnt);
|
|
|
if (error)
|
|
|
goto dput_and_out;
|
|
|
-
|
|
|
- error = -EPERM;
|
|
|
- if (IS_IMMUTABLE(inode) || IS_APPEND(inode))
|
|
|
- goto out_drop_write;
|
|
|
-
|
|
|
mutex_lock(&inode->i_mutex);
|
|
|
if (mode == (mode_t) -1)
|
|
|
mode = inode->i_mode;
|
|
@@ -635,8 +625,6 @@ asmlinkage long sys_fchmodat(int dfd, const char __user *filename,
|
|
|
newattrs.ia_valid = ATTR_MODE | ATTR_CTIME;
|
|
|
error = notify_change(nd.path.dentry, &newattrs);
|
|
|
mutex_unlock(&inode->i_mutex);
|
|
|
-
|
|
|
-out_drop_write:
|
|
|
mnt_drop_write(nd.path.mnt);
|
|
|
dput_and_out:
|
|
|
path_put(&nd.path);
|
|
@@ -651,18 +639,10 @@ asmlinkage long sys_chmod(const char __user *filename, mode_t mode)
|
|
|
|
|
|
static int chown_common(struct dentry * dentry, uid_t user, gid_t group)
|
|
|
{
|
|
|
- struct inode * inode;
|
|
|
+ struct inode *inode = dentry->d_inode;
|
|
|
int error;
|
|
|
struct iattr newattrs;
|
|
|
|
|
|
- error = -ENOENT;
|
|
|
- if (!(inode = dentry->d_inode)) {
|
|
|
- printk(KERN_ERR "chown_common: NULL inode\n");
|
|
|
- goto out;
|
|
|
- }
|
|
|
- error = -EPERM;
|
|
|
- if (IS_IMMUTABLE(inode) || IS_APPEND(inode))
|
|
|
- goto out;
|
|
|
newattrs.ia_valid = ATTR_CTIME;
|
|
|
if (user != (uid_t) -1) {
|
|
|
newattrs.ia_valid |= ATTR_UID;
|
|
@@ -678,7 +658,7 @@ static int chown_common(struct dentry * dentry, uid_t user, gid_t group)
|
|
|
mutex_lock(&inode->i_mutex);
|
|
|
error = notify_change(dentry, &newattrs);
|
|
|
mutex_unlock(&inode->i_mutex);
|
|
|
-out:
|
|
|
+
|
|
|
return error;
|
|
|
}
|
|
|
|