Commit 11aec25f authored by Alexander Viro's avatar Alexander Viro Committed by Linus Torvalds

[PATCH] proc_pid_make_inode() fix

	In case if proc_pid_make_inode() steps on exiting task we do
iput() and return NULL.  Unfortunately, in that case inode->i_ino
doesn't look like inumber of a per-process inode and we take the
wrong path in proc_delete_inode().  I.e. do dput(PDE(inode)).  Which
is left uninitialized...

	We used to get out with that almost by accident - that code
worked only because we had zeroed out one field of union and that
guaranteed that another field would be NULL.  It worked, but broke
at the first occasion.
parent 063b009f
...@@ -730,6 +730,7 @@ static struct inode *proc_pid_make_inode(struct super_block * sb, struct task_st ...@@ -730,6 +730,7 @@ static struct inode *proc_pid_make_inode(struct super_block * sb, struct task_st
return inode; return inode;
out_unlock: out_unlock:
ei->pde = NULL;
iput(inode); iput(inode);
return NULL; return NULL;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment