Module Name: src
Committed By: christos
Date: Fri Jan 13 15:17:00 UTC 2017
Modified Files:
src/sys/external/bsd/ipf/netinet: ip_frag.c
Log Message:
Don't play with the linked list while holding only a read lock!
To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/ipf/netinet/ip_frag.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/external/bsd/ipf/netinet/ip_frag.c
diff -u src/sys/external/bsd/ipf/netinet/ip_frag.c:1.3 src/sys/external/bsd/ipf/netinet/ip_frag.c:1.4
--- src/sys/external/bsd/ipf/netinet/ip_frag.c:1.3 Sun Jul 22 10:27:51 2012
+++ src/sys/external/bsd/ipf/netinet/ip_frag.c Fri Jan 13 10:17:00 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: ip_frag.c,v 1.3 2012/07/22 14:27:51 darrenr Exp $ */
+/* $NetBSD: ip_frag.c,v 1.4 2017/01/13 15:17:00 christos Exp $ */
/*
* Copyright (C) 2012 by Darren Reed.
@@ -87,7 +87,7 @@ struct file;
#if !defined(lint)
#if defined(__NetBSD__)
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ip_frag.c,v 1.3 2012/07/22 14:27:51 darrenr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ip_frag.c,v 1.4 2017/01/13 15:17:00 christos Exp $");
#else
static const char sccsid[] = "@(#)ip_frag.c 1.11 3/24/96 (C) 1993-2000 Darren Reed";
static const char rcsid[] = "@(#)Id: ip_frag.c,v 1.1.1.2 2012/07/22 13:45:17 darrenr Exp";
@@ -726,6 +726,8 @@ ipf_frag_lookup(
} else if (off == 0)
f->ipfr_seen0 = 1;
+#if 0
+ /* We can't do this, since we only have a read lock! */
if (f != table[idx]) {
ipfr_t **fp;
@@ -745,9 +747,10 @@ ipf_frag_lookup(
f->ipfr_hprev = table + idx;
table[idx] = f;
}
+#endif
/*
- * If we've follwed the fragments, and this is the
+ * If we've followed the fragments, and this is the
* last (in order), shrink expiration time.
*/
if (off == f->ipfr_off) {