lkml.org 
[lkml]   [2014]   [Jan]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
Subject3.10.27: BUG on accessing /proc under high load
https://bugzilla.kernel.org/show_bug.cgi?id=68991

because http://kernelnewbies.org/FoundBug says, a bug-msg should be
created in bugzilla as well as send to this list, I just follow this...

currently I don't have the time for this list, so please do a CC to me.

when doing a find /proc -type f -exec sha512sum {} \; x-hundred times
parallel, this can lead in a BUG within d_path.

as I can see in the oops and the objdump (filed at bugzilla), the
problems occurs in fs/dcache.c:d_path(), testing for existance of a
function and then calling it:

if (path->dentry->d_op && path->dentry->d_op->d_dname)
return path->dentry->d_op->d_dname(path->dentry, buf, buflen);

looking at fs/proc/base.c:proc_pid_readlink() "path" is initialized in
one of the getlink-functions within proc.c: proc_cwd_link() or
proc_root_link()

in both functions first the task-structure is get by get_roc_task() and
if 's not NULL, then locked and then the wanted fs_struct is
acquired/locked.

now I don't have enough experience, but maybe beetween getting the
task-struct and locking it, the task may be already invalidated because
it exited, so the lock should be done in get_proc_task() or at least it
should be checked after locking, if the task is still alive....???



\
 
 \ /
  Last update: 2014-01-19 19:21    [W:0.026 / U:0.348 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site