From: Miklos Szeredi This patch fixes bug titled "sunrpc as module and bad proc/sys link count" reported by Jiri Slaby. The problem was, that only proc_dir_entry->nlink was updated and the corresponding inode->i_nlink was not. The fix is to implement the inode->getattr() method, and update i_nlink (if necessary). A quick audit of proc code shows that no other attribute changes after creation. Signed-off-by: Miklos Szeredi Signed-off-by: Andrew Morton --- fs/proc/generic.c | 13 +++++++++++++ 1 files changed, 13 insertions(+) diff -puN fs/proc/generic.c~proc-link-count-fix fs/proc/generic.c --- devel/fs/proc/generic.c~proc-link-count-fix 2005-08-06 15:02:00.000000000 -0700 +++ devel-akpm/fs/proc/generic.c 2005-08-06 15:02:00.000000000 -0700 @@ -249,6 +249,18 @@ out: return error; } +static int proc_getattr(struct vfsmount *mnt, struct dentry *dentry, + struct kstat *stat) +{ + struct inode *inode = dentry->d_inode; + struct proc_dir_entry *de = PROC_I(inode)->pde; + if (de && de->nlink) + inode->i_nlink = de->nlink; + + generic_fillattr(inode, stat); + return 0; +} + static struct inode_operations proc_file_inode_operations = { .setattr = proc_notify_change, }; @@ -475,6 +487,7 @@ static struct file_operations proc_dir_o */ static struct inode_operations proc_dir_inode_operations = { .lookup = proc_lookup, + .getattr = proc_getattr, .setattr = proc_notify_change, }; _