Messages in this thread | | | From | kuznet@ms2 ... | Subject | Re: [patch] AF_UNIX: notify peer on close | Date | Sat, 4 Mar 2000 20:40:56 +0300 (MSK) |
| |
Hello!
> May be sock_orphan(sk) must be after > wake_up_interruptible_all(&sk->protinfo.af_unix.peer_wait); ?
No, it is not related to orphaned state, it wakes peers sleeping on us.
> --- linux/net/unix/af_unix.c.orig Sat Mar 4 10:08:02 2000 > +++ linux/net/unix/af_unix.c Sat Mar 4 18:53:41 2000 > @@ -356,8 +356,10 @@ > if (!skb_queue_empty(&sk->receive_queue) || embrion) > skpair->err = ECONNRESET; > unix_state_wunlock(skpair); > - sk->state_change(skpair); > - sock_wake_async(sk->socket,1,POLL_HUP); > + skpair->state_change(skpair); > + read_lock(&skpair->callback_lock); > + sock_wake_async(skpair->socket,0,POLL_HUP); > + read_lock(&skpair->callback_lock); > } > sock_put(skpair); /* It may now die */ > unix_peer(sk) = NULL;
I apologize, mipsrint, the second read_lock is read_unlock really.
> I think, nobody uses si_band. si_code is enough (POLL_xxx).
Grrr... What a crap, to be honest. Are these fields described in any standard? si_code is evident redundancy. Moreover, it is not only redundancy, it is deoptimization not allowing to merge events, when they can be merged by oring event masks.
Alexey
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |