Re: + proc-dont-lock-task_structs-indefinitely-cpuset-fix-2.patch added to -mm tree

Paul Jackson
2006-03-01T02:18:56Z

Andrew - the following should address your concerns in patch:

proc-dont-lock-task_structs-indefinitely-cpuset-fix.patch

where you had to include "../fs/proc/internal.h" in kernel/cpuset.c

Eric wrote (off list in a patch to Andrew, apparently):
> I just refactored fs/proc/base.c to use task_refs to ensure there are not
> long user triggerable hold times of task_struct. It looks like I missed
> cpuset.c. Oops.
>
> This patch updates proc_cpuset_show to handle the task dying between when
> the file is opened and when data is read out.

Thanks for catching this, Eric.

I was just about to send a patch that moved the cpuset_open(),
cpuset_release() and proc_cpuset_operations{} code from kernel
cpuset.c to fs/proc/base.c, leaving behind a now publically
exported proc_cpuset_show() routine that handles the cpuset
specific details.

For lurkers, this is the code that prints a tasks cpuset path
in the file /proc/<pid>/cpuset. That code had some proc file
specific details buried in its kernel/cpuset.c implementation,
and Eric is changing those proc details. Proc stuff should go
in proc/fs and cpuset stuff in kernel/cpuset.c

I will remerge with your fixes to handle possibly null task_refs
correctly and try again to send my above patch.

However, I have some debugging to do on this kernel first.

It blows up on boot (ia64 sn2_defconfig).

I haven't started to analyze it any yet. I don't know if it's a bug
or pilot error yet.

--
I won't rest till it's the best ...
Programmer, Linux Scalability
Paul Jackson <pj@sgi.com> 1.925.600.0401