]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - fs/fuse/dir.c
always call inode_change_ok early in ->setattr
[net-next-2.6.git] / fs / fuse / dir.c
index 3cdc5f78a406357a7e4bcbffe5783facd35c7236..43a9b3730a980ccc0b2681ea9379a45648cfd17e 100644 (file)
@@ -1270,11 +1270,12 @@ static int fuse_do_setattr(struct dentry *entry, struct iattr *attr,
        if (!fuse_allow_task(fc, current))
                return -EACCES;
 
-       if (fc->flags & FUSE_DEFAULT_PERMISSIONS) {
-               err = inode_change_ok(inode, attr);
-               if (err)
-                       return err;
-       }
+       if (!(fc->flags & FUSE_DEFAULT_PERMISSIONS))
+               attr->ia_valid |= ATTR_FORCE;
+
+       err = inode_change_ok(inode, attr);
+       if (err)
+               return err;
 
        if ((attr->ia_valid & ATTR_OPEN) && fc->atomic_o_trunc)
                return 0;