|
@@ -357,6 +357,10 @@ nfs_setattr(struct dentry *dentry, struct iattr *attr)
|
|
|
|
|
|
nfs_inc_stats(inode, NFSIOS_VFSSETATTR);
|
|
nfs_inc_stats(inode, NFSIOS_VFSSETATTR);
|
|
|
|
|
|
|
|
+ /* skip mode change if it's just for clearing setuid/setgid */
|
|
|
|
+ if (attr->ia_valid & (ATTR_KILL_SUID | ATTR_KILL_SGID))
|
|
|
|
+ attr->ia_valid &= ~ATTR_MODE;
|
|
|
|
+
|
|
if (attr->ia_valid & ATTR_SIZE) {
|
|
if (attr->ia_valid & ATTR_SIZE) {
|
|
if (!S_ISREG(inode->i_mode) || attr->ia_size == i_size_read(inode))
|
|
if (!S_ISREG(inode->i_mode) || attr->ia_size == i_size_read(inode))
|
|
attr->ia_valid &= ~ATTR_SIZE;
|
|
attr->ia_valid &= ~ATTR_SIZE;
|