Re: SMP races in proc with thread_struct

From: Brian Gerst (bgerst@didntduck.org)
Date: Fri May 04 2001 - 08:38:52 EST


Andreas Schwab wrote:
>
> Keith Owens <kaos@ocs.com.au> writes:
>
> |> On Fri, 04 May 2001 07:34:20 -0500,
> |> Todd Inglett <tinglett@vnet.ibm.com> wrote:
> |> >But this is where hell breaks loose. Every process has a valid parent
> |> >-- unless it is dead and nobody cares. Process N has already exited and
> |> >released from the tasklist while its parent was still alive. There was
> |> >no reason to reparent it. It just got released. So N's task_struct has
> |> >a dangling ptr to its parent. Nobody is holding the parent task_struct,
> |> >either. When the parent died memory for its task_struct was released.
> |> >This is ungood.
> |>
> |> Wrap the reference to the parent task structure with exception table
> |> recovery code, like copy_from_user().
>
> Exception tables only protect accesses to user virtual memory. Kernel
> memory references must always be valid in the first place.
>
> Andreas.

The virtual address being accessed is irrelevant. It's the address of
the faulting instruction that determines what the kernel will do if it
can't deal with a page fault. If the access was made from kernel mode
the exception handler (if there is one) always gets invoked, otherwise
it oopses.

--

Brian Gerst - 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/



This archive was generated by hypermail 2b29 : Mon May 07 2001 - 21:00:20 EST