Re: valid task structure and wake_up_process

From: Shirish Pargaonkar
Date: Mon Apr 14 2008 - 16:01:55 EST


On 4/14/08, Arjan van de Ven <arjan@xxxxxxxxxxxxx> wrote:
> On Mon, 14 Apr 2008 13:36:42 -0500
> "Shirish Pargaonkar" <shirishpargaonkar@xxxxxxxxx> wrote:
>
> > How do I check whether a task is valid before calling
> > wake_up_process() with that task structure pointer?
>
> Hi,
>
> how did you get the pointer you got?
>
> That part (the guy who gave you the pointer) should have taken a reference on the task basically,
> or otherwise locked against the task going away.
>
> In giving you advice it would help tremendously if you actually posted your code...
>
>
>
>
>
> --
> If you want to reach me at my work email, use arjan@xxxxxxxxxxxxxxx
> For development, discussion and tips for power savings,
> visit http://www.lesswatts.org
>

Thanks.

This is cifs code fs/cifs.

In cifs_demultiplex_thread, in fs/cifs/connect.c, it calls wake_up_process in
a thread cifsd.

The task struct ptr is stored in mid as current when sending a request. So this
could a command such as ls or some other application.
A request was sent but a reply was not received or reply was processed late
before the process went away and we have a probably freed task structure
being treated as valid in cifs_demultiplex_thread.

So I thought of checking validity of task structure before calling
wake_up_process.

Regards,

Shirish
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/