--- aufs/fs/aufs25/vfsub.h~ 2008-05-26 23:48:46.000000000 +0200 +++ aufs/fs/aufs25/vfsub.h 2008-05-26 23:51:50.260679424 +0200 @@ -181,7 +181,7 @@ } #endif -#ifdef CONFIG_AUFS_BR_XFS +#ifndef CONFIG_AUFS_BR_XFS /* br_xfs.c */ dev_t au_h_rdev(struct inode *h_inode, struct vfsmount *h_mnt, struct dentry *h_dentry); --- aufs/fs/aufs25/xino.c~ 2009-01-26 07:24:24.000000000 +0100 +++ aufs/fs/aufs25/xino.c 2009-07-22 18:12:16.356983962 +0200 @@ -621,7 +621,11 @@ goto out_dput; } file = dentry_open(dget(dentry), mntget(base_file->f_vfsmnt), - O_RDWR | O_CREAT | O_EXCL | O_LARGEFILE); + O_RDWR | O_CREAT | O_EXCL | O_LARGEFILE +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29) + , current_cred() +#endif + ); if (IS_ERR(file)) { AuErr("%.*s open err %ld\n", AuLNPair(name), PTR_ERR(file)); goto out_dput; --- aufs/fs/aufs25/whout.c~ 2009-01-26 07:24:19.000000000 +0100 +++ aufs/fs/aufs25/whout.c 2009-07-24 12:13:57.149063895 +0200 @@ -276,7 +276,13 @@ */ vfsub_args_init(&vargs, &ign, dlgt, (h_dir->i_mode & S_ISVTX) - && wh_dentry->d_inode->i_uid != current->fsuid); + && wh_dentry->d_inode->i_uid != +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29) + current_fsuid() +#else + current->fsuid +#endif + ); vfsub_ign_hinode(&vargs, IN_DELETE, hdir); err = vfsub_unlink(h_dir, wh_dentry, &vargs); AuTraceErr(err); @@ -625,7 +631,13 @@ struct vfsub_args vargs; AuTraceEnter(); - AuDebugOn(current->fsuid); + AuDebugOn( +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29) + current_fsuid() +#else + current->fsuid +#endif + ); err = 0; wbr = a->br->br_wbr; --- aufs/fs/aufs25/file.c~ 2009-01-26 07:24:29.000000000 +0100 +++ aufs/fs/aufs25/file.c 2009-07-24 12:16:59.015712355 +0200 @@ -99,7 +99,11 @@ if (file && au_test_nfs(h_dentry->d_sb)) h_file = au_h_intent(dentry, bindex, file); if (!h_file) - h_file = dentry_open(dget(h_dentry), mntget(br->br_mnt), flags); + h_file = dentry_open(dget(h_dentry), mntget(br->br_mnt), flags +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29) + ,current_cred() +#endif + ); /* * a dirty trick for handling FMODE_EXEC and deny_write_access(). --- aufs/fs/aufs25/inode.c~ 2009-01-26 07:24:45.000000000 +0100 +++ aufs/fs/aufs25/inode.c 2009-07-24 12:19:05.229033182 +0200 @@ -405,7 +405,13 @@ int au_test_h_perm(struct inode *h_inode, int mask, int dlgt) { - if (!current->fsuid) + if (! +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29) + current_fsuid() +#else + current->fsuid +#endif + ) return 0; /* todo: fake nameidata? */ return vfsub_permission(h_inode, mask, NULL, dlgt);