patch-2.4.18 linux/net/unix/garbage.c
Next file: linux/scripts/mkspec
Previous file: linux/net/unix/af_unix.c
Back to the patch index
Back to the overall index
- Lines: 35
- Date:
Wed Jan 23 20:24:26 2002
- Orig file:
linux.orig/net/unix/garbage.c
- Orig date:
Mon Feb 18 20:18:40 2002
diff -Naur -X /home/marcelo/lib/dontdiff linux.orig/net/unix/garbage.c linux/net/unix/garbage.c
@@ -76,9 +76,9 @@
#include <linux/netdevice.h>
#include <linux/file.h>
#include <linux/proc_fs.h>
+#include <linux/tcp.h>
#include <net/sock.h>
-#include <net/tcp.h>
#include <net/af_unix.h>
#include <net/scm.h>
@@ -205,12 +205,21 @@
forall_unix_sockets(i, s)
{
+ int open_count = 0;
+
/*
* If all instances of the descriptor are not
* in flight we are in use.
+ *
+ * Special case: when socket s is embrion, it may be
+ * hashed but still not in queue of listening socket.
+ * In this case (see unix_create1()) we set artificial
+ * negative inflight counter to close race window.
+ * It is trick of course and dirty one.
*/
- if(s->socket && s->socket->file &&
- file_count(s->socket->file) > atomic_read(&s->protinfo.af_unix.inflight))
+ if(s->socket && s->socket->file)
+ open_count = file_count(s->socket->file);
+ if (open_count > atomic_read(&s->protinfo.af_unix.inflight))
maybe_unmark_and_push(s);
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)