diff -NurpP --minimal linux-2.6.7-vs1.9.2-rc6.3/fs/ext2/ialloc.c linux-2.6.7-vs1.9.2-rc6.4/fs/ext2/ialloc.c --- linux-2.6.7-vs1.9.2-rc6.3/fs/ext2/ialloc.c 2004-07-25 21:06:35.000000000 +0200 +++ linux-2.6.7-vs1.9.2-rc6.4/fs/ext2/ialloc.c 2004-07-25 23:08:06.000000000 +0200 @@ -469,8 +469,11 @@ struct inode *ext2_new_inode(struct inod if (!inode) return ERR_PTR(-ENOMEM); - if (sb->s_flags & MS_TAGXID) + if (sb->s_flags & MS_TAGXID) inode->i_xid = current->xid; + else + inode->i_xid = 0; + if (DLIMIT_ALLOC_INODE(sb, inode->i_xid)) { err = -ENOSPC; goto fail_dlim; diff -NurpP --minimal linux-2.6.7-vs1.9.2-rc6.3/fs/ext3/inode.c linux-2.6.7-vs1.9.2-rc6.4/fs/ext3/inode.c --- linux-2.6.7-vs1.9.2-rc6.3/fs/ext3/inode.c 2004-07-25 21:06:35.000000000 +0200 +++ linux-2.6.7-vs1.9.2-rc6.4/fs/ext3/inode.c 2004-07-25 23:23:03.000000000 +0200 @@ -2511,6 +2511,8 @@ void ext3_read_inode(struct inode * inod inode->i_gid = INOXID_GID(uid, gid); if (inode->i_sb->s_flags & MS_TAGXID) inode->i_xid = INOXID_XID(uid, gid, le16_to_cpu(raw_inode->i_raw_xid)); + else + inode->i_xid = 0; inode->i_nlink = le16_to_cpu(raw_inode->i_links_count); inode->i_size = le32_to_cpu(raw_inode->i_size); @@ -2865,7 +2867,9 @@ int ext3_setattr(struct dentry *dentry, inode->i_uid = attr->ia_uid; if (attr->ia_valid & ATTR_GID) inode->i_gid = attr->ia_gid; - if (attr->ia_valid & ATTR_XID) + if ((attr->ia_valid & ATTR_XID) + && inode->i_sb + && (inode->i_sb->s_flags & MS_TAGXID)) inode->i_xid = attr->ia_xid; error = ext3_mark_inode_dirty(handle, inode); ext3_journal_stop(handle); diff -NurpP --minimal linux-2.6.7-vs1.9.2-rc6.3/fs/namei.c linux-2.6.7-vs1.9.2-rc6.4/fs/namei.c --- linux-2.6.7-vs1.9.2-rc6.3/fs/namei.c 2004-07-25 21:06:35.000000000 +0200 +++ linux-2.6.7-vs1.9.2-rc6.4/fs/namei.c 2004-07-25 23:16:27.000000000 +0200 @@ -216,6 +216,8 @@ static inline int xid_permission(struct return 0; if (vx_check(inode->i_xid, VX_ADMIN|VX_WATCH|VX_IDENT)) return 0; + printk("VSW: xid=%d denied access to %p[#%d].\n", + vx_current_xid(), inode, inode->i_xid); return -EACCES; } diff -NurpP --minimal linux-2.6.7-vs1.9.2-rc6.3/kernel/fork.c linux-2.6.7-vs1.9.2-rc6.4/kernel/fork.c --- linux-2.6.7-vs1.9.2-rc6.3/kernel/fork.c 2004-07-25 21:19:02.000000000 +0200 +++ linux-2.6.7-vs1.9.2-rc6.4/kernel/fork.c 2004-07-25 23:30:30.000000000 +0200 @@ -1129,9 +1129,8 @@ struct task_struct *copy_process(unsigne vxi = p->vx_info; if (vxi) { atomic_inc(&vxi->cacct.nr_threads); - // atomic_inc(&vxi->limit.rcur[RLIMIT_NPROC]); + atomic_inc(&vxi->limit.rcur[RLIMIT_NPROC]); } - vx_nproc_inc(p); write_unlock_irq(&tasklist_lock); retval = 0;