2005-01-07 15:51:08

by Chris Friesen

[permalink] [raw]
Subject: where to put kernel code to run on exec?


I've added a field to the task struct to keep track of whether or not
the process wants to be notified of various events. On exec() I'd like
to clear this field.

I'm having problems finding a nice clean place to put the code to clear
it. The obvious choice would be in the last bit of the success path in
do_execve(), but there's nothing similar there already, so I'm probably
missing something.

Is there some standard place to put code to run on a successful call to
exec()?

Chris

Chris


2005-01-08 01:56:24

by David Meybohm

[permalink] [raw]
Subject: Re: where to put kernel code to run on exec?

On Fri, Jan 07, 2005 at 09:50:58AM -0600, Chris Friesen wrote:
>
> I've added a field to the task struct to keep track of whether or not
> the process wants to be notified of various events. On exec() I'd like
> to clear this field.
>
> I'm having problems finding a nice clean place to put the code to clear
> it. The obvious choice would be in the last bit of the success path in
> do_execve(), but there's nothing similar there already, so I'm probably
> missing something.
>
> Is there some standard place to put code to run on a successful call to
> exec()?

What about in flush_old_exec()? Any place after exec_mmap() looks good.
If the exec fails after that point, the process has to be killed,
because all the old memory space is gone. In that case you don't have
to worry about clearing the field because the process is gone.

Dave