From: Alexey Dobriyan Date: Thu, 2 Oct 2008 20:18:52 +0000 (+0400) Subject: proc: fix return value of proc_reg_open() in "too late" case X-Git-Tag: v2.6.28-rc1~608^2~9 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=300b994b74e75120dd1a48529552a44977e0a82a;p=karo-tx-linux.git proc: fix return value of proc_reg_open() in "too late" case If ->open() wasn't called, returning 0 is misleading and, theoretically, oopsable: 1) remove_proc_entry clears ->proc_fops, drops lock, 2) ->open "succeeds", 3) ->release oopses, because it assumes ->open was called (single_release()). Signed-off-by: Alexey Dobriyan --- diff --git a/fs/proc/inode.c b/fs/proc/inode.c index 8bb03f056c28..c6b4fa7e3b49 100644 --- a/fs/proc/inode.c +++ b/fs/proc/inode.c @@ -342,7 +342,7 @@ static int proc_reg_open(struct inode *inode, struct file *file) if (!pde->proc_fops) { spin_unlock(&pde->pde_unload_lock); kfree(pdeo); - return rv; + return -EINVAL; } pde->pde_users++; open = pde->proc_fops->open;