lkml.org 
[lkml]   [1998]   [Mar]   [2]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
/
From"A.N.Kuznetsov" <>
SubjectRe: Fix for thread+network crashes in 2.0/2.1?
DateMon, 2 Mar 1998 17:26:56 +0300 (MSK)
Hello!

>      > Before "struct socket" is destoyed all the references from
>      > transport records (struct sock) are invalidated. If x25 does
>      > not make it, it is bug in x25.
> 
> But if a task had sleeped on *sk->sleep before, than socket is destroyd and then it is waked up, is there a second reference now?
>      > Just set sk->dead=1, and that's all. Is it simple?
> 
> This seems to be done in x.25. But still crashes -:( last checked 2.1.89-5 ).
> Aparrently, the intetention was: if sk->dead is 1, then wake_up's by means of
> the *sk->sleep == sock->wait wait are supressed. But what happens if the
> task is awoken up by means of another wait queue (likely to occur in select,
> as this is made for waiting waiting on multiple different fd's).

Protocols do not sleep (with one exception - netlink) on socket owned
by another process, so that get_fd()...put_fd() protection is enough.
When it is the case playing with i_count DOES take a sense,
but it should be played only in normal kernel mode (not from timer).
The only known (to me :-)) example is netlink and, maybe, future af_unix
datagram socket. Seems, no transports except for local ones need it. 

Alexey Kuznetsov

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu

\
 
 \ /
  Last update: 2005-03-22 12:41    [from the cache]
©2003-2008