diff -urN linux-2.2.1/fs/proc/inode.c linux-caps/fs/proc/inode.c --- linux-2.2.1/fs/proc/inode.c Fri May 8 18:10:30 1998 +++ linux-caps/fs/proc/inode.c Sun Jan 31 00:02:05 1999 @@ -267,10 +267,19 @@ inode->u.generic_ip = (void *) de; if (de) { - if (de->mode) { + if (de->mode) { /* why conditional on non-zero mode? */ + struct inode *sbi; + inode->i_mode = de->mode; - inode->i_uid = de->uid; - inode->i_gid = de->gid; + + if ((ino != PROC_ROOT_INO) + && (sbi = sb->s_root->d_inode)) { + inode->i_uid = sbi->i_uid; + inode->i_gid = sbi->i_gid; + } else { + inode->i_uid = de->uid; + inode->i_gid = de->gid; + } } if (de->size) inode->i_size = de->size;