mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-13 14:24:11 +08:00
[PATCH] proc: link count fix
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 <miklos@szeredi.hu> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
230649da7c
commit
2b579beec2
@ -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_operations = {
|
||||
*/
|
||||
static struct inode_operations proc_dir_inode_operations = {
|
||||
.lookup = proc_lookup,
|
||||
.getattr = proc_getattr,
|
||||
.setattr = proc_notify_change,
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user