svn commit: r209644 - head/sys/netinet

Randall Stewart rrs at FreeBSD.org
Fri Jul 2 09:53:26 UTC 2010


Author: rrs
Date: Fri Jul  2 09:53:26 2010
New Revision: 209644
URL: http://svn.freebsd.org/changeset/base/209644

Log:
  Fix a bug that WILL cause a panic.  Basically
  a read-lock is being called to check the vtag-timewait cache.
  Then in two cases (where a vtag is bad i.e. in the time-wait
  state) the write-unlock is called NOT the read-unlock. Under
  conditions where lots of associations are coming and going
  this will cause the system to panic at some point.
  
  MFC after:	3 days

Modified:
  head/sys/netinet/sctp_pcb.c

Modified: head/sys/netinet/sctp_pcb.c
==============================================================================
--- head/sys/netinet/sctp_pcb.c	Fri Jul  2 09:23:06 2010	(r209643)
+++ head/sys/netinet/sctp_pcb.c	Fri Jul  2 09:53:26 2010	(r209644)
@@ -6499,7 +6499,7 @@ sctp_is_vtag_good(struct sctp_inpcb *inp
 				continue;
 			}
 			/* Its a used tag set */
-			SCTP_INP_INFO_WUNLOCK();
+			SCTP_INP_INFO_RUNLOCK();
 			return (0);
 		}
 	}
@@ -6528,7 +6528,7 @@ skip_vtag_check:
 					    (twait_block->vtag_block[i].lport == lport) &&
 				    (twait_block->vtag_block[i].rport == rport)) {
 					/* Bad tag, sorry :< */
-					SCTP_INP_INFO_WUNLOCK();
+					SCTP_INP_INFO_RUNLOCK();
 					return (0);
 				}
 			}


More information about the svn-src-all mailing list