diff options
Diffstat (limited to 'fs/nfs/inode.c')
-rw-r--r-- | fs/nfs/inode.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c index 6c22453d77ae..6d2f2a3eccf8 100644 --- a/fs/nfs/inode.c +++ b/fs/nfs/inode.c | |||
@@ -357,6 +357,10 @@ nfs_setattr(struct dentry *dentry, struct iattr *attr) | |||
357 | 357 | ||
358 | nfs_inc_stats(inode, NFSIOS_VFSSETATTR); | 358 | nfs_inc_stats(inode, NFSIOS_VFSSETATTR); |
359 | 359 | ||
360 | /* skip mode change if it's just for clearing setuid/setgid */ | ||
361 | if (attr->ia_valid & (ATTR_KILL_SUID | ATTR_KILL_SGID)) | ||
362 | attr->ia_valid &= ~ATTR_MODE; | ||
363 | |||
360 | if (attr->ia_valid & ATTR_SIZE) { | 364 | if (attr->ia_valid & ATTR_SIZE) { |
361 | if (!S_ISREG(inode->i_mode) || attr->ia_size == i_size_read(inode)) | 365 | if (!S_ISREG(inode->i_mode) || attr->ia_size == i_size_read(inode)) |
362 | attr->ia_valid &= ~ATTR_SIZE; | 366 | attr->ia_valid &= ~ATTR_SIZE; |