lkml.org 
[lkml]   [2020]   [Dec]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] fs/proc: Fix NULL pointer dereference in pid_delete_dentry
    On Wed, Dec 09, 2020 at 07:21:00PM +0800, Yahu Gao wrote:
    > Get the staus of task from the pointer of proc inode directly is not
    > safe. The function get_proc_task make it happen in RCU protection.

    This is completely broken, get_proc_task() acquires a reference to
    task_struct; your patch is an instant leak.

    > Signed-off-by: Yahu Gao <yahu.gao@windriver.com>
    > ---
    > fs/proc/base.c | 2 +-
    > 1 file changed, 1 insertion(+), 1 deletion(-)
    >
    > diff --git a/fs/proc/base.c b/fs/proc/base.c
    > index 1bc9bcdef09f..05f33bb35067 100644
    > --- a/fs/proc/base.c
    > +++ b/fs/proc/base.c
    > @@ -1994,7 +1994,7 @@ static int pid_revalidate(struct dentry *dentry, unsigned int flags)
    >
    > static inline bool proc_inode_is_dead(struct inode *inode)
    > {
    > - return !proc_pid(inode)->tasks[PIDTYPE_PID].first;
    > + return !get_proc_task(inode);
    > }
    >
    > int pid_delete_dentry(const struct dentry *dentry)
    > --
    > 2.25.1
    >

    \
     
     \ /
      Last update: 2020-12-09 14:18    [W:5.461 / U:0.048 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site