Messages in this thread | | | Date | Wed, 22 Jun 2011 10:54:06 +0400 | From | Vasiliy Kulikov <> | Subject | Re: [PATCH v2] taskstats: don't allow duplicate entries in listener mode |
| |
On Tue, Jun 21, 2011 at 15:49 -0700, Andrew Morton wrote: > On Thu, 16 Jun 2011 19:55:59 +0400 > Vasiliy Kulikov <segoon@openwall.com> wrote: > > > Currently a single process may register exit handlers unlimited times. > > It may lead to a bloated listeners chain and very slow process terminations. > > E.g. after 10KK sent TASKSTATS_CMD_ATTR_REGISTER_CPUMASKs ~300 Mb of > > kernel memory is stolen for the handlers chain and "time id" shows 2-7 > > seconds instead of normal 0.003. It makes it possible to exhaust all > > kernel memory and to eat much of CPU time by triggerring numerous exits > > on a single CPU. > > > > The patch limits the number of times a single process may register > > itself on a single CPU to one. > > > > One little issue is kept unfixed - as taskstats_exit() is called before > > exit_files() in do_exit(), the orphaned listener entry (if it was not > > explicitly deregistered) is kept until the next someone's exit() and > > implicit deregistration in send_cpu_listeners(). So, if a process > > registered itself as a listener exits and the next spawned process gets > > the same pid, it would inherit taskstats attributes. > > ow. That's an unprivileged operation, isn't it?
Yes.
Thanks,
-- Vasiliy Kulikov http://www.openwall.com - bringing security into open computing environments
| |