http://forum.openvz.org/index.php?t=tree&goto=2914&#msg_2914 diff -ruN unionfs-20060423-1600/dirhelper.c unionfs-20060423-1600-openvz/dirhelper.c --- unionfs-20060423-1600/dirhelper.c 2006-04-23 22:00:53.000000000 +0200 +++ unionfs-20060423-1600-openvz/dirhelper.c 2006-04-26 22:26:27.502566000 +0200 @@ -65,7 +65,7 @@ err = 0; mutex_lock(&hidden_dir->i_mutex); - do_superio = permission(hidden_dir, MAY_WRITE | MAY_EXEC, NULL); + do_superio = permission(hidden_dir, MAY_WRITE | MAY_EXEC, NULL, NULL); if (do_superio) superio_store(&sio); for (i = 0; !err && i < namelist->uds_size; i++) { diff -ruN unionfs-20060423-1600/inode.c unionfs-20060423-1600-openvz/inode.c --- unionfs-20060423-1600/inode.c 2006-04-23 22:00:53.000000000 +0200 +++ unionfs-20060423-1600-openvz/inode.c 2006-04-26 22:23:54.693016000 +0200 @@ -832,15 +832,15 @@ /* Ordinary permission routines do not understand MAY_APPEND. */ submask = mask & ~MAY_APPEND; if (inode->i_op && inode->i_op->permission) { - retval = inode->i_op->permission(inode, submask, nd); + retval = inode->i_op->permission(inode, submask, nd, NULL); if ((retval == -EACCES) && (submask & MAY_WRITE) && (!strcmp("nfs", (inode)->i_sb->s_type->name)) && (nd) && (nd->mnt) && (nd->mnt->mnt_sb) && (branchperms(nd->mnt->mnt_sb, bindex) & MAY_NFSRO)) { - retval = generic_permission(inode, submask, NULL); + retval = generic_permission(inode, submask, NULL, NULL); } } else { - retval = generic_permission(inode, submask, NULL); + retval = generic_permission(inode, submask, NULL, NULL); } if (retval) return retval; @@ -849,7 +849,7 @@ } static int unionfs_permission(struct inode *inode, int mask, - struct nameidata *nd) + struct nameidata *nd, struct exec_perm *ep) { struct inode *hidden_inode = NULL; int err = 0; diff -ruN unionfs-20060423-1600/lookup.c unionfs-20060423-1600-openvz/lookup.c --- unionfs-20060423-1600/lookup.c 2006-04-23 22:00:53.000000000 +0200 +++ unionfs-20060423-1600-openvz/lookup.c 2006-04-26 22:26:59.736580500 +0200 @@ -347,7 +347,7 @@ BUG_ON(!S_ISDIR(hidden_inode->i_mode)); mutex_lock(&hidden_inode->i_mutex); - do_superio = permission(hidden_inode, MAY_EXEC, NULL); + do_superio = permission(hidden_inode, MAY_EXEC, NULL, NULL); if (do_superio) superio_store(&sio); wh_hidden_dentry = LOOKUP_ONE_LEN(UNIONFS_DIR_OPAQUE, hidden_dentry,