]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blobdiff - fs/xfs/xfs_ioctl.c
Merge tag 'xfs-for-linus-3.16-rc1' of git://oss.sgi.com/xfs/xfs
[mirror_ubuntu-jammy-kernel.git] / fs / xfs / xfs_ioctl.c
index 0b18776b075e44fb7f7d818183fa03dcfc7b3f4d..8bc1bbce74517c95675dc661412e946e456fedbe 100644 (file)
@@ -543,10 +543,11 @@ xfs_attrmulti_by_handle(
 
        ops = memdup_user(am_hreq.ops, size);
        if (IS_ERR(ops)) {
-               error = PTR_ERR(ops);
+               error = -PTR_ERR(ops);
                goto out_dput;
        }
 
+       error = ENOMEM;
        attr_name = kmalloc(MAXNAMELEN, GFP_KERNEL);
        if (!attr_name)
                goto out_kfree_ops;
@@ -556,7 +557,7 @@ xfs_attrmulti_by_handle(
                ops[i].am_error = strncpy_from_user((char *)attr_name,
                                ops[i].am_attrname, MAXNAMELEN);
                if (ops[i].am_error == 0 || ops[i].am_error == MAXNAMELEN)
-                       error = -ERANGE;
+                       error = ERANGE;
                if (ops[i].am_error < 0)
                        break;
 
@@ -1215,7 +1216,7 @@ xfs_ioctl_setattr(
                 * cleared upon successful return from chown()
                 */
                if ((ip->i_d.di_mode & (S_ISUID|S_ISGID)) &&
-                   !inode_capable(VFS_I(ip), CAP_FSETID))
+                   !capable_wrt_inode_uidgid(VFS_I(ip), CAP_FSETID))
                        ip->i_d.di_mode &= ~(S_ISUID|S_ISGID);
 
                /*
@@ -1227,15 +1228,8 @@ xfs_ioctl_setattr(
                                olddquot = xfs_qm_vop_chown(tp, ip,
                                                        &ip->i_pdquot, pdqp);
                        }
+                       ASSERT(ip->i_d.di_version > 1);
                        xfs_set_projid(ip, fa->fsx_projid);
-
-                       /*
-                        * We may have to rev the inode as well as
-                        * the superblock version number since projids didn't
-                        * exist before DINODE_VERSION_2 and SB_VERSION_NLINK.
-                        */
-                       if (ip->i_d.di_version == 1)
-                               xfs_bump_ino_vers2(tp, ip);
                }
 
        }