diff -NurpP linux-2.6.22.6-vs2.3.0.22/fs/namei.c linux-2.6.22.6-vs2.3.0.22.1/fs/namei.c --- linux-2.6.22.6-vs2.3.0.22/fs/namei.c 2007-09-18 14:20:09 +0200 +++ linux-2.6.22.6-vs2.3.0.22.1/fs/namei.c 2007-09-19 05:48:00 +0200 @@ -2854,12 +2854,21 @@ retry: if (ret < 0) { res = ERR_PTR(ret); goto out_fput_both; - } - else if (ret < size) { + } else if (ret < size) { res = ERR_PTR(-ENOSPC); goto out_fput_both; + } else { + struct inode *old_inode = old_dentry->d_inode; + struct inode *new_inode = new_dentry->d_inode; + struct iattr attr = { + .ia_uid = old_inode->i_uid, + .ia_gid = old_inode->i_gid, + .ia_valid = ATTR_UID | ATTR_GID + }; + + inode_setattr(new_inode, &attr); } - + ret = vfs_rename(dir_nd.dentry->d_inode, new_dentry, old_nd.dentry->d_parent->d_inode, old_dentry); vxdprintk(VXD_CBIT(misc, 2), "vfs_rename: %d", ret);