public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* get_task_struct()
@ 2004-04-17 15:46 Fabiano Ramos
  2004-04-17 16:19 ` get_task_struct() Robert Love
  0 siblings, 1 reply; 2+ messages in thread
From: Fabiano Ramos @ 2004-04-17 15:46 UTC (permalink / raw)
  To: linux-kernel

Dear All,

Inside sys_ptrace, the function get_task_struct is invoked after
retrieving the child's task srtuct pointer. Why is it done? I have
tracked down the code and noticed that it is in fact an increment
on the (page?) counter. Can you help me understand it? 

Is it necessary to call free_task_struct whenever its get counterpart
is called?


** arch/i386/kernel/ptrace.c
>  read_lock(&tasklist_lock);
>  child = find_task_by_pid(pid);
>  if (child)
>              get_task_struct(child);
>  read_unlock(&tasklist_lock);

Thanks in advance,
Fabiano


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: get_task_struct()
  2004-04-17 15:46 get_task_struct() Fabiano Ramos
@ 2004-04-17 16:19 ` Robert Love
  0 siblings, 0 replies; 2+ messages in thread
From: Robert Love @ 2004-04-17 16:19 UTC (permalink / raw)
  To: Fabiano Ramos; +Cc: linux-kernel

On Sat, 2004-04-17 at 12:46 -0300, Fabiano Ramos wrote:

> Inside sys_ptrace, the function get_task_struct is invoked after
> retrieving the child's task srtuct pointer. Why is it done? I have
> tracked down the code and noticed that it is in fact an increment
> on the (page?) counter. Can you help me understand it? 

Think of get_task_struct(foo) as a reference count on foo's task
structure.  So long as the reference count is elevated, foo's task
structure cannot be deallocated.

get_task_struct() is called here because sys_ptrace() needs to ensure
that the child's task structure does not go away out from under this
function, but we do not want to hold the tasklist_lock.

> Is it necessary to call free_task_struct whenever its get counterpart
> is called?

Yes, although it is called "put_task_struct()".  It is called at the end
of this function.

	Robert Love



^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2004-04-17 16:19 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-04-17 15:46 get_task_struct() Fabiano Ramos
2004-04-17 16:19 ` get_task_struct() Robert Love

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox