--- linux-2.6.8-rc2-vs1.9.2.11/fs/nfsd/auth.c 2004-07-28 20:27:01.000000000 +0200 +++ linux-2.6.8-rc2-vs1.9.2.15/fs/nfsd/auth.c 2004-08-01 03:57:20.000000000 +0200 @@ -56,7 +56,7 @@ int nfsd_setuser(struct svc_rqst *rqstp, if (!cred->cr_group_info) return -ENOMEM; ret = set_current_groups(cred->cr_group_info); - if ((cred->cr_uid)) { + if (INOXID_UID(NULL, cred->cr_uid, cred->cr_gid)) { cap_t(current->cap_effective) &= ~CAP_NFSD_MASK; } else { cap_t(current->cap_effective) |= (CAP_NFSD_MASK & diff -NurpP --minimal linux-2.6.8-rc2-vs1.9.2.11/fs/inode.c linux-2.6.8-rc2-vs1.9.2.15/fs/inode.c --- linux-2.6.8-rc2-vs1.9.2.11/fs/inode.c 2004-07-20 11:16:18.000000000 +0200 +++ linux-2.6.8-rc2-vs1.9.2.15/fs/inode.c 2004-07-30 03:06:48.000000000 +0200 @@ -117,6 +117,9 @@ static struct inode *alloc_inode(struct inode->i_sb = sb; // inode->i_dqh = dqhget(sb->s_dqh); + + /* important because of inode slab reuse */ + inode->i_xid = 0; inode->i_blkbits = sb->s_blocksize_bits; inode->i_flags = 0; atomic_set(&inode->i_count, 1);