Messages in this thread Patch in this message | | | From | Xiaotian Feng <> | Subject | [PATCH] proc: fix null pointer deref in proc_pid_permission() | Date | Wed, 11 Jan 2012 13:47:05 -0500 |
| |
get_proc_task() can fail to search the task and return NULL, put_task_struct() will then bomb the kernel with following oops:
[ 1870.574045] BUG: unable to handle kernel NULL pointer dereference at 0000000000000010 [ 1870.574065] IP: [<ffffffff81217d34>] proc_pid_permission+0x64/0xe0 [ 1870.574088] PGD 112075067 PUD 112814067 PMD 0 [ 1870.574106] Oops: 0002 [#1] PREEMPT SMP
This is a regression introduced by commit 0499680a, kernel should return -ESRCH if get_proc_task() failed.
Signed-off-by: Xiaotian Feng <dannyfeng@tencent.com> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Vasiliy Kulikov <segoon@openwall.com> Cc: Stephen Wilson <wilsons@start.ca> Cc: David Rientjes <rientjes@google.com> --- fs/proc/base.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/fs/proc/base.c b/fs/proc/base.c index 8173dfd..5485a53 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c @@ -654,6 +654,8 @@ static int proc_pid_permission(struct inode *inode, int mask) bool has_perms; task = get_proc_task(inode); + if (!task) + return -ESRCH; has_perms = has_pid_permissions(pid, task, 1); put_task_struct(task); -- 1.7.5.4
| |