lkml.org 
[lkml]   [2002]   [Jan]   [11]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
DateFri, 11 Jan 2002 22:23:56 +0900
FromGo Taniguchi <>
SubjectRe: [PATCH] removed socket buffer in unix domain socket
What size of actually used hash table --unix_socket_table--?
If it is 256, probably forall_unix_sockets is dangerous.

forall_unix_sockets use 257 table size.
And If I apply this fix, test program can work.

Alan Cox wrote:

 >>                                 */
 >>-                               if(UNIXCB(skb).fp)
 >>+                               if(s->dead && UNIXCB(skb).fp)
 >>                                {
 >>
 >
 > The bug may be real but the fix would prevent garbage collection working
 > at all - which I grant would fix the problem.
 >
 > You don't need a socket to be dead to want to garbage collect it. If a
 > socket is getting disposed of while in use then there is a
 > maybe_unmark_and.. call missing, or a lock on the unix socket table missing
 > somewhere.

-- GO!
--- linux/include/net/af_unix.h.orig	Tue Apr 25 05:43:04 2000
+++ linux/include/net/af_unix.h	Fri Jan 11 21:49:57 2002
@@ -14,7 +14,7 @@
 extern atomic_t unix_tot_inflight;
 
 
-#define forall_unix_sockets(i, s) for (i=0; i<=UNIX_HASH_SIZE; i++) \
+#define forall_unix_sockets(i, s) for (i=0; i<UNIX_HASH_SIZE; i++) \
                                     for (s=unix_socket_table[i]; s; s=s->next)
 
 struct unix_address
\
 
 \ /
  Last update: 2005-03-22 12:15    [from the cache]
©2003-2008