Messages in this thread | | | Subject | [RFC][PATCH 0/5] Task references.. | From | (Eric W. Biederman) | Date | Sun, 29 Jan 2006 00:19:56 -0700 |
| |
In the pid virtualization thread it was noticed that currently in the kernel we have a variables that hold pids of processes or process groups that we later intend to send signals to.
It was suggest that we instead use pointers to struct task_struct and reference count them to get around this problem.
The problem was that each file descriptor in the system has one of these variables in f_owner an instance of struct fown_struct it would allow user to bypass the limits on the number of processes and type of megabytes of memory with invisible zombie processes.
For kernel threads where things are tightly coordinated this is not an issue hand holding a reference to the task struct of a kernel thread seems the sane thing to do.
The other problem was that pointers to struct task_struct don't map well to process groups.
I believe the solution to these problems is to introduce a small data structure that can be reference counted and holds a pointer to a struct task_struct. The struct task_struct holds a pointer to this small data structure that will be used to remove the pointer to itself when the struct task_struct is freed.
The following series of patches implement the data structure and the routines for manipulating it. As well as implementing this data structure in two common cases in the kernel, that demonstrate it's usefulness.
Eric - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |